diff --git a/DynObj.cpp b/DynObj.cpp index a3186f51..a8c21ae8 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -5658,6 +5658,9 @@ void TDynamicObject::LoadMMediaFile( std::string BaseDir, std::string TypeName, // odpalanie silnika m_powertrainsounds.engine_ignition.deserialize( parser, sound_type::single ); m_powertrainsounds.engine_ignition.owner( this ); + } else if (token == "shutdown:") { + m_powertrainsounds.engine_shutdown.deserialize(parser, sound_type::single); + m_powertrainsounds.engine_shutdown.owner(this); } else if( token == "engageslippery:" ) { // tarcie tarcz sprzegla: @@ -6371,7 +6374,7 @@ TDynamicObject::powertrain_sounds::position( glm::vec3 const Location ) { std::vector enginesounds = { &inverter, &motor_relay, &dsbWejscie_na_bezoporow, &motor_parallel, &motor_shuntfield, &rsWentylator, - &engine, &engine_ignition, &engine_revving, &engine_turbo, &oil_pump, &radiator_fan, &radiator_fan_aux, + &engine, &engine_ignition, &engine_shutdown, &engine_revving, &engine_turbo, &oil_pump, &radiator_fan, &radiator_fan_aux, &transmission, &rsEngageSlippery }; for( auto sound : enginesounds ) { @@ -6406,7 +6409,7 @@ TDynamicObject::powertrain_sounds::render( TMoverParameters const &Vehicle, doub if( true == Vehicle.Mains ) { // TODO: separate engine and main circuit - // engine activation + engine_shutdown.stop(); engine_ignition .pitch( engine_ignition.m_frequencyoffset + engine_ignition.m_frequencyfactor * 1.f ) .gain( engine_ignition.m_amplitudeoffset + engine_ignition.m_amplitudefactor * 1.f ) @@ -6420,6 +6423,9 @@ TDynamicObject::powertrain_sounds::render( TMoverParameters const &Vehicle, doub else { // engine deactivation engine_ignition.stop(); + engine_shutdown.pitch( engine_shutdown.m_frequencyoffset + engine_shutdown.m_frequencyfactor * 1.f ) + .gain( engine_shutdown.m_amplitudeoffset + engine_shutdown.m_amplitudefactor * 1.f ) + .play( sound_flags::exclusive ); // main circuit linebreaker_open .pitch( linebreaker_open.m_frequencyoffset + linebreaker_open.m_frequencyfactor * 1.f ) diff --git a/DynObj.h b/DynObj.h index 3a99b2f6..6589cd10 100644 --- a/DynObj.h +++ b/DynObj.h @@ -338,6 +338,7 @@ private: sound_source rsWentylator { sound_placement::engine }; // McZapkie-030302 sound_source engine { sound_placement::engine }; // generally diesel engine sound_source engine_ignition { sound_placement::engine }; // moved from cab + sound_source engine_shutdown { sound_placement::engine }; bool engine_state_last { false }; // helper, cached previous state of the engine double engine_volume { 0.0 }; // MC: pomocnicze zeby gladziej silnik buczal sound_source engine_revving { sound_placement::engine }; // youBy