dungeon_crawler

view prototype/src/light.h @ 21:0588f8a1a351

converting LIGHT meshes to lights
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 21 Aug 2012 06:33:36 +0300
parents 158de53b4e18
children fa8f89d06f6f
line source
1 #ifndef LIGHT_H_
2 #define LIGHT_H_
4 #include "color.h"
6 class Light {
7 protected:
8 float intensity;
9 Color color;
11 public:
12 Light(const Color &col = 1.0);
13 virtual ~Light();
15 virtual void set_intensity(float val);
16 virtual void set_color(const Color &col);
18 virtual Color get_color(bool with_intensity = true) const;
20 virtual void use(int id = 0) const;
21 };
23 class PointLight : public Light {
24 protected:
25 Vector3 pos;
26 float atten[3];
27 float radius;
29 public:
30 PointLight();
31 PointLight(const Vector3 &pos, const Color &col = 1.0);
33 void set_position(const Vector3 &pos);
34 void set_attenuation(float att_const, float att_lin, float att_quad);
36 void set_radius(float rad);
37 float get_radius() const;
39 virtual void use(int id = 0) const;
40 };
42 class DirLight : public Light {
43 protected:
44 Vector3 dir;
46 public:
47 DirLight();
48 DirLight(const Vector3 &dir, const Color &col = 1.0);
50 void set_direction(const Vector3 &dir);
52 virtual void use(int id = 0) const;
53 };
56 void set_light(int id, const Light *lt);
59 #endif // LIGHT_H_