GLWFlag.cpp

Go to the documentation of this file.
00001 ////////////////////////////////////////////////////////////////////////////////
00002 //    Scorched3D (c) 2000-2009
00003 //
00004 //    This file is part of Scorched3D.
00005 //
00006 //    Scorched3D is free software; you can redistribute it and/or modify
00007 //    it under the terms of the GNU General Public License as published by
00008 //    the Free Software Foundation; either version 2 of the License, or
00009 //    (at your option) any later version.
00010 //
00011 //    Scorched3D is distributed in the hope that it will be useful,
00012 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 //    GNU General Public License for more details.
00015 //
00016 //    You should have received a copy of the GNU General Public License
00017 //    along with Scorched3D; if not, write to the Free Software
00018 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 ////////////////////////////////////////////////////////////////////////////////
00020 
00021 #include <math.h>
00022 #include <GLEXT/GLState.h>
00023 #include <GLW/GLWFlag.h>
00024 
00025 REGISTER_CLASS_SOURCE(GLWFlag);
00026 
00027 GLWFlag::GLWFlag(Vector &color, float x, float y, float w) : 
00028         color_(color), GLWidget(x, y, w, 20.0f), offset_(0.0f)
00029 {
00030 
00031 }
00032 
00033 GLWFlag::~GLWFlag()
00034 {
00035 
00036 }
00037 
00038 void GLWFlag::simulate(float frameTime)
00039 {
00040         offset_ -= 10.0f * frameTime;
00041 }
00042 
00043 void GLWFlag::draw()
00044 {
00045         GLState currentState(GLState::TEXTURE_OFF);
00046 
00047         const float diff = 1.0f;
00048         const float rad = (3.14f * 4.0f) / w_;
00049 
00050         glBegin(GL_QUADS);
00051                 for (float a=0.0f; a<=w_-diff; a+=diff)
00052                 {
00053                         float mult = float (sin((a * rad) + offset_));
00054                         float cmult = (mult * 0.25f) + 0.75f;
00055                         float hmult = mult * 2.0f;
00056 
00057                         glColor3f(color_[0] * cmult, color_[1] * cmult, color_[2] * cmult);
00058                         glVertex2f(x_ + a, y_  + hmult);
00059                         glVertex2f(x_ + a + diff, y_ + hmult);
00060                         glVertex2f(x_ + a + diff, y_ + h_ + hmult);
00061                         glVertex2f(x_ + a, y_ + h_ + hmult);
00062                 }
00063         glEnd();
00064 }

Generated on Mon Feb 16 15:14:45 2009 for Scorched3D by  doxygen 1.5.3