AnoPlib - Animlets are not Particles library
|
00001 /* ************************************************************************* 00002 @file AnoPflashlight1.h 00003 @project AnoPlib 00004 @module AnoPflashlight1 00005 @brief A flashing signal 00006 @date 23.11.2010 00007 @copyright Daniel Krajzewicz 00008 @licence GPL 00009 @author Daniel Krajzewicz 00010 @email d.krajzewicz@googlemail.com 00011 ------------------------------------------------------------------ 00012 AnoPlib - small "animlet" library, see http://sf.net/projects/anoplib 00013 Copyright (C) 2009-2010 Daniel Krajzewicz 00014 00015 This program is free software: you can redistribute it and/or modify 00016 it under the terms of the GNU General Public License as published by 00017 the Free Software Foundation, either version 3 of the License, or 00018 (at your option) any later version. 00019 00020 This program is distributed in the hope that it will be useful, 00021 but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 GNU General Public License for more details. 00024 00025 You should have received a copy of the GNU General Public License 00026 along with this program. If not, see <http://www.gnu.org/licenses/>. 00027 ------------------------------------------------------------------ 00028 Remarks: 00029 ------------------------------------------------------------------ 00030 ToDo: 00031 * *********************************************************************** */ 00032 #ifndef ANOP_FLASHLIGHT1 00033 #define ANOP_FLASHLIGHT1 00034 00035 00036 /* ========================================================================= 00037 * included modules 00038 * ======================================================================= */ 00039 #include <AnoP.h> 00040 #include <AnoPhelpers.h> 00041 #include <GL/gl.h> 00042 00043 00044 /* ========================================================================= 00045 * class and struct definitions 00046 * ======================================================================= */ 00047 // @brief The animlet definition structure 00048 struct flashSignal1Struct { 00050 double pos[2]; 00052 int step; 00053 }; 00054 00055 00059 class AnoPflashlight1 : public AnoP::AnoPsystem<flashSignal1Struct> { 00060 public: 00064 AnoPflashlight1(unsigned int bufSize=10) : AnoP::AnoPsystem<flashSignal1Struct>(bufSize) { 00065 white[0] = 1; 00066 white[1] = 1; 00067 white[2] = 1; 00068 white[3] = 1; 00069 redbright[0] = 1; 00070 redbright[1] = 0; 00071 redbright[2] = 0; 00072 redbright[3] = 1; 00073 reddark[0] = .1; 00074 reddark[1] = .0; 00075 reddark[2] = .0; 00076 reddark[3] = .1; 00077 } 00078 00079 00082 void preRender() throw() { 00083 glMatrixMode(GL_PROJECTION); 00084 glLoadIdentity(); 00085 glMatrixMode(GL_MODELVIEW); 00086 glLoadIdentity(); 00087 glTranslated(-1,-1,0); 00088 glScaled(1./200, 1./200, 1.); 00089 glEnable (GL_BLEND); 00090 glBlendFunc(GL_ONE, GL_ONE); 00091 glDepthMask(GL_FALSE); 00092 } 00093 00094 00100 bool render(flashSignal1Struct &s, unsigned int timeDiff, void * const something) throw() { 00101 s.step += 5; 00102 if(s.step>=360) { 00103 s.step = 0; 00104 } 00105 glPushMatrix(); 00106 glTranslated(s.pos[0], s.pos[1], 0); 00107 double scale = AnoPhelpers::sintab[s.step] / 256. / 100. + .03; 00108 glScaled(scale, scale, 1); 00109 //glScaled(.05, .05, 05); 00110 AnoPhelpers::drawOutlineCircle2(.5, 0, 36, 0, 360, white, reddark); 00111 AnoPhelpers::drawOutlineCircle2(1., 0, 36, 0, 360, redbright, reddark); 00112 glPopMatrix(); 00113 return true; 00114 } 00115 00117 float white[4], redbright[4], reddark[4]; 00118 }; 00119 00120 #endif 00121