19 #ifndef LIGHT_H_INCLUDED
20 #define LIGHT_H_INCLUDED
22 #include "../generic/managed.h"
23 #include "../generic/identifiable.h"
24 #include "../generic/manual_object.h"
27 #include "stage_node.h"
38 typedef std::shared_ptr<Light> ptr;
42 void set_type(LightType type);
50 Vec3 direction()
const {
51 return absolute_position();
54 void set_direction(
float x,
float y,
float z) {
55 set_direction(
Vec3(x, y, z));
58 void set_range(
float range) {
63 void set_direction(
const Vec3& dir) {
64 set_type(LIGHT_TYPE_DIRECTIONAL);
65 move_to(-dir.x, -dir.y, -dir.z);
80 LightType type()
const {
return type_; }
83 const smlt::Colour& specular()
const {
return specular_; }
88 void set_attenuation(
float range,
float constant,
float linear,
float quadratic);
91 float range()
const {
return range_; }
92 float constant_attenuation()
const {
return const_attenuation_; }
93 float linear_attenuation()
const {
return linear_attenuation_; }
94 float quadratic_attenuation()
const {
return quadratic_attenuation_; }
96 const AABB& aabb()
const override {
100 void update(
float step)
override {
104 void clean_up()
override {
105 StageNode::clean_up();
109 UniqueIDKey make_key()
const override {
110 return make_unique_id_key(
id());
121 float const_attenuation_;
122 float linear_attenuation_;
123 float quadratic_attenuation_;