universal controller configuration fix, opengl 3.3 renderer headlights cone tweak

This commit is contained in:
tmj-fstate
2020-01-04 17:55:08 +01:00
parent 93ef01142c
commit bebb413c31
3 changed files with 17 additions and 5 deletions

View File

@@ -611,7 +611,7 @@ struct TUniversalCtrl
int NextPosFastInc = 0; /*nastepna duza pozycja przy przechodzeniu szybkim*/
int PrevPosFastDec = 0; /*poprzednia duza pozycja przy przechodzeniu szybkim*/
};
typedef TUniversalCtrl TUniversalCtrlTable[UniversalCtrlArraySize + 1]; /*tablica sterowania uniwersalnego nastawnika*/
using TUniversalCtrlTable = std::array< TUniversalCtrl, UniversalCtrlArraySize + 1>;
struct TSecuritySystem
{
@@ -1059,6 +1059,7 @@ public:
bool UniCtrlIntegratedBrakePNCtrl = false; /*zintegrowany nastawnik JH obsluguje hamulec PN*/
bool UniCtrlIntegratedBrakeCtrl = false; /*zintegrowany nastawnik JH obsluguje hamowanie*/
bool UniCtrlIntegratedLocalBrakeCtrl = false; /*zintegrowany nastawnik JH obsluguje hamowanie hamulcem pomocniczym*/
int UniCtrlNoPowerPos{ 0 }; // cached highesr position not generating traction force
/*-sekcja parametrow dla lokomotywy elektrycznej*/
TSchemeTable RList; /*lista rezystorow rozruchowych i polaczen silnikow, dla dizla: napelnienia*/

View File

@@ -2189,7 +2189,7 @@ int TMoverParameters::MainCtrlNoPowerPos() const {
switch( EIMCtrlType ) {
case 1: { return 3; }
case 2: { return 3; }
case 3: { return 3; }
case 3: { return UniCtrlNoPowerPos; }
default: { return 0; }
}
}
@@ -10653,6 +10653,15 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
// WriteLogSS("OK=", BoolTo10(OK));
// WriteLog("");
if( EIMCtrlType == 3 ) {
for( auto idx = 0; idx < MainCtrlPosNo; ++idx ) {
if( UniCtrlList[ idx ].MaxCtrlVal > 0.0 ) {
UniCtrlNoPowerPos = std::max( 0, ( idx - 1 ) );
break;
}
}
}
return OK;
}

View File

@@ -4058,9 +4058,11 @@ void opengl33_renderer::Update_Lights(light_array &Lights)
auto const &ownerdimensions{ scenelight.owner->MoverParameters->Dim };
auto const up{ static_cast<glm::dvec3>( scenelight.owner->VectorUp() ) };
auto const size{ static_cast<float>( std::max( ownerdimensions.W, ownerdimensions.H ) * 1.0 ) }; // ensure square ratio
auto const cone{ 5.f };
auto const offset{ 75.f * ( 5.f / cone ) };
headlights.position() =
scenelight.owner->GetPosition()
- scenelight.direction * 150.f
- scenelight.direction * offset
+ up * ( size * 0.5 );
/*
headlights.projection() = ortho_projection(
@@ -4069,9 +4071,9 @@ void opengl33_renderer::Update_Lights(light_array &Lights)
ownerdimensions.L * 0.5 - 0.5, 1000.0f );
*/
headlights.projection() = perspective_projection(
glm::radians( 2.5 ),
glm::radians( cone ),
1.0,
ownerdimensions.L * 0.5 + 150.0 - 0.25, 1000.0f );
ownerdimensions.L * 0.5 + offset - 0.25, 1000.0f );
glm::dmat4 viewmatrix{ 1.0 };
viewmatrix *=
glm::lookAt(