From bd51b15af8998172550014e317b59cf76280975a Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 14 Dec 2021 00:51:10 +1100 Subject: [PATCH] Optimise do_after a bit (#5776) --- Content.Client/DoAfter/DoAfterSystem.cs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Content.Client/DoAfter/DoAfterSystem.cs b/Content.Client/DoAfter/DoAfterSystem.cs index 7f0be712bd..29aef68fb1 100644 --- a/Content.Client/DoAfter/DoAfterSystem.cs +++ b/Content.Client/DoAfter/DoAfterSystem.cs @@ -5,6 +5,7 @@ using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Shared.GameObjects; using Robust.Shared.IoC; +using Robust.Shared.Map; using Robust.Shared.Timing; namespace Content.Client.DoAfter @@ -55,28 +56,29 @@ namespace Content.Client.DoAfter return; var viewbox = _eyeManager.GetWorldViewport().Enlarged(2.0f); + var entXform = Transform(entity); + var playerPos = entXform.MapPosition; - foreach (var comp in EntityManager.EntityQuery(true)) + foreach (var (comp, xform) in EntityManager.EntityQuery(true)) { var doAfters = comp.DoAfters.ToList(); - var compPos = EntityManager.GetComponent(comp.Owner).WorldPosition; + var compPos = xform.MapPosition; if (doAfters.Count == 0 || - EntityManager.GetComponent(comp.Owner).MapID != EntityManager.GetComponent(entity).MapID || - !viewbox.Contains(compPos)) + compPos.MapId != entXform.MapID || + !viewbox.Contains(compPos.Position)) { comp.Disable(); continue; } - var range = (compPos - EntityManager.GetComponent(entity).WorldPosition).Length + - 0.01f; + var range = (compPos.Position - playerPos.Position).Length + 0.01f; if (comp.Owner != _attachedEntity && !ExamineSystemShared.InRangeUnOccluded( - EntityManager.GetComponent(entity).MapPosition, - EntityManager.GetComponent(comp.Owner).MapPosition, range, - entity => entity == comp.Owner || entity == _attachedEntity)) + playerPos, + compPos, range, + ent => ent == comp.Owner || ent == _attachedEntity)) { comp.Disable(); continue; @@ -84,7 +86,7 @@ namespace Content.Client.DoAfter comp.Enable(); - var userGrid = EntityManager.GetComponent(comp.Owner).Coordinates; + var userGrid = xform.Coordinates; // Check cancellations / finishes foreach (var (id, doAfter) in doAfters) @@ -117,7 +119,7 @@ namespace Content.Client.DoAfter if (doAfter.BreakOnTargetMove) { if (EntityManager.EntityExists(doAfter.TargetUid) && - !EntityManager.GetComponent(doAfter.TargetUid).Coordinates.InRange(EntityManager, doAfter.TargetGrid, + !Transform(doAfter.TargetUid).Coordinates.InRange(EntityManager, doAfter.TargetGrid, doAfter.MovementThreshold)) { comp.Cancel(id, currentTime);