diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs index b427a13d8d..dd89558669 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs @@ -84,7 +84,7 @@ public sealed partial class PathfindingSystem component.Chunks.Clear(); } - private void UpdateGrid() + private void UpdateGrid(ParallelOptions options) { if (PauseUpdating) return; @@ -94,10 +94,6 @@ public sealed partial class PathfindingSystem var updateCount = 0; #endif _stopwatch.Restart(); - var options = new ParallelOptions() - { - MaxDegreeOfParallelism = 1, - }; // We defer chunk updates because rebuilding a navmesh is hella costly // Still run even when paused. @@ -157,10 +153,9 @@ public sealed partial class PathfindingSystem var doorQuery = GetEntityQuery(); var climbableQuery = GetEntityQuery(); var fixturesQuery = GetEntityQuery(); - var physicsQuery = GetEntityQuery(); var xformQuery = GetEntityQuery(); BuildBreadcrumbs(dirt[i], mapGridComp, accessQuery, destructibleQuery, doorQuery, climbableQuery, - fixturesQuery, physicsQuery, xformQuery); + fixturesQuery, xformQuery); }); const int Division = 4; @@ -427,7 +422,6 @@ public sealed partial class PathfindingSystem EntityQuery doorQuery, EntityQuery climbableQuery, EntityQuery fixturesQuery, - EntityQuery physicsQuery, EntityQuery xformQuery) { var sw = new Stopwatch(); diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs index fc9dc87c31..e29b2958b7 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs @@ -85,12 +85,18 @@ namespace Content.Server.NPC.Pathfinding public override void Update(float frameTime) { base.Update(frameTime); - UpdateGrid(); + var options = new ParallelOptions() + { + MaxDegreeOfParallelism = _parallel.ParallelProcessCount, + }; + + UpdateGrid(options); _stopwatch.Restart(); var amount = Math.Min(PathTickLimit, _pathRequests.Count); var results = ArrayPool.Shared.Rent(amount); - Parallel.For(0, amount, i => + + Parallel.For(0, amount, options, i => { // If we're over the limit (either time-sliced or hard cap). if (_stopwatch.Elapsed >= PathTime) diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.cs index 6fbc2baa82..dcfd7ecc5f 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.cs @@ -254,7 +254,7 @@ public sealed partial class NPCSteeringSystem : SharedNPCSteeringSystem // Dependency issues across threads. var options = new ParallelOptions { - MaxDegreeOfParallelism = _parallel.ParallelProcessCount, + MaxDegreeOfParallelism = 1, }; var curTime = _timing.CurTime;