Index: RunActivity/Viewer3D/Popups/OSDLocations.cs =================================================================== --- RunActivity/Viewer3D/Popups/OSDLocations.cs (revision 3996) +++ RunActivity/Viewer3D/Popups/OSDLocations.cs (working copy) @@ -22,6 +22,7 @@ using Orts.Simulation; using ORTS.Common; using System.Collections.Generic; +using System.Linq; namespace Orts.Viewer3D.Popups { @@ -50,6 +51,7 @@ Dictionary Sidings; int PlatformUpdate = 0; + bool lUpdateLabelLists = false; public OSDLocations(WindowManager owner) : base(owner, 0, 0, "OSD Locations") @@ -129,12 +131,13 @@ { if (updateFull) { - UpdateLabelLists(); + if (lUpdateLabelLists) UpdateLabelLists(); var labels = Labels; var newLabels = new Dictionary(labels.Count); var worldFiles = Owner.Viewer.World.Scenery.WorldFiles; var cameraLocation = Owner.Viewer.Camera.CameraWorldLocation; + foreach (var worldFile in worldFiles) { if ((State & DisplayState.Platforms) != 0 && worldFile.platforms != null) @@ -146,6 +149,10 @@ // Calculates distance between camera and platform label. var distance = WorldLocation.GetDistance(platform.Location.WorldLocation, cameraLocation).Length(); + //Allows to change the label intensity, at start time with DisplayState.Auto selected + if (!lUpdateLabelLists && Platforms.Count > 0 && Platforms.ElementAt(0).Key == platform.ItemName && distance >= MaximumDistancePlatform) + lUpdateLabelLists = true; + if (distance <= MaximumDistancePlatform) { if (labels.ContainsKey(platform)) @@ -169,6 +176,10 @@ // Calculates distance between camera and siding label. var distance = WorldLocation.GetDistance(siding.Location.WorldLocation, cameraLocation).Length(); + //Allows to change the label intensity at start time with DisplayState.Auto selected + if (!lUpdateLabelLists && Sidings.Count > 0 && Sidings.ElementAt(0).Key == siding.ItemName && distance >= MaximumDistanceSiding) + lUpdateLabelLists = true; + if (distance <= MaximumDistanceSiding) { if (labels.ContainsKey(siding))