1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-16 06:29:31 +00:00
Aquaria/BBGE/Light.cpp

68 lines
1.5 KiB
C++

/*
Copyright (C) 2007, 2010 - Bit-Blot
This file is part of Aquaria.
Aquaria is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "Light.h"
Light::Light()
{
num = 0;
enabled = false;
ambient = Vector(0.0f,0.0f,0.0f);
diffuse = Vector(1,1,1);
position = Vector(0,0,0);
}
void Light::apply()
{
#ifdef BBGE_BUILD_OPENGL
int t = GL_LIGHT0;
switch (num)
{
case 0: t=GL_LIGHT0; break;
case 1: t=GL_LIGHT1; break;
case 2: t=GL_LIGHT2; break;
case 3: t=GL_LIGHT3; break;
case 4: t=GL_LIGHT4; break;
case 5: t=GL_LIGHT5; break;
case 6: t=GL_LIGHT6; break;
case 7: t=GL_LIGHT7; break;
}
if (enabled)
{
glEnable(t);
float v[4];
glLightfv(t, GL_AMBIENT, ambient.getv4(v, 1));
glLightfv(t, GL_DIFFUSE, diffuse.getv4(v, 1));
glLightfv(t, GL_POSITION, position.getv4(v, 0));
}
else
{
glDisable(t);
}
#endif
}
void Light::update (float dt)
{
diffuse.update(dt);
ambient.update(dt);
position.update(dt);
}