Couch
Light.h
Go to the documentation of this file.
1 
24 #ifndef LIGHT_H
25 #define LIGHT_H
26 
27 #include <vector>
28 
29 #include "types.h"
30 #include "Spatial.h"
31 
37 class Light : public Spatial {
38 public:
39 
44  Vector3 GetColor();
49  void SetColor(Vector3 color);
50 
55  float GetAmbient();
59  void SetAmbient(float ambient);
60 
66  float GetDiffuse();
70  void SetDiffuse(float diffuse);
71 
78  float GetSpecular();
82  void SetSpecular(float specular);
83 
84  virtual Light *Create();
85  virtual Light *Duplicate();
86  virtual Light *Instance();
87 
88  virtual Name GetType() const;
89 
90 protected:
91  Vector3 color;
92  float ambient, diffuse, specular;
93 };
94 
98 class DirectionalLight : public Light {
99 public:
101  DirectionalLight(Vector3 direction, Vector3 color, float ambient, float diffuse, float specular);
102 
107  Vector3 GetDirection();
112  void SetDirection(Vector3 direction);
113 
114  virtual Name GetType() const;
115  virtual DirectionalLight *Create();
116  virtual DirectionalLight *Duplicate();
117  virtual DirectionalLight *Instance();
118 private:
119  Vector3 direction;
120 };
121 
125 class PointLight : public Light {
126 public:
127  PointLight();
128  PointLight(float radius, Vector3 color, float ambient, float diffuse, float specular);
129 
134  float GetRadius();
139  void SetRadius(float radius);
140 
141  virtual Name GetType() const;
142  virtual PointLight *Create();
143  virtual PointLight *Duplicate();
144  virtual PointLight *Instance();
145 private:
146  float radius;
147 };
148 
149 typedef std::vector<PointLight*> PointLightList;
150 
151 #endif /* LIGHT_H */
Definition: Light.h:98
void SetDirection(Vector3 direction)
Definition: Light.cpp:97
virtual DirectionalLight * Instance()
Definition: Light.cpp:112
virtual DirectionalLight * Duplicate()
Definition: Light.cpp:105
virtual DirectionalLight * Create()
Definition: Light.cpp:101
Vector3 GetDirection()
Definition: Light.cpp:93
Definition: Light.h:37
void SetColor(Vector3 color)
Definition: Light.cpp:29
float GetAmbient()
Definition: Light.cpp:33
virtual Light * Create()
Definition: Light.cpp:71
float GetDiffuse()
Definition: Light.cpp:41
void SetSpecular(float specular)
Definition: Light.cpp:53
virtual Light * Duplicate()
Definition: Light.cpp:57
void SetAmbient(float ambient)
Definition: Light.cpp:37
void SetDiffuse(float diffuse)
Definition: Light.cpp:45
virtual Light * Instance()
Definition: Light.cpp:67
float GetSpecular()
Definition: Light.cpp:49
Vector3 GetColor()
Definition: Light.cpp:25
Definition: Light.h:125
float GetRadius()
Definition: Light.cpp:134
virtual PointLight * Create()
Definition: Light.cpp:142
virtual PointLight * Duplicate()
Definition: Light.cpp:146
void SetRadius(float radius)
Definition: Light.cpp:138
virtual PointLight * Instance()
Definition: Light.cpp:153
Definition: Spatial.h:35