Directional Light get/set

This commit is contained in:
Dane Johnson 2021-03-04 10:41:45 -06:00
parent 77981e45a8
commit e5137c4c61
4 changed files with 25 additions and 4 deletions

View File

@ -12,7 +12,7 @@
This is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 3 of the License,
nnn by the Free Software Foundation; either version 3 of the License,
or (at your option) any later version.
DESCRIPTION
@ -92,6 +92,14 @@ DirectionalLight::DirectionalLight(Vector3 direction, Vector3 color, float ambie
this->specular = specular;
}
Vector3 DirectionalLight::GetDirection() {
return direction;
}
void DirectionalLight::SetDirection(Vector3 direction) {
this->direction = direction;
}
DirectionalLight *DirectionalLight::Create() {
return new DirectionalLight;
}

View File

@ -95,13 +95,26 @@ protected:
*/
class DirectionalLight : public Light {
public:
Vector3 direction;
DirectionalLight();
DirectionalLight(Vector3 direction, Vector3 color, float ambient, float diffuse, float specular);
/**
The direction from which this light is coming.
returns The direction of the light.
*/
Vector3 GetDirection();
/**
Set the direction from which the light is coming.
@param direction The desired light direction
*/
void SetDirection(Vector3 direction);
virtual Name GetType() const;
virtual DirectionalLight *Create();
virtual DirectionalLight *Duplicate();
virtual DirectionalLight *Instance();
private:
Vector3 direction;
};
#endif /* LIGHT_H */

View File

@ -74,7 +74,7 @@ void Shader::UpdateMaterial(Material material) {
}
void Shader::UpdateDirectionalLight(DirectionalLight directionalLight) {
glUniform3fv(glGetUniformLocation(id, "directionalLight.direction"), 1, glm::value_ptr(directionalLight.direction));
glUniform3fv(glGetUniformLocation(id, "directionalLight.direction"), 1, glm::value_ptr(directionalLight.GetDirection()));
glUniform3fv(glGetUniformLocation(id, "directionalLight.color"), 1, glm::value_ptr(directionalLight.GetColor()));
glUniform1f(glGetUniformLocation(id, "directionalLight.ambient"), directionalLight.GetAmbient());

View File

@ -37,7 +37,7 @@ function init()
camera:Translate(couch.Vector3(0.0, 0.0, 10.0))
local light = couch.DirectionalLight()
light.direction = couch.Vector3(0.0, -1.0, -1.0)
light:SetDirection(couch.Vector3(0.0, -1.0, -1.0))
light:SetColor(couch.Vector3(1.0, 1.0, 1.0))
light:SetAmbient(0.2)
light:SetDiffuse(1.0)