AnoPlib - Animlets are not Particles library
 All Data Structures Namespaces Files Functions Variables
AnoPflashlight1.h
Go to the documentation of this file.
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