|
17 | 17 |
|
18 | 18 | // This file is the responsibility of the 3D & Environment Team. |
19 | 19 |
|
| 20 | +using System; |
| 21 | +using System.Diagnostics; |
20 | 22 | using Microsoft.Xna.Framework; |
21 | 23 | using Orts.Common; |
22 | 24 | using ORTS.Common; |
@@ -48,6 +50,7 @@ public class World |
48 | 50 | int VisibleTileX; |
49 | 51 | int VisibleTileZ; |
50 | 52 | bool PerformanceTune; |
| 53 | + bool MarkSweepError; |
51 | 54 |
|
52 | 55 | [CallOnThread("Render")] |
53 | 56 | public World(Viewer viewer, double gameTime) |
@@ -100,25 +103,33 @@ public void Load() |
100 | 103 | { |
101 | 104 | TileX = VisibleTileX; |
102 | 105 | TileZ = VisibleTileZ; |
103 | | - Viewer.ShapeManager.Mark(); |
104 | | - Viewer.MaterialManager.Mark(); |
105 | | - Viewer.TextureManager.Mark(); |
106 | | - Viewer.SignalTypeDataManager.Mark(); |
107 | | - if (Viewer.Settings.UseMSTSEnv) |
108 | | - MSTSSky.Mark(); |
109 | | - else |
110 | | - Sky.Mark(); |
111 | | - Precipitation.Mark(); |
112 | | - Terrain.Mark(); |
113 | | - Scenery.Mark(); |
114 | | - Trains.Mark(); |
115 | | - RoadCars.Mark(); |
116 | | - Containers.Mark(); |
117 | | - Viewer.Mark(); |
118 | | - Viewer.ShapeManager.Sweep(); |
119 | | - Viewer.MaterialManager.Sweep(); |
120 | | - Viewer.TextureManager.Sweep(); |
121 | | - Viewer.SignalTypeDataManager.Sweep(); |
| 106 | + try |
| 107 | + { |
| 108 | + Viewer.ShapeManager.Mark(); |
| 109 | + Viewer.MaterialManager.Mark(); |
| 110 | + Viewer.TextureManager.Mark(); |
| 111 | + Viewer.SignalTypeDataManager.Mark(); |
| 112 | + if (Viewer.Settings.UseMSTSEnv) |
| 113 | + MSTSSky.Mark(); |
| 114 | + else |
| 115 | + Sky.Mark(); |
| 116 | + Precipitation.Mark(); |
| 117 | + Terrain.Mark(); |
| 118 | + Scenery.Mark(); |
| 119 | + Trains.Mark(); |
| 120 | + RoadCars.Mark(); |
| 121 | + Containers.Mark(); |
| 122 | + Viewer.Mark(); |
| 123 | + Viewer.ShapeManager.Sweep(); |
| 124 | + Viewer.MaterialManager.Sweep(); |
| 125 | + Viewer.TextureManager.Sweep(); |
| 126 | + Viewer.SignalTypeDataManager.Sweep(); |
| 127 | + } |
| 128 | + catch (Exception error) |
| 129 | + { |
| 130 | + if (!MarkSweepError) Trace.WriteLine(error); |
| 131 | + MarkSweepError = true; |
| 132 | + } |
122 | 133 | } |
123 | 134 | } |
124 | 135 |
|
|
0 commit comments