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:
30
DynObj.cpp
30
DynObj.cpp
@@ -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 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user