Skip to content

Commit f6bf9fa

Browse files
committed
Add distance figure between car and camera
1 parent 90bbcff commit f6bf9fa

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

Source/Orts.Formats.Msts/SoundManagmentFile.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ public struct CurvePoint
243243

244244
public class VolumeCurve
245245
{
246-
public enum Controls { None, DistanceControlled, SpeedControlled, Variable1Controlled, Variable1_2Controlled, Variable1_3Controlled, Variable1_4Controlled, Variable2Controlled, Variable2BoosterControlled, Variable3Controlled, BrakeCylControlled, CurveForceControlled, AngleofAttackControlled, CarFrictionControlled, WheelRpMControlled };
246+
public enum Controls { None, DistanceControlled, SpeedControlled, Variable1Controlled, Variable1_2Controlled, Variable1_3Controlled, Variable1_4Controlled, Variable2Controlled, Variable2BoosterControlled, Variable3Controlled, BrakeCylControlled, CurveForceControlled, AngleofAttackControlled, CarFrictionControlled, WheelRpMControlled, CarDistanceTrackControlled };
247247

248248
public Controls Control = Controls.None;
249249
public float Granularity = 1.0f;
@@ -270,6 +270,7 @@ public VolumeCurve(STFReader stf)
270270
case "angleofattackcontrolled": Control = Controls.AngleofAttackControlled; break;
271271
case "carfrictioncontrolled": Control = Controls.CarFrictionControlled; break;
272272
case "wheelrpmcontrolled": Control = Controls.WheelRpMControlled; break;
273+
case "distancetrackcontrolled": Control = Controls.CarDistanceTrackControlled; break;
273274
default: STFException.TraceWarning(stf, "Crash expected: Skipped unknown VolumeCurve/Frequencycurve type " + type); stf.SkipRestOfBlock(); return;
274275
}
275276
stf.ParseBlock(new STFReader.TokenProcessor[] {

Source/Orts.Simulation/Simulation/RollingStocks/TrainCar.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,7 @@ public Direction Direction
599599
float jointTriggerDelayedS = 0.1f; // Set delay to 0.1 seconds
600600
float jointSpeedMpS;
601601
public float SoundAxleCount;
602+
public float CarTrackControlledDistanceM = 0;
602603

603604
// Track sound effects - switch / crossover
604605
public float TrackSwitchSoundTriggered;

Source/RunActivity/Viewer3D/Sound.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,13 @@ public void UpdateTType(bool stateChange)
330330
Car.TrackSoundLocation = new WorldLocation(Car.WorldPosition.WorldLocation);
331331
_prevTType = _curTType;
332332
}
333+
334+
if (SharedSMSFileManager.PlayDefaultTrackSoundsContinuous)
335+
{
336+
// Calculate the distance from the car to the camera position. Used for track based sounds
337+
Car.CarTrackControlledDistanceM = (float)Math.Sqrt(WorldLocation.GetDistanceSquared(Car.WorldPosition.WorldLocation, Viewer.Camera.CameraWorldLocation));
338+
}
339+
333340
}
334341
}
335342

@@ -1538,6 +1545,7 @@ private float ReadValue(Orts.Formats.Msts.VolumeCurve.Controls control, MSTSWago
15381545
case Orts.Formats.Msts.VolumeCurve.Controls.AngleofAttackControlled: return car.CurveSquealAoAmRadFiltered;
15391546
case Orts.Formats.Msts.VolumeCurve.Controls.CarFrictionControlled: return car.Train.WagonCoefficientFriction;
15401547
case Orts.Formats.Msts.VolumeCurve.Controls.WheelRpMControlled: var wheelRpM = pS.TopM((float)(car.AbsSpeedMpS / (2 * Math.PI * car.WheelRadiusM))); return wheelRpM;
1548+
case Orts.Formats.Msts.VolumeCurve.Controls.CarDistanceTrackControlled: return car.CarTrackControlledDistanceM;
15411549
default: return 0;
15421550
}
15431551
}

0 commit comments

Comments
 (0)