00001 #include <windows.h>
00002 #include "light.h"
00003 #include "mmgr.h"
00004
00005 LIGHT::LIGHT()
00006 {
00007 }
00008
00009 LIGHT::~LIGHT()
00010 {
00011 }
00012
00013 void LIGHT::Reset()
00014 {
00015 Orientation.Reset();
00016 Position.Set(2.0, 2.0, 3.0);
00017 Delta_x = 0.0;
00018 Delta_y = 0.0;
00019 Delta_z = 0.0;
00020 Movement_x = 0.0;
00021 Movement_y = 0.0;
00022 Movement_z = 0.0;
00023 Ambient[0] = 0.0;
00024 Ambient[1] = 0.0;
00025 Ambient[2] = 0.0;
00026 Ambient[3] = 1.0;
00027 Diffuse[0] = 1.0;
00028 Diffuse[1] = 1.0;
00029 Diffuse[2] = 1.0;
00030 Diffuse[3] = 1.0;
00031 Specular[0] = 1.0;
00032 Specular[1] = 1.0;
00033 Specular[2] = 1.0;
00034 Specular[3] = 1.0;
00035 SpotLight = GL_FALSE;
00036 SpotDirection = GetZUnit();
00037 SpotExponent = 0.0;
00038 SpotCutoff = 180.0;
00039 Constant = 1.0;
00040 Linear = 0.0;
00041 Quadratic = 0.0;
00042 GlobalAmbient[0] = 0.2;
00043 GlobalAmbient[1] = 0.2;
00044 GlobalAmbient[2] = 0.2;
00045 GlobalAmbient[3] = 1.0;
00046 Positional = GL_FALSE;
00047 LocalViewer = GL_FALSE;
00048 TwoSided = GL_FALSE;
00049 float LightPosition[] = {Position.x, Position.y, Position.z, (float)Positional};
00050 glLightfv(GL_LIGHT[LightNumber], GL_POSITION, LightPosition);
00051 glLightfv(GL_LIGHT[LightNumber], GL_AMBIENT, Ambient);
00052 glLightfv(GL_LIGHT[LightNumber], GL_DIFFUSE, Diffuse);
00053 glLightfv(GL_LIGHT[LightNumber], GL_SPECULAR, Specular);
00054 glEnable(GL_LIGHT[LightNumber]);
00055 }
00056
00057 void LIGHT::Update()
00058 {
00059 glLightfv(GL_LIGHT[LightNumber], GL_AMBIENT, Ambient);
00060 glLightfv(GL_LIGHT[LightNumber], GL_DIFFUSE, Diffuse);
00061 glLightfv(GL_LIGHT[LightNumber], GL_SPECULAR, Specular);
00062 }
00063
00064 void LIGHT::Apply()
00065 {
00066 UpdatePosition();
00067 float LightPosition[] = {Position.x, Position.y, Position.z, (float)Positional};
00068 glLightfv(GL_LIGHT[LightNumber], GL_POSITION, LightPosition);
00069 }