mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 13:59:19 +02:00
build 171222. support for separate submodel activation thresholds
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user