Aether3D
Game Engine
Light.hpp
1 #ifndef LIGHT_H
2 #define LIGHT_H
3 
4 #ifndef SCENEGRAPHNODE_H
5 # include "SceneGraphNode.hpp"
6 #endif
7 
8 struct Vec3;
9 
11 class Light : public SceneGraphNode
12 {
13  public:
15  enum class Type
16  {
17  Directional,
18  Point,
19  Spot
20  };
21 
23  virtual ~Light() {}
24 
26  virtual Type GetLightType() const = 0;
27 
32  virtual void SetCastShadow( bool enable, int shadowMapSize ) = 0;
33 
35  virtual void SetColor( const Vec3& newColor ) = 0;
36 
38  virtual Vec3 GetColor() const = 0;
39 
41  virtual void SetConeAngle( float degrees ) = 0;
42 
44  virtual void SetDirection( const Vec3& newDirection ) = 0;
45 
47  virtual void SetPosition( const Vec3& position ) = 0;
48 
50  virtual void SetRadius( float radius ) = 0;
51 };
52 
53 #endif
Light::SetPosition
virtual void SetPosition(const Vec3 &position)=0
Light::SetConeAngle
virtual void SetConeAngle(float degrees)=0
Light::SetColor
virtual void SetColor(const Vec3 &newColor)=0
Light
Light.
Definition: Light.hpp:11
Light::GetLightType
virtual Type GetLightType() const =0
Light::~Light
virtual ~Light()
Definition: Light.hpp:23
Light::SetCastShadow
virtual void SetCastShadow(bool enable, int shadowMapSize)=0
Light::GetColor
virtual Vec3 GetColor() const =0
Vec3
3-component vector.
Definition: Vec3.hpp:22
Light::SetDirection
virtual void SetDirection(const Vec3 &newDirection)=0
Light::Type::Point
@ Point
SceneGraphNode::position
Vec3 position
Definition: SceneGraphNode.hpp:173
Light::Type::Spot
@ Spot
Light::SetRadius
virtual void SetRadius(float radius)=0
SceneGraphNode
Scene Graph Node. Models, Lights and Cameras are derived from this class.
Definition: SceneGraphNode.hpp:28
Light::Type
Type
Definition: Light.hpp:15