diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2013-06-20 23:14:37 +0200 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2013-06-20 23:14:37 +0200 |
commit | 28b4e9a63450110978d60de80a9af2e901d49a97 (patch) | |
tree | 8a935f0350f695453353155d5efc561b13db9632 /src/graphics/engine | |
parent | 4c33172e173b8f815a367f1e1c0fae06d9051df5 (diff) | |
download | colobot-28b4e9a63450110978d60de80a9af2e901d49a97.tar.gz colobot-28b4e9a63450110978d60de80a9af2e901d49a97.tar.bz2 colobot-28b4e9a63450110978d60de80a9af2e901d49a97.zip |
Fixed terrain light priorities (fix for #139)
* lights illuminating the terrain specified in scene file are now
always moved to front of light ordering
Diffstat (limited to 'src/graphics/engine')
-rw-r--r-- | src/graphics/engine/lightman.cpp | 12 | ||||
-rw-r--r-- | src/graphics/engine/lightman.h | 7 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/graphics/engine/lightman.cpp b/src/graphics/engine/lightman.cpp index cd743a5..295b3da 100644 --- a/src/graphics/engine/lightman.cpp +++ b/src/graphics/engine/lightman.cpp @@ -236,6 +236,15 @@ bool CLightManager::SetLightEnabled(int lightRank, bool enabled) return true; } +bool CLightManager::SetLightPriority(int lightRank, LightPriority priority) +{ + if ( (lightRank < 0) || (lightRank >= static_cast<int>( m_dynLights.size() )) ) + return false; + + m_dynLights[lightRank].priority = priority; + return true; +} + bool CLightManager::SetLightIncludeType(int lightRank, EngineObjectType type) { if ( (lightRank < 0) || (lightRank >= static_cast<int>( m_dynLights.size() )) ) @@ -503,6 +512,9 @@ CLightManager::LightsComparator::LightsComparator(Math::Vector eyePos, EngineObj float CLightManager::LightsComparator::GetLightWeight(const DynamicLight& dynLight) { + if (dynLight.priority == LIGHT_PRI_HIGHEST) + return -1.0f; + bool enabled = true; if (!dynLight.used || !dynLight.enabled || dynLight.intensity.current == 0.0f) enabled = false; diff --git a/src/graphics/engine/lightman.h b/src/graphics/engine/lightman.h index d0ac338..9677555 100644 --- a/src/graphics/engine/lightman.h +++ b/src/graphics/engine/lightman.h @@ -71,8 +71,9 @@ struct LightProgression */ enum LightPriority { - LIGHT_PRI_HIGH = 1, - LIGHT_PRI_LOW = 2 + LIGHT_PRI_HIGHEST = 1, //!< always highest weight (always picked) + LIGHT_PRI_HIGH = 2, //!< high weight + LIGHT_PRI_LOW = 3 //!< low weight }; /** @@ -154,6 +155,8 @@ public: bool GetLight(int lightRank, Light &light); //! Enables/disables the given dynamic light bool SetLightEnabled(int lightRank, bool enable); + //! Changes the light priority + bool SetLightPriority(int lightRank, LightPriority priority); //! Sets what objects are included in given dynamic light bool SetLightIncludeType(int lightRank, EngineObjectType type); |