diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Gap.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Gap.cs index 3fe156958..5132d1418 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Gap.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Gap.cs @@ -746,7 +746,6 @@ namespace Barotrauma waterFlowThisFrame = 0.0f; } - private static readonly ConcurrentBag checkedHulls = new ConcurrentBag(); /// /// Simulates water flow from the source to all the hulls it's connected to across the sub, as if the water was coming directly from outside. @@ -754,7 +753,7 @@ namespace Barotrauma /// void SimulateWaterFlowFromOutsideToConnectedHulls(Hull hull, float maxFlow, float deltaTime) { - checkedHulls.Clear(); + List checkedHulls = new List(); checkedHulls.Add(hull); foreach (var connectedGap in hull.ConnectedGaps) { @@ -765,7 +764,7 @@ namespace Barotrauma } } - static void SimulateWaterFlowFromOutsideToConnectedHullsRecursive(Hull targetHull, Gap gap, ConcurrentBag checkedHulls, Hull originHull, float maxFlow, float deltaTime) + static void SimulateWaterFlowFromOutsideToConnectedHullsRecursive(Hull targetHull, Gap gap, List checkedHulls, Hull originHull, float maxFlow, float deltaTime) { const float decay = 0.95f; @@ -996,8 +995,6 @@ namespace Barotrauma base.Remove(); GapList.Remove(this); - checkedHulls.Clear(); - foreach (Hull hull in Hull.HullList) { hull.ConnectedGaps.Remove(this); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs index 2634f9560..7ef1b529e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs @@ -655,13 +655,13 @@ namespace Barotrauma // First phase: parallel updates that have no order dependencies Parallel.Invoke(parallelOptions, - // Hull parallel update () => { - Parallel.ForEach(hullList, parallelOptions, hull => + // basically nothing here is thread-safe so + foreach(var hull in hullList) { hull.Update(deltaTime, cam); - }); + } }, // Structure parallel update () =>