Refactor single-thread worker

Re-parallel Hull Update
Use new gap shaffle algorithm
This commit is contained in:
NotAlwaysTrue
2026-04-30 20:05:23 +08:00
parent 099d664731
commit 02689d0d86
6 changed files with 90 additions and 26 deletions
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
using System.Linq;
using System.Collections.Generic;
using System;
using static Barotrauma.SingleThreadWorker;
#if DEBUG && CLIENT
@@ -261,7 +262,6 @@ namespace Barotrauma
Ragdoll.UpdateAll((float)deltaTime, Cam);
SingleThreadWorker.GlobalWorker.RunActions();
#if CLIENT
sw.Stop();
@@ -279,6 +279,9 @@ namespace Barotrauma
GameMain.PerformanceCounter.AddElapsedTicks("Update:Submarine", sw.ElapsedTicks);
sw.Restart();
#endif
SingleThreadActionStandbySignal.Wait();
try
{
GameMain.World.Step((float)Timing.Step);
@@ -290,6 +293,8 @@ namespace Barotrauma
GameAnalyticsManager.AddErrorEventOnce("GameScreen.Update:WorldLockedException" + e.Message, GameAnalyticsManager.ErrorSeverity.Critical, errorMsg);
}
SingleThreadActionStandbySignal.Release();
#if CLIENT
sw.Stop();
GameMain.PerformanceCounter.AddElapsedTicks("Update:Physics", sw.ElapsedTicks);