16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-22 05:49:19 +02:00

build 171222. support for separate submodel activation thresholds

This commit is contained in:
tmj-fstate
2017-12-23 17:46:35 +01:00
parent 61a2511e1f
commit 1b5e6aafd1
3 changed files with 15 additions and 12 deletions

View File

@@ -574,16 +574,17 @@ void TAnimModel::RaPrepare()
bool state; // stan światła bool state; // stan światła
for (int i = 0; i < iNumLights; ++i) for (int i = 0; i < iNumLights; ++i)
{ {
switch (lsLights[i]) auto const lightmode { static_cast<int>( lsLights[ i ] ) };
switch (lightmode)
{ {
case ls_Blink: // migotanie case ls_Blink: // migotanie
state = fBlinkTimer < fOnTime; state = fBlinkTimer < fOnTime;
break; break;
case ls_Dark: // zapalone, gdy ciemno case ls_Dark: // zapalone, gdy ciemno
state = Global::fLuminance <= fDark; state = Global::fLuminance <= ( lsLights[i] - 3.0 );
break; break;
default: // zapalony albo zgaszony default: // zapalony albo zgaszony
state = (lsLights[i] == ls_On); state = (lightmode == ls_On);
} }
if (LightsOn[i]) if (LightsOn[i])
LightsOn[i]->iVisible = state; LightsOn[i]->iVisible = state;
@@ -755,12 +756,12 @@ void TAnimModel::AnimationVND(void *pData, double a, double b, double c, double
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void TAnimModel::LightSet(int n, float v) void TAnimModel::LightSet(int const n, float const v)
{ // ustawienie światła (n) na wartość (v) { // ustawienie światła (n) na wartość (v)
if (n >= iMaxNumLights) if (n >= iMaxNumLights)
return; // przekroczony zakres return; // przekroczony zakres
lsLights[ n ] = TLightState( static_cast<int>( v ) ); lsLights[ n ] = v;
switch( lsLights[ n ] ) { switch( static_cast<int>( lsLights[ n ] ) ) {
// interpretacja ułamka zależnie od typu // interpretacja ułamka zależnie od typu
case ls_Off: { case ls_Off: {
// ustalenie czasu migotania, t<1s (f>1Hz), np. 0.1 => t=0.1 (f=10Hz) // ustalenie czasu migotania, t<1s (f>1Hz), np. 0.1 => t=0.1 (f=10Hz)
@@ -776,8 +777,10 @@ void TAnimModel::LightSet(int n, float v)
} }
case ls_Dark: { case ls_Dark: {
// zapalenie świateł zależne od oświetlenia scenerii // zapalenie świateł zależne od oświetlenia scenerii
if( v > 3.0 ) { fDark = v - 3.0; } // ustawienie indywidualnego progu zapalania if( v == 3.0 ) {
else { fDark = DefaultDarkThresholdLevel; } // standardowy próg zaplania // standardowy próg zaplania
lsLights[ n ] = 3.0 + DefaultDarkThresholdLevel;
}
break; break;
} }
} }

View File

@@ -139,7 +139,7 @@ public:
vAngle.x = Angles.x; vAngle.x = Angles.x;
vAngle.y = Angles.y; vAngle.y = Angles.y;
vAngle.z = Angles.z; }; vAngle.z = Angles.z; };
void LightSet( int n, float v ); void LightSet( int const n, float const v );
void AnimationVND( void *pData, double a, double b, double c, double d ); void AnimationVND( void *pData, double a, double b, double c, double d );
bool TerrainLoaded(); bool TerrainLoaded();
int TerrainCount(); int TerrainCount();
@@ -178,8 +178,8 @@ private:
std::string asText; // tekst dla wyświetlacza znakowego std::string asText; // tekst dla wyświetlacza znakowego
TAnimAdvanced *pAdvanced { nullptr }; TAnimAdvanced *pAdvanced { nullptr };
TLightState lsLights[ iMaxNumLights ]; float lsLights[ iMaxNumLights ];
float fDark { DefaultDarkThresholdLevel }; // poziom zapalanie światła (powinno być chyba powiązane z danym światłem?) // float fDark { DefaultDarkThresholdLevel }; // poziom zapalanie światła (powinno być chyba powiązane z danym światłem?)
float fOnTime { 0.66f }; float fOnTime { 0.66f };
float fOffTime { 0.66f + 0.66f }; // były stałymi, teraz mogą być zmienne dla każdego egzemplarza float fOffTime { 0.66f + 0.66f }; // były stałymi, teraz mogą być zmienne dla każdego egzemplarza
unsigned int m_framestamp { 0 }; // id of last rendered gfx frame unsigned int m_framestamp { 0 }; // id of last rendered gfx frame

View File

@@ -1,5 +1,5 @@
#pragma once #pragma once
#define VERSION_MAJOR 17 #define VERSION_MAJOR 17
#define VERSION_MINOR 1214 #define VERSION_MINOR 1222
#define VERSION_REVISION 0 #define VERSION_REVISION 0