diff options
Diffstat (limited to 'StarsEx/Light.cpp')
-rw-r--r-- | StarsEx/Light.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/StarsEx/Light.cpp b/StarsEx/Light.cpp new file mode 100644 index 0000000..c0c3a26 --- /dev/null +++ b/StarsEx/Light.cpp @@ -0,0 +1,70 @@ +/* Starshatter: The Open Source Project + Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors + Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors + Copyright (c) 1997-2006, Destroyer Studios LLC. + + AUTHOR: John DiCamillo + + + OVERVIEW + ======== + Dynamic Light Source +*/ + +#include "Light.h" +#include "Scene.h" + +// +--------------------------------------------------------------------+ + +int Light::id_key = 1; + +// +--------------------------------------------------------------------+ + +Light::Light(float l, float dl, int time) +: id(id_key++), type(LIGHT_POINT), life(time), +light(l), dldt(dl), color(255,255,255), +active(true), shadow(false), scene(0) +{ } + +// +--------------------------------------------------------------------+ + +Light::~Light() +{ } + +// +--------------------------------------------------------------------+ + +void +Light::Update() +{ + if (dldt < 1.0f) + light *= dldt; + + if (life > 0) life--; +} + +// +--------------------------------------------------------------------+ + +void +Light::Destroy() +{ + if (scene) + scene->DelLight(this); + + delete this; +} + +// +--------------------------------------------------------------------+ + +void +Light::MoveTo(const Point& dst) +{ + //if (type != LIGHT_DIRECTIONAL) + loc = dst; +} + +void +Light::TranslateBy(const Point& ref) +{ + if (type != LIGHT_DIRECTIONAL) + loc = loc - ref; +} |