// ================================
internal static void Reset()
{
// track manager
TrackManager.CurrentTrack = new TrackManager.Track();
// train manager
TrainManager.Trains = new TrainManager.Train[] { };
// game
Interface.ClearMessages();
RouteComment = "";
RouteImage = "";
RouteAccelerationDueToGravity = 9.80665;
RouteRailGauge = 1.435;
RouteInitialAirPressure = 101325.0;
RouteInitialAirTemperature = 293.15;
RouteInitialElevation = 0.0;
RouteSeaLevelAirPressure = 101325.0;
RouteSeaLevelAirTemperature = 293.15;
Stations = new Station[] { };
Sections = new Section[] { };
BufferTrackPositions = new double[] { };
MarkerTextures = new int[] { };
PointsOfInterest = new PointOfInterest[] { };
BogusPretrainInstructions = new BogusPretrainInstruction[] { };
TrainName = "";
TrainStart = TrainStartMode.EmergencyBrakesNoAts;
PreviousFog = new Fog(0.0f, 0.0f, new World.ColorRGB(128, 128, 128), 0.0);
CurrentFog = new Fog(0.0f, 0.0f, new World.ColorRGB(128, 128, 128), 0.5);
NextFog = new Fog(0.0f, 0.0f, new World.ColorRGB(128, 128, 128), 1.0);
NoFogStart = (float)World.BackgroundImageDistance + 200.0f;
NoFogEnd = 2.0f * NoFogStart;
InfoTotalTriangles = 0;
InfoTotalTriangleStrip = 0;
InfoTotalQuads = 0;
InfoTotalQuadStrip = 0;
InfoTotalPolygon = 0;
// object manager
ObjectManager.Objects = new ObjectManager.StaticObject[16];
ObjectManager.ObjectsUsed = 0;
ObjectManager.ObjectsSortedByStart = new int[] { };
ObjectManager.ObjectsSortedByEnd = new int[] { };
ObjectManager.ObjectsSortedByStartPointer = 0;
ObjectManager.ObjectsSortedByEndPointer = 0;
ObjectManager.LastUpdatedTrackPosition = 0.0;
ObjectManager.AnimatedWorldObjects = new ObjectManager.AnimatedWorldObject[4];
ObjectManager.AnimatedWorldObjectsUsed = 0;
// renderer / sound
Renderer.Reset();
SoundManager.StopAllSounds(true);
GC.Collect();
}