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