00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #if !defined(AFX_GLLENSEFLARE_H__34C2D198_3739_4402_B9FD_BEE4DF738466__INCLUDED_)
00027 #define AFX_GLLENSEFLARE_H__34C2D198_3739_4402_B9FD_BEE4DF738466__INCLUDED_
00028
00029 #include <common/Vector.h>
00030 #include <common/ProgressCounter.h>
00031 #include <GLEXT/GLTexture.h>
00032
00033 class GLLenseFlare
00034 {
00035 public:
00036 static GLLenseFlare *instance();
00037 void init(ProgressCounter *counter = 0);
00038
00039 void draw(Vector &flarePos, bool fullFlare,
00040 int color=0, float size = 1.0f, float alpha = 1.0f);
00041 void draw(Vector &flarePos, Vector &flareDirection, int color=0);
00042
00043 protected:
00044 struct Flare
00045 {
00046 int type;
00047 float scale;
00048 float loc;
00049 Vector color1;
00050 Vector color2;
00051 Vector color3;
00052 Vector color4;
00053 } flare_[12];
00054
00055 static bool flaresEnabled_;
00056 static GLLenseFlare *instance_;
00057 GLTexture flares_[6];
00058 GLTexture shines_[10];
00059 int shineTic_;
00060
00061 void setFlare(int index, int type, float scale, float loc,
00062 Vector &color1, Vector &color2, Vector &color3, Vector &color4, float colorScale);
00063
00064 private:
00065 GLLenseFlare();
00066 virtual ~GLLenseFlare();
00067 };
00068
00069 #endif // !defined(AFX_GLLENSEFLARE_H__34C2D198_3739_4402_B9FD_BEE4DF738466__INCLUDED_)