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

build 171214. partial control variable normalization for combined engine sounds, conditional cab soundproofing

This commit is contained in:
tmj-fstate
2017-12-15 02:15:44 +01:00
parent b70c265a1e
commit c22390b4ff
8 changed files with 108 additions and 55 deletions

View File

@@ -3622,7 +3622,35 @@ void TDynamicObject::RenderSounds() {
|| ( MoverParameters->EngineType == Dumb ) ) {
// frequency calculation
frequency = rsSilnik.m_frequencyfactor * std::fabs( MoverParameters->enrot ) + rsSilnik.m_frequencyoffset;
auto normalizer { 1.f };
// for combined sounds normalize frequency to 0-1 range
switch( MoverParameters->EngineType ) {
case DieselElectric: {
if( true == sConverter.is_combined() ) {
normalizer = MoverParameters->DElist[ MoverParameters->MainCtrlPosNo ].RPM / 60;
}
break;
}
case DieselEngine: {
if( true == rsSilnik.is_combined() ) {
normalizer = MoverParameters->dizel_nmax;
}
break;
}
case ElectricInductionMotor: {
if( true == rsSilnik.is_combined() ) {
// TODO: implement normalization/a way to calculate max expected engine rpm
}
break;
}
default: {
if( true == rsSilnik.is_combined() ) {
normalizer = MoverParameters->nmax;
}
break;
}
}
frequency = rsSilnik.m_frequencyfactor * std::abs( MoverParameters->enrot ) / std::max( 1.f, normalizer ) + rsSilnik.m_frequencyoffset;
if( MoverParameters->EngineType == Dumb ) {
frequency -= 0.2 * MoverParameters->EnginePower / ( 1 + MoverParameters->Power * 1000 );
}