/* Dane Johnson LICENSE Couch Copyright (C) 2021 Dane Johnson This program comes with ABSOLUTELY NO WARRANTY; without event the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details at https://www.gnu.org/licenses/gpl-3.0.html This is free software, and you are welcome to redistribute it under the terms of the GNU General Public License as published nnn by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. DESCRIPTION Lights provide lighting to a scene. They can be colored and support ambient, diffuse, and specular properties. */ #include "Light.h" Vector3 Light::GetColor() { return color; } void Light::SetColor(Vector3 color) { this->color = color; } float Light::GetAmbient() { return ambient; } void Light::SetAmbient(float ambient) { this->ambient = ambient; } float Light::GetDiffuse() { return diffuse; } void Light::SetDiffuse(float diffuse) { this->diffuse = diffuse; } float Light::GetSpecular() { return specular; } void Light::SetSpecular(float specular) { this->specular = specular; } Light *Light::Duplicate() { Light *light = static_cast(Spatial::Duplicate()); light->color = color; light->ambient = ambient; light->diffuse = diffuse; light->specular = specular; return light; } Light *Light::Instance() { return static_cast(Node::Instance()); } Light *Light::Create() { return new Light; } Name Light::GetType() const {return "Light";} DirectionalLight::DirectionalLight() { this->direction = Vector3(0.0f); this->color = Vector3(0.0f); this->ambient = 0.0f; this->diffuse = 0.0f; this->specular = 0.0f; } DirectionalLight::DirectionalLight(Vector3 direction, Vector3 color, float ambient, float diffuse, float specular) { this->direction = direction; this->color = color; this->ambient = ambient; this->diffuse = diffuse; this->specular = specular; } Vector3 DirectionalLight::GetDirection() { return direction; } void DirectionalLight::SetDirection(Vector3 direction) { this->direction = direction; } DirectionalLight *DirectionalLight::Create() { return new DirectionalLight; } DirectionalLight *DirectionalLight::Duplicate() { DirectionalLight *directionalLight = static_cast(Light::Duplicate()); directionalLight->direction = direction; return directionalLight; } DirectionalLight *DirectionalLight::Instance() { return static_cast(Node::Instance()); } Name DirectionalLight::GetType() const {return "DirectionalLight";} PointLight::PointLight() { this->radius = 0.0f; this->color = Vector3(0.0f); this->ambient = 0.0f; this->diffuse = 0.0f; this->specular = 0.0f; } PointLight::PointLight(float radius, Vector3 color, float ambient, float diffuse, float specular) { this->radius = radius; this->color = color; this->ambient = ambient; this->diffuse = diffuse; this->specular = specular; } float PointLight::GetRadius() { return radius; } void PointLight::SetRadius(float radius) { this->radius = radius; } PointLight *PointLight::Create() { return new PointLight; } PointLight *PointLight::Duplicate() { PointLight *pointLight = static_cast(Light::Duplicate()); pointLight->radius = radius; return pointLight; } PointLight *PointLight::Instance() { return static_cast(Node::Instance()); } Name PointLight::GetType() const {return "PointLight";}