mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-23 00:29:19 +02:00
Merge branch 'milek-dev' into gfx-work
This commit is contained in:
@@ -5524,6 +5524,7 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
btLampkaDoorLeft.Turn(mvOccupied->DoorLeftOpened);
|
btLampkaDoorLeft.Turn(mvOccupied->DoorLeftOpened);
|
||||||
btLampkaDoorRight.Turn(mvOccupied->DoorRightOpened);
|
btLampkaDoorRight.Turn(mvOccupied->DoorRightOpened);
|
||||||
btLampkaBlokadaDrzwi.Turn(mvOccupied->DoorBlockedFlag());
|
btLampkaBlokadaDrzwi.Turn(mvOccupied->DoorBlockedFlag());
|
||||||
|
btLampkaDoorLockOff.Turn( false == mvOccupied->DoorLockEnabled );
|
||||||
btLampkaDepartureSignal.Turn( mvControlled->DepartureSignal );
|
btLampkaDepartureSignal.Turn( mvControlled->DepartureSignal );
|
||||||
btLampkaNapNastHam.Turn((mvControlled->ActiveDir != 0) && (mvOccupied->EpFuse)); // napiecie na nastawniku hamulcowym
|
btLampkaNapNastHam.Turn((mvControlled->ActiveDir != 0) && (mvOccupied->EpFuse)); // napiecie na nastawniku hamulcowym
|
||||||
btLampkaForward.Turn(mvControlled->ActiveDir > 0); // jazda do przodu
|
btLampkaForward.Turn(mvControlled->ActiveDir > 0); // jazda do przodu
|
||||||
@@ -5582,6 +5583,7 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
btLampkaDoorLeft.Turn( false );
|
btLampkaDoorLeft.Turn( false );
|
||||||
btLampkaDoorRight.Turn( false );
|
btLampkaDoorRight.Turn( false );
|
||||||
btLampkaBlokadaDrzwi.Turn( false );
|
btLampkaBlokadaDrzwi.Turn( false );
|
||||||
|
btLampkaDoorLockOff.Turn( false );
|
||||||
btLampkaDepartureSignal.Turn( false );
|
btLampkaDepartureSignal.Turn( false );
|
||||||
btLampkaNapNastHam.Turn( false );
|
btLampkaNapNastHam.Turn( false );
|
||||||
btLampkaForward.Turn( false );
|
btLampkaForward.Turn( false );
|
||||||
@@ -7160,6 +7162,7 @@ void TTrain::clear_cab_controls()
|
|||||||
btLampkaRadioStop.Clear();
|
btLampkaRadioStop.Clear();
|
||||||
btLampkaHamulecReczny.Clear();
|
btLampkaHamulecReczny.Clear();
|
||||||
btLampkaBlokadaDrzwi.Clear();
|
btLampkaBlokadaDrzwi.Clear();
|
||||||
|
btLampkaDoorLockOff.Clear();
|
||||||
btInstrumentLight.Clear();
|
btInstrumentLight.Clear();
|
||||||
btDashboardLight.Clear();
|
btDashboardLight.Clear();
|
||||||
btTimetableLight.Clear();
|
btTimetableLight.Clear();
|
||||||
@@ -7521,6 +7524,7 @@ bool TTrain::initialize_button(cParser &Parser, std::string const &Label, int co
|
|||||||
{ "i-radiostop:", btLampkaRadioStop },
|
{ "i-radiostop:", btLampkaRadioStop },
|
||||||
{ "i-manual_brake:", btLampkaHamulecReczny },
|
{ "i-manual_brake:", btLampkaHamulecReczny },
|
||||||
{ "i-door_blocked:", btLampkaBlokadaDrzwi },
|
{ "i-door_blocked:", btLampkaBlokadaDrzwi },
|
||||||
|
{ "i-door_blockedoff:", btLampkaDoorLockOff },
|
||||||
{ "i-slippery:", btLampkaPoslizg },
|
{ "i-slippery:", btLampkaPoslizg },
|
||||||
{ "i-contactors:", btLampkaStyczn },
|
{ "i-contactors:", btLampkaStyczn },
|
||||||
{ "i-conv_ovld:", btLampkaNadmPrzetw },
|
{ "i-conv_ovld:", btLampkaNadmPrzetw },
|
||||||
|
|||||||
1
Train.h
1
Train.h
@@ -541,6 +541,7 @@ public: // reszta może by?publiczna
|
|||||||
TButton btLampkaDoorRight;
|
TButton btLampkaDoorRight;
|
||||||
TButton btLampkaDepartureSignal;
|
TButton btLampkaDepartureSignal;
|
||||||
TButton btLampkaBlokadaDrzwi;
|
TButton btLampkaBlokadaDrzwi;
|
||||||
|
TButton btLampkaDoorLockOff;
|
||||||
TButton btLampkaHamulecReczny;
|
TButton btLampkaHamulecReczny;
|
||||||
TButton btLampkaForward; // Ra: lampki w przód i w ty?dla komputerowych kabin
|
TButton btLampkaForward; // Ra: lampki w przód i w ty?dla komputerowych kabin
|
||||||
TButton btLampkaBackward;
|
TButton btLampkaBackward;
|
||||||
|
|||||||
22
renderer.cpp
22
renderer.cpp
@@ -2242,28 +2242,32 @@ void opengl_renderer::Render(TSubModel *Submodel)
|
|||||||
// view angle attenuation
|
// view angle attenuation
|
||||||
float const anglefactor = clamp((Submodel->fCosViewAngle - Submodel->fCosFalloffAngle) / (Submodel->fCosHotspotAngle - Submodel->fCosFalloffAngle), 0.f, 1.f);
|
float const anglefactor = clamp((Submodel->fCosViewAngle - Submodel->fCosFalloffAngle) / (Submodel->fCosHotspotAngle - Submodel->fCosFalloffAngle), 0.f, 1.f);
|
||||||
lightlevel *= anglefactor;
|
lightlevel *= anglefactor;
|
||||||
float const precipitationfactor{interpolate(1.f, 0.25f, clamp(Global.Overcast * 0.75f - 0.5f, 0.f, 1.f))};
|
|
||||||
lightlevel *= precipitationfactor;
|
|
||||||
|
|
||||||
if (lightlevel > 0.f)
|
|
||||||
{
|
|
||||||
// material configuration:
|
|
||||||
// distance attenuation. NOTE: since it's fixed pipeline with built-in gamma correction we're using linear attenuation
|
// distance attenuation. NOTE: since it's fixed pipeline with built-in gamma correction we're using linear attenuation
|
||||||
// we're capping how much effect the distance attenuation can have, otherwise the lights get too tiny at regular distances
|
// we're capping how much effect the distance attenuation can have, otherwise the lights get too tiny at regular distances
|
||||||
float const distancefactor{std::max(0.5f, (Submodel->fSquareMaxDist - TSubModel::fSquareDist) / Submodel->fSquareMaxDist)};
|
float const distancefactor{std::max(0.5f, (Submodel->fSquareMaxDist - TSubModel::fSquareDist) / Submodel->fSquareMaxDist)};
|
||||||
auto const pointsize{std::max(3.f, 5.f * distancefactor * anglefactor)};
|
auto const pointsize{std::max(3.f, 5.f * distancefactor * anglefactor)};
|
||||||
|
// additionally reduce light strength for farther sources in rain or snow
|
||||||
|
if (Global.Overcast > 0.75f)
|
||||||
|
{
|
||||||
|
float const precipitationfactor{interpolate(interpolate(1.f, 0.25f, clamp(Global.Overcast * 0.75f - 0.5f, 0.f, 1.f)), 1.f, distancefactor)};
|
||||||
|
lightlevel *= precipitationfactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lightlevel > 0.f)
|
||||||
|
{
|
||||||
::glEnable(GL_BLEND);
|
::glEnable(GL_BLEND);
|
||||||
|
|
||||||
::glPushMatrix();
|
::glPushMatrix();
|
||||||
::glLoadIdentity();
|
::glLoadIdentity();
|
||||||
::glTranslatef(lightcenter.x, lightcenter.y, lightcenter.z); // początek układu zostaje bez zmian
|
::glTranslatef(lightcenter.x, lightcenter.y, lightcenter.z); // początek układu zostaje bez zmian
|
||||||
|
|
||||||
|
// material configuration:
|
||||||
// limit impact of dense fog on the lights
|
// limit impact of dense fog on the lights
|
||||||
model_ubs.fog_density = 1.0f / std::min<float>(Global.fFogEnd, m_fogrange * 2);
|
model_ubs.fog_density = 1.0f / std::min<float>(Global.fFogEnd, m_fogrange * 2);
|
||||||
|
|
||||||
// main draw call
|
// main draw call
|
||||||
model_ubs.emission = std::min(1.f, lightlevel * anglefactor * precipitationfactor);
|
model_ubs.emission = 1.0f;
|
||||||
|
|
||||||
m_freespot_shader->bind();
|
m_freespot_shader->bind();
|
||||||
|
|
||||||
@@ -2272,16 +2276,14 @@ void opengl_renderer::Render(TSubModel *Submodel)
|
|||||||
// fake fog halo
|
// fake fog halo
|
||||||
float const fogfactor{interpolate(2.f, 1.f, clamp<float>(Global.fFogEnd / 2000, 0.f, 1.f)) * std::max(1.f, Global.Overcast)};
|
float const fogfactor{interpolate(2.f, 1.f, clamp<float>(Global.fFogEnd / 2000, 0.f, 1.f)) * std::max(1.f, Global.Overcast)};
|
||||||
glPointSize(pointsize * fogfactor * 2.0f);
|
glPointSize(pointsize * fogfactor * 2.0f);
|
||||||
model_ubs.param[0] = glm::vec4(glm::vec3(Submodel->f4Diffuse),
|
model_ubs.param[0] = glm::vec4(glm::vec3(Submodel->f4Diffuse), Submodel->fVisible * std::min(1.f, lightlevel) * 0.5f);
|
||||||
Submodel->fVisible * std::min(1.f, lightlevel) * 0.5f);
|
|
||||||
|
|
||||||
glDepthMask(GL_FALSE);
|
glDepthMask(GL_FALSE);
|
||||||
draw(Submodel->m_geometry);
|
draw(Submodel->m_geometry);
|
||||||
glDepthMask(GL_TRUE);
|
glDepthMask(GL_TRUE);
|
||||||
}
|
}
|
||||||
glPointSize(pointsize * 2.0f);
|
glPointSize(pointsize * 2.0f);
|
||||||
model_ubs.param[0] = glm::vec4(glm::vec3(Submodel->f4Diffuse),
|
model_ubs.param[0] = glm::vec4(glm::vec3(Submodel->f4Diffuse), Submodel->fVisible * std::min(1.f, lightlevel));
|
||||||
Submodel->fVisible * std::min(1.f, lightlevel));
|
|
||||||
|
|
||||||
draw(Submodel->m_geometry);
|
draw(Submodel->m_geometry);
|
||||||
|
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ init() {
|
|||||||
u8"kurek trójdrogowy pantografow",
|
u8"kurek trójdrogowy pantografow",
|
||||||
u8"ogrzewanie pociągu",
|
u8"ogrzewanie pociągu",
|
||||||
u8"sygnalizacja hamowania",
|
u8"sygnalizacja hamowania",
|
||||||
u8"sygnalizacja blokady drzwi",
|
u8"blokada drzwi",
|
||||||
u8"prądy drugiego członu",
|
u8"prądy drugiego członu",
|
||||||
u8"oświetlenie przyrządow",
|
u8"oświetlenie przyrządow",
|
||||||
u8"oświetlenie pulpitu",
|
u8"oświetlenie pulpitu",
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ bool ui_layer::init(GLFWwindow *Window)
|
|||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
|
||||||
m_imguiio->Fonts->AddFontFromFileTTF("DejaVuSansMono.ttf", 13.0f, nullptr, &ranges[0]);
|
m_imguiio->Fonts->AddFontFromFileTTF("fonts/dejavusansmono.ttf", 13.0f, nullptr, &ranges[0]);
|
||||||
|
|
||||||
if (Global.map_enabled)
|
if (Global.map_enabled)
|
||||||
m_map = std::make_unique<map>();
|
m_map = std::make_unique<map>();
|
||||||
|
|||||||
Reference in New Issue
Block a user