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

unified simulation sound sources, gfx namespace for gfx code and structures

This commit is contained in:
tmj-fstate
2017-11-12 00:23:21 +01:00
parent 492c1342b1
commit 5226fca281
36 changed files with 1487 additions and 1433 deletions

View File

@@ -612,14 +612,14 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
if ((TestFlag(MoverParameters->Couplers[0].CouplingFlag, ctrain_coupler)) &&
(MoverParameters->Couplers[0].Render))
{
btCoupler1.TurnOn();
btCoupler1.Turn( true );
btnOn = true;
}
// else btCoupler1.TurnOff();
if ((TestFlag(MoverParameters->Couplers[1].CouplingFlag, ctrain_coupler)) &&
(MoverParameters->Couplers[1].Render))
{
btCoupler2.TurnOn();
btCoupler2.Turn( true );
btnOn = true;
}
// else btCoupler2.TurnOff();
@@ -820,26 +820,26 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
// przewody sterowania ukrotnionego
if (TestFlag(MoverParameters->Couplers[0].CouplingFlag, ctrain_controll))
{
btCCtrl1.TurnOn();
btCCtrl1.Turn( true );
btnOn = true;
}
// else btCCtrl1.TurnOff();
if (TestFlag(MoverParameters->Couplers[1].CouplingFlag, ctrain_controll))
{
btCCtrl2.TurnOn();
btCCtrl2.Turn( true );
btnOn = true;
}
// else btCCtrl2.TurnOff();
// McZapkie-181103: mostki przejsciowe
if (TestFlag(MoverParameters->Couplers[0].CouplingFlag, ctrain_passenger))
{
btCPass1.TurnOn();
btCPass1.Turn( true );
btnOn = true;
}
// else btCPass1.TurnOff();
if (TestFlag(MoverParameters->Couplers[1].CouplingFlag, ctrain_passenger))
{
btCPass2.TurnOn();
btCPass2.Turn( true );
btnOn = true;
}
// else btCPass2.TurnOff();
@@ -849,7 +849,7 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
{
if (TestFlag(iLights[0], 2) || TestFlag(iLights[0], 32))
{
btEndSignals1.TurnOn();
btEndSignals1.Turn( true );
btnOn = true;
}
// else btEndSignals1.TurnOff();
@@ -858,13 +858,13 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
{
if (TestFlag(iLights[0], 2))
{
btEndSignals11.TurnOn();
btEndSignals11.Turn( true );
btnOn = true;
}
// else btEndSignals11.TurnOff();
if (TestFlag(iLights[0], 32))
{
btEndSignals13.TurnOn();
btEndSignals13.Turn( true );
btnOn = true;
}
// else btEndSignals13.TurnOff();
@@ -873,7 +873,7 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
{
if (TestFlag(iLights[1], 2) || TestFlag(iLights[1], 32))
{
btEndSignals2.TurnOn();
btEndSignals2.Turn( true );
btnOn = true;
}
// else btEndSignals2.TurnOff();
@@ -882,28 +882,28 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
{
if (TestFlag(iLights[1], 2))
{
btEndSignals21.TurnOn();
btEndSignals21.Turn( true );
btnOn = true;
}
// else btEndSignals21.TurnOff();
if (TestFlag(iLights[1], 32))
{
btEndSignals23.TurnOn();
btEndSignals23.Turn( true );
btnOn = true;
}
// else btEndSignals23.TurnOff();
}
}
// tablice blaszane:
if (TestFlag(iLights[0], 64))
if (TestFlag(iLights[side::front], light::rearendsignals))
{
btEndSignalsTab1.TurnOn();
btEndSignalsTab1.Turn( true );
btnOn = true;
}
// else btEndSignalsTab1.TurnOff();
if (TestFlag(iLights[1], 64))
if (TestFlag(iLights[side::rear], light::rearendsignals))
{
btEndSignalsTab2.TurnOn();
btEndSignalsTab2.Turn( true );
btnOn = true;
}
// else btEndSignalsTab2.TurnOff();
@@ -914,36 +914,17 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
smWahacze[i]->SetRotate(float3(1, 0, 0),
fWahaczeAmp * cos(MoverParameters->eAngle));
if (Mechanik)
{ // rysowanie figurki mechanika
/*
if (smMechanik0) // mechanik od strony sprzęgu 0
if (smMechanik1) // jak jest drugi, to pierwszego jedynie pokazujemy
smMechanik0->iVisible = MoverParameters->ActiveCab > 0;
else
{ // jak jest tylko jeden, to do drugiej kabiny go obracamy
smMechanik0->iVisible = (MoverParameters->ActiveCab != 0);
smMechanik0->SetRotate(
float3(0, 0, 1),
MoverParameters->ActiveCab >= 0 ? 0 : 180); // obrót względem osi Z
}
if (smMechanik1) // mechanik od strony sprzęgu 1
smMechanik1->iVisible = MoverParameters->ActiveCab < 0;
*/
if (MoverParameters->ActiveCab > 0)
{
btMechanik1.TurnOn();
btnOn = true;
}
if (MoverParameters->ActiveCab < 0)
{
btMechanik2.TurnOn();
btnOn = true;
}
if (Mechanik) {
// rysowanie figurki mechanika
if( MoverParameters->ActiveCab > 0 ) {
btMechanik1.Turn( true );
btnOn = true;
}
if( MoverParameters->ActiveCab < 0 ) {
btMechanik2.Turn( true );
btnOn = true;
}
}
// ABu: Przechyly na zakretach
// Ra: przechyłkę załatwiamy na etapie przesuwania modelu
// if (ObjSqrDist<80000) ABuModelRoll(); //przechyłki od 400m
}
if( MoverParameters->Battery || MoverParameters->ConverterFlag )
{ // sygnały czoła pociagu //Ra: wyświetlamy bez
@@ -951,37 +932,37 @@ void TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
// daleka
if (TestFlag(iLights[0], 1))
{
btHeadSignals11.TurnOn();
btHeadSignals11.Turn( true );
btnOn = true;
}
// else btHeadSignals11.TurnOff();
if (TestFlag(iLights[0], 4))
{
btHeadSignals12.TurnOn();
btHeadSignals12.Turn( true );
btnOn = true;
}
// else btHeadSignals12.TurnOff();
if (TestFlag(iLights[0], 16))
{
btHeadSignals13.TurnOn();
btHeadSignals13.Turn( true );
btnOn = true;
}
// else btHeadSignals13.TurnOff();
if (TestFlag(iLights[1], 1))
{
btHeadSignals21.TurnOn();
btHeadSignals21.Turn( true );
btnOn = true;
}
// else btHeadSignals21.TurnOff();
if (TestFlag(iLights[1], 4))
{
btHeadSignals22.TurnOn();
btHeadSignals22.Turn( true );
btnOn = true;
}
// else btHeadSignals22.TurnOff();
if (TestFlag(iLights[1], 16))
{
btHeadSignals23.TurnOn();
btHeadSignals23.Turn( true );
btnOn = true;
}
// else btHeadSignals23.TurnOff();
@@ -2926,12 +2907,13 @@ bool TDynamicObject::Update(double dt, double dt1)
}
Global::ABuDebug = dDOMoveLen / dt1;
ResetdMoveLen();
#ifdef EU07_USE_OLD_SOUNDCODE
// McZapkie-260202
// tupot mew, tfu, stukot kol:
// taka prowizorka zeby sciszyc stukot dalekiej lokomotywy
double ObjectDist;
double vol = 0;
// double freq; //Ra: nie używane
ObjectDist = SquareMagnitude(Global::pCameraPosition - vPosition);
// McZapkie-270202
if (MyTrack->fSoundDistance != -1)
@@ -2979,8 +2961,7 @@ bool TDynamicObject::Update(double dt, double dt1)
{
rsStukot[i + 1].Stop();
}
rsStukot[i].Play(vol, 0, MechInside,
vPosition); // poprawic pozycje o uklad osi
rsStukot[i].Play(vol, 0, MechInside, vPosition); // poprawic pozycje o uklad osi
if (i == 1)
MoverParameters->AccV -=
0.5 * GetVelocity() / (1 + MoverParameters->Vmax);
@@ -3018,7 +2999,7 @@ bool TDynamicObject::Update(double dt, double dt1)
else
rsUnbrake.Stop();
}
#endif
// fragment z EXE Kursa
/* if (MoverParameters->TrainType==dt_ET42)
{
@@ -3128,13 +3109,16 @@ bool TDynamicObject::Update(double dt, double dt1)
else if( ( true == MoverParameters->PantFrontUp )
&& ( PantDiff < 0.01 ) ) // tolerancja niedolegania
{
if ((MoverParameters->PantFrontVolt == 0.0) &&
(MoverParameters->PantRearVolt == 0.0))
sPantUp.Play(vol, 0, MechInside, vPosition);
if (p->hvPowerWire) // TODO: wyliczyć trzeba prąd przypadający na
// pantograf i
// wstawić do GetVoltage()
{
if( ( MoverParameters->PantFrontVolt == 0.0 )
&& ( MoverParameters->PantRearVolt == 0.0 ) ) {
#ifdef EU07_USE_OLD_SOUNDCODE
sPantUp.Play( vol, 0, MechInside, vPosition );
#else
sPantUp.play();
#endif
}
if (p->hvPowerWire) {
// TODO: wyliczyć trzeba prąd przypadający na pantograf i wstawić do GetVoltage()
MoverParameters->PantFrontVolt =
p->hvPowerWire->VoltageGet(MoverParameters->Voltage, fPantCurrent);
fCurrent -= fPantCurrent; // taki prąd płynie przez powyższy pantograf
@@ -3159,7 +3143,11 @@ bool TDynamicObject::Update(double dt, double dt1)
{
if( ( MoverParameters->PantRearVolt == 0.0 )
&& ( MoverParameters->PantFrontVolt == 0.0 ) ) {
#ifdef EU07_USE_OLD_SOUNDCODE
sPantUp.Play( vol, 0, MechInside, vPosition );
#else
sPantUp.play();
#endif
}
if (p->hvPowerWire) {
// TODO: wyliczyć trzeba prąd przypadający na pantograf i wstawić do GetVoltage()
@@ -3246,12 +3234,20 @@ bool TDynamicObject::Update(double dt, double dt1)
} // koniec pętli po pantografach
if ((MoverParameters->PantFrontSP == false) && (MoverParameters->PantFrontUp == false))
{
#ifdef EU07_USE_OLD_SOUNDCODE
sPantDown.Play(vol, 0, MechInside, vPosition);
#else
sPantDown.play();
#endif
MoverParameters->PantFrontSP = true;
}
if ((MoverParameters->PantRearSP == false) && (MoverParameters->PantRearUp == false))
{
#ifdef EU07_USE_OLD_SOUNDCODE
sPantDown.Play(vol, 0, MechInside, vPosition);
#else
sPantDown.play();
#endif
MoverParameters->PantRearSP = true;
}
/*
@@ -3354,24 +3350,40 @@ bool TDynamicObject::Update(double dt, double dt1)
// NBMX Obsluga drzwi, MC: zuniwersalnione
if ((dDoorMoveL < MoverParameters->DoorMaxShiftL) && (MoverParameters->DoorLeftOpened))
{
rsDoorOpen.Play(1, 0, MechInside, vPosition);
#ifdef EU07_USE_OLD_SOUNDCODE
rsDoorOpen.Play(1, 0, MechInside, vPosition);
#else
rsDoorOpen.play();
#endif
dDoorMoveL += dt1 * 0.5 * MoverParameters->DoorOpenSpeed;
}
if ((dDoorMoveL > 0) && (!MoverParameters->DoorLeftOpened))
{
rsDoorClose.Play(1, 0, MechInside, vPosition);
#ifdef EU07_USE_OLD_SOUNDCODE
rsDoorClose.Play(1, 0, MechInside, vPosition);
#else
rsDoorClose.play();
#endif
dDoorMoveL -= dt1 * MoverParameters->DoorCloseSpeed;
if (dDoorMoveL < 0)
dDoorMoveL = 0;
}
if ((dDoorMoveR < MoverParameters->DoorMaxShiftR) && (MoverParameters->DoorRightOpened))
{
rsDoorOpen.Play(1, 0, MechInside, vPosition);
#ifdef EU07_USE_OLD_SOUNDCODE
rsDoorOpen.Play(1, 0, MechInside, vPosition);
#else
rsDoorOpen.play();
#endif
dDoorMoveR += dt1 * 0.5 * MoverParameters->DoorOpenSpeed;
}
if ((dDoorMoveR > 0) && (!MoverParameters->DoorRightOpened))
{
rsDoorClose.Play(1, 0, MechInside, vPosition);
#ifdef EU07_USE_OLD_SOUNDCODE
rsDoorClose.Play(1, 0, MechInside, vPosition);
#else
rsDoorClose.play();
#endif
dDoorMoveR -= dt1 * MoverParameters->DoorCloseSpeed;
if (dDoorMoveR < 0)
dDoorMoveR = 0;
@@ -3465,8 +3477,8 @@ void TDynamicObject::TurnOff()
{ // wyłączenie rysowania submodeli zmiennych dla
// egemplarza pojazdu
btnOn = false;
btCoupler1.TurnOff();
btCoupler2.TurnOff();
btCoupler1.Turn( false );
btCoupler2.Turn( false );
btCPneumatic1.TurnOff();
btCPneumatic1r.TurnOff();
btCPneumatic2.TurnOff();
@@ -3475,45 +3487,41 @@ void TDynamicObject::TurnOff()
btPneumatic1r.TurnOff();
btPneumatic2.TurnOff();
btPneumatic2r.TurnOff();
btCCtrl1.TurnOff();
btCCtrl2.TurnOff();
btCPass1.TurnOff();
btCPass2.TurnOff();
btEndSignals11.TurnOff();
btEndSignals13.TurnOff();
btEndSignals21.TurnOff();
btEndSignals23.TurnOff();
btEndSignals1.TurnOff();
btEndSignals2.TurnOff();
btEndSignalsTab1.TurnOff();
btEndSignalsTab2.TurnOff();
btHeadSignals11.TurnOff();
btHeadSignals12.TurnOff();
btHeadSignals13.TurnOff();
btHeadSignals21.TurnOff();
btHeadSignals22.TurnOff();
btHeadSignals23.TurnOff();
btMechanik1.TurnOff();
btMechanik2.TurnOff();
btCCtrl1.Turn( false );
btCCtrl2.Turn( false );
btCPass1.Turn( false );
btCPass2.Turn( false );
btEndSignals11.Turn( false );
btEndSignals13.Turn( false );
btEndSignals21.Turn( false );
btEndSignals23.Turn( false );
btEndSignals1.Turn( false );
btEndSignals2.Turn( false );
btEndSignalsTab1.Turn( false );
btEndSignalsTab2.Turn( false );
btHeadSignals11.Turn( false );
btHeadSignals12.Turn( false );
btHeadSignals13.Turn( false );
btHeadSignals21.Turn( false );
btHeadSignals22.Turn( false );
btHeadSignals23.Turn( false );
btMechanik1.Turn( false );
btMechanik2.Turn( false );
};
void TDynamicObject::RenderSounds()
{ // przeliczanie dźwięków, bo będzie słychać bez wyświetlania sektora z pojazdem
// if( Global::iPause > 0 ) { return; }
// przeliczanie dźwięków, bo będzie słychać bez wyświetlania sektora z pojazdem
void TDynamicObject::RenderSounds() {
#ifdef EU07_USE_OLD_SOUNDCODE
// McZapkie-010302: ulepszony dzwiek silnika
double freq;
double vol = 0;
double dt = Timer::GetDeltaRenderTime();
// double sounddist;
// sounddist=SquareMagnitude(Global::pCameraPosition-vPosition);
if (MoverParameters->Power > 0)
{
if ((rsSilnik.AM != 0)
&& ((MoverParameters->Mains)
// McZapkie-280503: zeby dla dumb dzialal silnik na jalowych obrotach
// McZapkie-280503: zeby dla dumb dzialal silnik na jalowych obrotach
|| (MoverParameters->EngineType == DieselEngine)))
{
if ((fabs(MoverParameters->enrot) > 0.01) ||
@@ -3521,8 +3529,7 @@ void TDynamicObject::RenderSounds()
{
freq = rsSilnik.FM * fabs(MoverParameters->enrot) + rsSilnik.FA;
if (MoverParameters->EngineType == Dumb)
freq = freq -
0.2 * MoverParameters->EnginePower / (1 + MoverParameters->Power * 1000);
freq = freq - 0.2 * MoverParameters->EnginePower / (1 + MoverParameters->Power * 1000);
rsSilnik.AdjFreq(freq, dt);
if (MoverParameters->EngineType == DieselEngine)
{
@@ -3561,24 +3568,23 @@ void TDynamicObject::RenderSounds()
if (volrnd < 2)
vol = vol + volrnd / 200.0;
}
switch (MyTrack->eEnvironment)
{
case e_tunnel:
{
vol += 0.1;
switch( MyTrack->eEnvironment ) {
case e_tunnel: {
vol += 0.1;
break;
}
case e_canyon: {
vol += 0.05;
break;
}
default: {
break;
}
}
break;
case e_canyon:
{
vol += 0.05;
}
break;
}
if ((MoverParameters->DynamicBrakeFlag) && (MoverParameters->EnginePower > 0.1) &&
(MoverParameters->EngineType ==
ElectricSeriesMotor)) // Szociu - 29012012 - jeżeli uruchomiony
// jest hamulec
// elektrodynamiczny, odtwarzany jest dźwięk silnika
if( ( MoverParameters->DynamicBrakeFlag )
&& ( MoverParameters->EnginePower > 0.1 )
&& ( MoverParameters->EngineType == ElectricSeriesMotor ) )
// Szociu - 29012012 - jeżeli uruchomiony jest hamulec elektrodynamiczny, odtwarzany jest dźwięk silnika
vol += 0.8;
if (enginevolume > 0.0001)
@@ -3693,15 +3699,6 @@ void TDynamicObject::RenderSounds()
if (MoverParameters->BrakePress < 0.1)
releaser_vol = MoverParameters->BrakePress * 10;
sReleaser.UpdateAF(releaser_vol, 1, MechInside, GetPosition());
// if ((MoverParameters->ConverterFlag==false) &&
// (MoverParameters->TrainType!=dt_ET22))
// if
// ((MoverParameters->ConverterFlag==false)&&(MoverParameters->CompressorPower!=0))
// MoverParameters->CompressorFlag=false; //Ra: wywalić to stąd, tu tylko dla
// wyświetlanych!
// Ra: no to już wiemy, dlaczego pociągi jeżdżą lepiej, gdy się na nie patrzy!
// if (MoverParameters->CompressorPower==2)
// MoverParameters->CompressorAllow=MoverParameters->ConverterFlag;
// McZapkie! - dzwiek compressor.wav tylko gdy dziala sprezarka
if (MoverParameters->VeselVolume != 0)
@@ -3851,15 +3848,7 @@ void TDynamicObject::RenderSounds()
if (GetVelocity() == 0)
rsDerailment.Stop();
}
/* //Ra: dwa razy?
if (MoverParameters->EventFlag)
{
if (TestFlag(MoverParameters->DamageFlag,dtrain_out) && GetVelocity()>0)
rsDerailment.Play(1,0,true,GetPosition());
if (GetVelocity()==0)
rsDerailment.Stop();
}
*/
#endif
};
// McZapkie-250202
@@ -4560,10 +4549,16 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
parser.getTokens();
parser >> token;
if( token != "end" ) {
rsStukot[ i ].Init( token, dSDist, GetPosition().x,
GetPosition().y + dWheelsPosition[ i ], GetPosition().z,
#ifdef EU07_USE_OLD_SOUNDCODE
rsStukot[ i ].Init(
token, dSDist,
GetPosition().x, GetPosition().y + dWheelsPosition[ i ], GetPosition().z,
true );
}
#else
rsStukot[ i ].deserialize( token + " " + std::to_string( dSDist ), sound_type::single, sound_parameters::range );
// TODO: set per-wheel offset
#endif
}
}
if( token != "end" ) {
// TODO: double-check if this if() and/or retrieval makes sense here
@@ -4574,6 +4569,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
else if( ( token == "engine:" )
&& ( MoverParameters->Power > 0 ) ) {
// plik z dzwiekiem silnika, mnozniki i ofsety amp. i czest.
#ifdef EU07_USE_OLD_SOUNDCODE
double attenuation;
parser.getTokens( 2, false );
parser
@@ -4585,7 +4581,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
true, true );
if( rsSilnik.GetWaveTime() == 0 ) {
ErrorLog( "Missed sound: \"" + token + "\" for " + asFileName );
}
}
parser.getTokens( 1, false );
parser >> rsSilnik.AM;
if( MoverParameters->EngineType == DieselEngine ) {
@@ -4605,13 +4601,17 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
>> rsSilnik.AA
>> rsSilnik.FM // MoverParameters->nmax;
>> rsSilnik.FA;
#else
rsSilnik.deserialize( parser, sound_type::single, sound_parameters::range | sound_parameters::amplitude | sound_parameters::frequency );
#endif
}
else if( ( token == "ventilator:" )
&& ( ( MoverParameters->EngineType == ElectricSeriesMotor )
|| ( MoverParameters->EngineType == ElectricInductionMotor ) ) ) {
// plik z dzwiekiem wentylatora, mnozniki i ofsety amp. i czest.
double attenuation;
#ifdef EU07_USE_OLD_SOUNDCODE
double attenuation;
parser.getTokens( 2, false );
parser
>> token
@@ -4628,12 +4628,16 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
>> rsWentylator.FA;
rsWentylator.AM /= MoverParameters->RVentnmax;
rsWentylator.FM /= MoverParameters->RVentnmax;
#else
rsWentylator.deserialize( parser, sound_type::single, sound_parameters::range | sound_parameters::amplitude | sound_parameters::frequency );
#endif
}
else if( ( token == "transmission:" )
&& ( MoverParameters->EngineType == ElectricSeriesMotor ) ) {
// plik z dzwiekiem, mnozniki i ofsety amp. i czest.
double attenuation;
#ifdef EU07_USE_OLD_SOUNDCODE
double attenuation;
parser.getTokens( 2, false );
parser
>> token
@@ -4646,11 +4650,15 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
rsPrzekladnia.AA = 0.1;
rsPrzekladnia.FM = 0.005;
rsPrzekladnia.FA = 1.0;
#else
rsPrzekladnia.deserialize( parser, sound_type::single, sound_parameters::range | sound_parameters::amplitude | sound_parameters::frequency );
#endif
}
else if( token == "brake:" ){
// plik z piskiem hamulca, mnozniki i ofsety amplitudy.
double attenuation;
#ifdef EU07_USE_OLD_SOUNDCODE
double attenuation;
parser.getTokens( 2, false );
parser
>> token
@@ -4663,23 +4671,26 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
rsPisk.AA = parser.getToken<double>() * ( 105 - Random( 10 ) ) / 100;
rsPisk.FM = 1.0;
rsPisk.FA = 0.0;
#else
rsPisk.deserialize( parser, sound_type::single, sound_parameters::range | sound_parameters::amplitude );
#endif
}
else if( token == "brakeacc:" ) {
// plik z przyspieszaczem (upust po zlapaniu hamowania)
// sBrakeAcc.Init(str.c_str(),Parser->GetNextSymbol().ToDouble(),GetPosition().x,GetPosition().y,GetPosition().z,true);
parser.getTokens( 1, false ); parser >> token;
#ifdef EU07_USE_OLD_SOUNDCODE
parser.getTokens( 1, false ); parser >> token;
sBrakeAcc = TSoundsManager::GetFromName( token, true );
#else
sBrakeAcc.deserialize( parser, sound_type::single );
#endif
bBrakeAcc = true;
// sBrakeAcc.AM=1.0;
// sBrakeAcc.AA=0.0;
// sBrakeAcc.FM=1.0;
// sBrakeAcc.FA=0.0;
}
else if( token == "unbrake:" ) {
// plik z piskiem hamulca, mnozniki i ofsety amplitudy.
double attenuation;
#ifdef EU07_USE_OLD_SOUNDCODE
double attenuation;
parser.getTokens( 2, false );
parser
>> token
@@ -4692,11 +4703,15 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
rsUnbrake.AA = 0.0;
rsUnbrake.FM = 1.0;
rsUnbrake.FA = 0.0;
#else
rsUnbrake.deserialize( parser, sound_type::single, sound_parameters::range );
#endif
}
else if( token == "derail:" ) {
// dzwiek przy wykolejeniu
double attenuation;
#ifdef EU07_USE_OLD_SOUNDCODE
double attenuation;
parser.getTokens( 2, false );
parser
>> token
@@ -4709,11 +4724,15 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
rsDerailment.AA = 0.0;
rsDerailment.FM = 1.0;
rsDerailment.FA = 0.0;
#else
rsDerailment.deserialize( parser, sound_type::single, sound_parameters::range );
#endif
}
else if( token == "dieselinc:" ) {
// dzwiek przy wlazeniu na obroty woodwarda
double attenuation;
#ifdef EU07_USE_OLD_SOUNDCODE
double attenuation;
parser.getTokens( 2, false );
parser
>> token
@@ -4726,12 +4745,16 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
rsDiesielInc.AA = 0.0;
rsDiesielInc.FM = 1.0;
rsDiesielInc.FA = 0.0;
#else
rsDiesielInc.deserialize( parser, sound_type::single, sound_parameters::range );
#endif
}
else if( token == "curve:" ) {
double attenuation;
parser.getTokens( 2, false );
#ifdef EU07_USE_OLD_SOUNDCODE
parser.getTokens( 2, false );
parser
>> token
>> attenuation;
@@ -4743,91 +4766,143 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
rscurve.AA = 0.0;
rscurve.FM = 1.0;
rscurve.FA = 0.0;
#else
rscurve.deserialize( parser, sound_type::single, sound_parameters::range );
#endif
}
else if( token == "horn1:" ) {
// pliki z trabieniem
sHorn1.Load( parser, GetPosition() );
#ifdef EU07_USE_OLD_SOUNDCODE
sHorn1.Load( parser, GetPosition() );
#else
sHorn1.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
}
else if( token == "horn2:" ) {
// pliki z trabieniem wysokoton.
sHorn2.Load( parser, GetPosition() );
if( iHornWarning ) {
#ifdef EU07_USE_OLD_SOUNDCODE
sHorn2.Load( parser, GetPosition() );
#else
sHorn2.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
if( iHornWarning ) {
iHornWarning = 2; // numer syreny do użycia po otrzymaniu sygnału do jazdy
}
}
}
else if( token == "departuresignal:" ) {
// pliki z sygnalem odjazdu
sDepartureSignal.Load( parser, GetPosition() );
#ifdef EU07_USE_OLD_SOUNDCODE
sDepartureSignal.Load( parser, GetPosition() );
#else
sDepartureSignal.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
}
else if( token == "pantographup:" ) {
// pliki dzwiekow pantografow
parser.getTokens( 1, false ); parser >> token;
#ifdef EU07_USE_OLD_SOUNDCODE
parser.getTokens( 1, false ); parser >> token;
sPantUp.Init(
token, 50,
GetPosition().x, GetPosition().y, GetPosition().z,
true );
#else
sPantUp.deserialize( parser, sound_type::single );
#endif
}
else if( token == "pantographdown:" ) {
// pliki dzwiekow pantografow
parser.getTokens( 1, false ); parser >> token;
#ifdef EU07_USE_OLD_SOUNDCODE
parser.getTokens( 1, false ); parser >> token;
sPantDown.Init(
token, 50,
GetPosition().x, GetPosition().y, GetPosition().z,
true );
#else
sPantDown.deserialize( parser, sound_type::single );
#endif
}
else if( token == "compressor:" ) {
// pliki ze sprezarka
#ifdef EU07_USE_OLD_SOUNDCODE
sCompressor.Load( parser, GetPosition() );
#else
sCompressor.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
}
else if( token == "converter:" ) {
// pliki z przetwornica
// if (MoverParameters->EngineType==DieselElectric) //będzie modulowany?
sConverter.Load( parser, GetPosition() );
#ifdef EU07_USE_OLD_SOUNDCODE
sConverter.Load( parser, GetPosition() );
#else
sConverter.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
}
else if( token == "turbo:" ) {
// pliki z turbogeneratorem
sTurbo.Load( parser, GetPosition() );
#ifdef EU07_USE_OLD_SOUNDCODE
sTurbo.Load( parser, GetPosition() );
#else
sTurbo.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
}
else if( token == "small-compressor:" ) {
// pliki z przetwornica
sSmallCompressor.Load( parser, GetPosition() );
#ifdef EU07_USE_OLD_SOUNDCODE
sSmallCompressor.Load( parser, GetPosition() );
#else
sSmallCompressor.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
}
else if( token == "dooropen:" ) {
parser.getTokens( 1, false ); parser >> token;
#ifdef EU07_USE_OLD_SOUNDCODE
parser.getTokens( 1, false ); parser >> token;
rsDoorOpen.Init(
token, 50,
GetPosition().x, GetPosition().y, GetPosition().z,
true );
#else
rsDoorOpen.deserialize( parser, sound_type::single );
#endif
}
else if( token == "doorclose:" ) {
#ifdef EU07_USE_OLD_SOUNDCODE
parser.getTokens( 1, false ); parser >> token;
rsDoorClose.Init(
token, 50,
GetPosition().x, GetPosition().y, GetPosition().z,
true );
#else
rsDoorClose.deserialize( parser, sound_type::single );
#endif
}
else if( token == "sand:" ) {
// pliki z piasecznica
#ifdef EU07_USE_OLD_SOUNDCODE
// pliki z piasecznica
sSand.Load( parser, GetPosition() );
#else
sSand.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
}
else if( token == "releaser:" ) {
// pliki z odluzniaczem
sReleaser.Load( parser, GetPosition() );
#ifdef EU07_USE_OLD_SOUNDCODE
sReleaser.Load( parser, GetPosition() );
#else
sReleaser.deserialize( parser, sound_type::multipart, sound_parameters::range );
#endif
}
} while( ( token != "" )