dungeon_crawler

annotate 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
rev   line source
nuclear@4 1 #ifndef LIGHT_H_
nuclear@4 2 #define LIGHT_H_
nuclear@4 3
nuclear@4 4 #include "color.h"
nuclear@4 5
nuclear@4 6 class Light {
nuclear@4 7 protected:
nuclear@4 8 float intensity;
nuclear@4 9 Color color;
nuclear@4 10
nuclear@4 11 public:
nuclear@4 12 Light(const Color &col = 1.0);
nuclear@4 13 virtual ~Light();
nuclear@4 14
nuclear@4 15 virtual void set_intensity(float val);
nuclear@4 16 virtual void set_color(const Color &col);
nuclear@4 17
nuclear@21 18 virtual Color get_color(bool with_intensity = true) const;
nuclear@21 19
nuclear@4 20 virtual void use(int id = 0) const;
nuclear@4 21 };
nuclear@4 22
nuclear@4 23 class PointLight : public Light {
nuclear@4 24 protected:
nuclear@4 25 Vector3 pos;
nuclear@4 26 float atten[3];
nuclear@21 27 float radius;
nuclear@4 28
nuclear@4 29 public:
nuclear@4 30 PointLight();
nuclear@4 31 PointLight(const Vector3 &pos, const Color &col = 1.0);
nuclear@4 32
nuclear@4 33 void set_position(const Vector3 &pos);
nuclear@4 34 void set_attenuation(float att_const, float att_lin, float att_quad);
nuclear@4 35
nuclear@21 36 void set_radius(float rad);
nuclear@21 37 float get_radius() const;
nuclear@21 38
nuclear@4 39 virtual void use(int id = 0) const;
nuclear@4 40 };
nuclear@4 41
nuclear@4 42 class DirLight : public Light {
nuclear@4 43 protected:
nuclear@4 44 Vector3 dir;
nuclear@4 45
nuclear@4 46 public:
nuclear@4 47 DirLight();
nuclear@4 48 DirLight(const Vector3 &dir, const Color &col = 1.0);
nuclear@4 49
nuclear@4 50 void set_direction(const Vector3 &dir);
nuclear@4 51
nuclear@4 52 virtual void use(int id = 0) const;
nuclear@4 53 };
nuclear@4 54
nuclear@4 55
nuclear@4 56 void set_light(int id, const Light *lt);
nuclear@4 57
nuclear@4 58
nuclear@4 59 #endif // LIGHT_H_