00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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 }