mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-05 20:39:09 +01:00
seasonal model variants for vehicle exterior model
This commit is contained in:
@@ -3730,7 +3730,9 @@ void opengl33_renderer::Render(TSubModel *Submodel)
|
|||||||
case rendermode::shadows:
|
case rendermode::shadows:
|
||||||
{
|
{
|
||||||
// skip if the shadow caster rank is too low for currently set threshold
|
// skip if the shadow caster rank is too low for currently set threshold
|
||||||
if( Material( Submodel ).shadow_rank > Global.gfx_shadow_rank_cutoff )
|
// or if the submodel is hidden (colour pass only fades it out, e.g. inactive seasonal variant)
|
||||||
|
if( ( Material( Submodel ).shadow_rank > Global.gfx_shadow_rank_cutoff )
|
||||||
|
|| ( Submodel->fVisible <= 0.f ) )
|
||||||
{
|
{
|
||||||
--m_renderpass.draw_stats.submodels;
|
--m_renderpass.draw_stats.submodels;
|
||||||
--m_renderpass.draw_stats.drawcalls;
|
--m_renderpass.draw_stats.drawcalls;
|
||||||
@@ -4630,7 +4632,9 @@ void opengl33_renderer::Render_Alpha(TSubModel *Submodel)
|
|||||||
case rendermode::shadows:
|
case rendermode::shadows:
|
||||||
{
|
{
|
||||||
// skip if the shadow caster rank is too low for currently set threshold
|
// skip if the shadow caster rank is too low for currently set threshold
|
||||||
if( Material( Submodel ).shadow_rank > Global.gfx_shadow_rank_cutoff )
|
// or if the submodel is hidden (colour pass only fades it out, e.g. inactive seasonal variant)
|
||||||
|
if( ( Material( Submodel ).shadow_rank > Global.gfx_shadow_rank_cutoff )
|
||||||
|
|| ( Submodel->fVisible <= 0.f ) )
|
||||||
{
|
{
|
||||||
--m_renderpass.draw_stats.submodels;
|
--m_renderpass.draw_stats.submodels;
|
||||||
--m_renderpass.draw_stats.drawcalls;
|
--m_renderpass.draw_stats.drawcalls;
|
||||||
|
|||||||
@@ -2863,7 +2863,9 @@ opengl_renderer::Render( TSubModel *Submodel ) {
|
|||||||
}
|
}
|
||||||
case rendermode::shadows: {
|
case rendermode::shadows: {
|
||||||
// skip if the shadow caster rank is too low for currently set threshold
|
// skip if the shadow caster rank is too low for currently set threshold
|
||||||
if( Material( Submodel ).shadow_rank > Global.gfx_shadow_rank_cutoff )
|
// or if the submodel is hidden (colour pass only fades it out, e.g. inactive seasonal variant)
|
||||||
|
if( ( Material( Submodel ).shadow_rank > Global.gfx_shadow_rank_cutoff )
|
||||||
|
|| ( Submodel->fVisible <= 0.f ) )
|
||||||
{
|
{
|
||||||
--m_renderpass.draw_stats.submodels;
|
--m_renderpass.draw_stats.submodels;
|
||||||
--m_renderpass.draw_stats.drawcalls;
|
--m_renderpass.draw_stats.drawcalls;
|
||||||
|
|||||||
@@ -800,6 +800,19 @@ TDynamicObject::set_cab_lights( int const Cab, float const Level ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// aktualizujemy submodele w zaleznosci od aktualnej pory roku
|
||||||
|
void TDynamicObject::on_season_update()
|
||||||
|
{
|
||||||
|
if (sm_winter_variant != nullptr) // pokazujemy wariant zimowy
|
||||||
|
sm_winter_variant->SetVisibilityLevel(Global.Season == "winter:" ? 1 : 0, true, false);
|
||||||
|
if (sm_spring_variant != nullptr) // pokazujemy wariant wiosenny
|
||||||
|
sm_spring_variant->SetVisibilityLevel(Global.Season == "spring:" ? 1 : 0, true, false);
|
||||||
|
if (sm_summer_variant != nullptr) // pokazujemy wariant letni
|
||||||
|
sm_summer_variant->SetVisibilityLevel(Global.Season == "summer:" ? 1 : 0, true, false);
|
||||||
|
if (sm_autumn_variant != nullptr) // pokazujemy wariant jesienny
|
||||||
|
sm_autumn_variant->SetVisibilityLevel(Global.Season == "autumn:" ? 1 : 0, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
// ABu 29.01.05 przeklejone z render i renderalpha: *********************
|
// ABu 29.01.05 przeklejone z render i renderalpha: *********************
|
||||||
void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
|
void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
|
||||||
{ // ABu290105: pozbierane i uporzadkowane powtarzajace
|
{ // ABu290105: pozbierane i uporzadkowane powtarzajace
|
||||||
@@ -814,6 +827,10 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
|
|||||||
if (vFloor.z > 0.0)
|
if (vFloor.z > 0.0)
|
||||||
mdLoad->GetSMRoot()->SetTranslate(modelShake + vFloor);
|
mdLoad->GetSMRoot()->SetTranslate(modelShake + vFloor);
|
||||||
|
|
||||||
|
// model jest współdzielony przez pojazdy, a pora roku może się zmienić w trakcie symulacji
|
||||||
|
if (Global.UpdateMaterials)
|
||||||
|
on_season_update();
|
||||||
|
|
||||||
if (ObjSqrDist < 400 * 400 ) // gdy bliżej niż 400m
|
if (ObjSqrDist < 400 * 400 ) // gdy bliżej niż 400m
|
||||||
{
|
{
|
||||||
for( auto &animation : pAnimations ) {
|
for( auto &animation : pAnimations ) {
|
||||||
@@ -2493,6 +2510,10 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
smBogie[0]->WillBeAnimated();
|
smBogie[0]->WillBeAnimated();
|
||||||
if (smBogie[1])
|
if (smBogie[1])
|
||||||
smBogie[1]->WillBeAnimated();
|
smBogie[1]->WillBeAnimated();
|
||||||
|
sm_winter_variant = mdModel->GetFromName("winter_variant");
|
||||||
|
sm_spring_variant = mdModel->GetFromName("spring_variant");
|
||||||
|
sm_summer_variant = mdModel->GetFromName("summer_variant");
|
||||||
|
sm_autumn_variant = mdModel->GetFromName("autumn_variant");
|
||||||
}
|
}
|
||||||
// ABu: zainicjowanie zmiennej, zeby nic sie nie ruszylo w pierwszej klatce,
|
// ABu: zainicjowanie zmiennej, zeby nic sie nie ruszylo w pierwszej klatce,
|
||||||
// potem juz liczona prawidlowa wartosc masy
|
// potem juz liczona prawidlowa wartosc masy
|
||||||
|
|||||||
@@ -310,6 +310,10 @@ private:
|
|||||||
TSubModel *smWahacze[4]; // wahacze (np. nogi, dźwignia w drezynie)
|
TSubModel *smWahacze[4]; // wahacze (np. nogi, dźwignia w drezynie)
|
||||||
TSubModel *smBrakeMode; // Ra 15-01: nastawa hamulca też
|
TSubModel *smBrakeMode; // Ra 15-01: nastawa hamulca też
|
||||||
TSubModel *smLoadMode; // Ra 15-01: nastawa próżny/ładowny
|
TSubModel *smLoadMode; // Ra 15-01: nastawa próżny/ładowny
|
||||||
|
TSubModel *sm_winter_variant {}; // submodel zimowego wariantu
|
||||||
|
TSubModel *sm_spring_variant {}; // submodel wiosennego wariantu
|
||||||
|
TSubModel *sm_summer_variant {}; // submodel letniego wariantu
|
||||||
|
TSubModel *sm_autumn_variant {}; // submodel jesiennego wariantu
|
||||||
double fWahaczeAmp;
|
double fWahaczeAmp;
|
||||||
// Winger 160204 - pantografy
|
// Winger 160204 - pantografy
|
||||||
double pantspeedfactor;
|
double pantspeedfactor;
|
||||||
@@ -462,6 +466,7 @@ private:
|
|||||||
void ABuLittleUpdate(double ObjSqrDist);
|
void ABuLittleUpdate(double ObjSqrDist);
|
||||||
void ABuBogies();
|
void ABuBogies();
|
||||||
void ABuModelRoll();
|
void ABuModelRoll();
|
||||||
|
void on_season_update();
|
||||||
void TurnOff();
|
void TurnOff();
|
||||||
// update state of load exchange operation
|
// update state of load exchange operation
|
||||||
void update_exchange( double const Deltatime );
|
void update_exchange( double const Deltatime );
|
||||||
|
|||||||
Reference in New Issue
Block a user