diff --git a/Content.Client/Maps/GridDraggingSystem.cs b/Content.Client/Maps/GridDraggingSystem.cs index a4883f73cf..5440f1624f 100644 --- a/Content.Client/Maps/GridDraggingSystem.cs +++ b/Content.Client/Maps/GridDraggingSystem.cs @@ -102,7 +102,7 @@ public sealed class GridDraggingSystem : SharedGridDraggingSystem if (!_mapManager.TryFindGridAt(mousePos, out var gridUid, out var grid)) return; - StartDragging(gridUid, Vector2.Transform(mousePos.Position, Transform(gridUid).InvWorldMatrix)); + StartDragging(gridUid, Vector2.Transform(mousePos.Position, _transformSystem.GetInvWorldMatrix(gridUid))); } if (!TryComp(_dragging, out TransformComponent? xform)) @@ -117,7 +117,7 @@ public sealed class GridDraggingSystem : SharedGridDraggingSystem return; } - var localToWorld = Vector2.Transform(_localPosition, xform.WorldMatrix); + var localToWorld = Vector2.Transform(_localPosition, _transformSystem.GetWorldMatrix(xform)); if (localToWorld.EqualsApprox(mousePos.Position, 0.01f)) return; diff --git a/Content.Client/Shuttles/Systems/ShuttleSystem.EmergencyConsole.cs b/Content.Client/Shuttles/Systems/ShuttleSystem.EmergencyConsole.cs index 73c11de279..56b54c176a 100644 --- a/Content.Client/Shuttles/Systems/ShuttleSystem.EmergencyConsole.cs +++ b/Content.Client/Shuttles/Systems/ShuttleSystem.EmergencyConsole.cs @@ -23,7 +23,7 @@ public sealed partial class ShuttleSystem : SharedShuttleSystem if (_enableShuttlePosition) { - _overlay = new EmergencyShuttleOverlay(EntityManager); + _overlay = new EmergencyShuttleOverlay(EntityManager.TransformQuery, XformSystem); overlayManager.AddOverlay(_overlay); RaiseNetworkEvent(new EmergencyShuttleRequestPositionMessage()); } @@ -57,23 +57,26 @@ public sealed partial class ShuttleSystem : SharedShuttleSystem /// public sealed class EmergencyShuttleOverlay : Overlay { - private IEntityManager _entManager; + private readonly EntityQuery _transformQuery; + private readonly SharedTransformSystem _transformSystem; public override OverlaySpace Space => OverlaySpace.WorldSpace; public EntityUid? StationUid; public Box2? Position; - public EmergencyShuttleOverlay(IEntityManager entManager) + public EmergencyShuttleOverlay(EntityQuery transformQuery, SharedTransformSystem transformSystem) { - _entManager = entManager; + _transformQuery = transformQuery; + _transformSystem = transformSystem; } protected override void Draw(in OverlayDrawArgs args) { - if (Position == null || !_entManager.TryGetComponent(StationUid, out var xform)) return; + if (Position == null || !_transformQuery.TryGetComponent(StationUid, out var xform)) + return; - args.WorldHandle.SetTransform(xform.WorldMatrix); + args.WorldHandle.SetTransform(_transformSystem.GetWorldMatrix(xform)); args.WorldHandle.DrawRect(Position.Value, Color.Red.WithAlpha(100)); args.WorldHandle.SetTransform(Matrix3x2.Identity); } diff --git a/Content.Server/Explosion/EntitySystems/ExplosionGridTileFlood.cs b/Content.Server/Explosion/EntitySystems/ExplosionGridTileFlood.cs index 556e3771d2..fd5a895481 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionGridTileFlood.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionGridTileFlood.cs @@ -73,13 +73,14 @@ public sealed class ExplosionGridTileFlood : ExplosionTileFlood var transformSystem = entityManager.System(); var transform = entityManager.GetComponent(Grid.Owner); - var size = (float) Grid.TileSize; + var size = (float)Grid.TileSize; _matrix.M31 = size / 2; _matrix.M32 = size / 2; Matrix3x2.Invert(spaceMatrix, out var invSpace); - _matrix *= transform.WorldMatrix * invSpace; - var relativeAngle = transformSystem.GetWorldRotation(transform) - spaceAngle; + var (_, relativeAngle, worldMatrix) = transformSystem.GetWorldPositionRotationMatrix(transform); + relativeAngle -= spaceAngle; + _matrix *= worldMatrix * invSpace; _offset = relativeAngle.RotateVec(new Vector2(size / 4, size / 4)); } diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs index be6b9148a4..3be64e1776 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs @@ -71,8 +71,7 @@ public sealed partial class ExplosionSystem { var targetGrid = Comp(referenceGrid.Value); var xform = Transform(referenceGrid.Value); - targetAngle = _transformSystem.GetWorldRotation(xform); - targetMatrix = xform.InvWorldMatrix; + (_, targetAngle, targetMatrix) = _transformSystem.GetWorldPositionRotationInvMatrix(xform); tileSize = targetGrid.TileSize; } diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.TileFill.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.TileFill.cs index 2946748e5d..43cc45beac 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.TileFill.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.TileFill.cs @@ -89,8 +89,7 @@ public sealed partial class ExplosionSystem if (referenceGrid != null) { var xform = Transform(Comp(referenceGrid.Value).Owner); - spaceMatrix = xform.WorldMatrix; - spaceAngle = _transformSystem.GetWorldRotation(xform); + (_, spaceAngle, spaceMatrix) = _transformSystem.GetWorldPositionRotationMatrix(xform); } // is the explosion starting on a grid? diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index f6bf7c635e..ed1246f789 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -423,7 +423,7 @@ namespace Content.Server.GameTicking { var gridXform = Transform(gridUid); - return new EntityCoordinates(gridUid, Vector2.Transform(toMap.Position, gridXform.InvWorldMatrix)); + return new EntityCoordinates(gridUid, Vector2.Transform(toMap.Position, _transform.GetInvWorldMatrix(gridXform))); } return spawn; diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Distance.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Distance.cs index b986ed5259..2348b25cbf 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Distance.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Distance.cs @@ -36,7 +36,7 @@ public sealed partial class PathfindingSystem return Vector2.Zero; } - endPos = Vector2.Transform(Vector2.Transform(endPos, endXform.WorldMatrix), startXform.InvWorldMatrix); + endPos = Vector2.Transform(Vector2.Transform(endPos, _transform.GetWorldMatrix(endXform)), _transform.GetInvWorldMatrix(startXform)); } // TODO: Numerics when we changeover. diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs index b2958f0ccb..525f2417ce 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs @@ -405,7 +405,7 @@ namespace Content.Server.NPC.Pathfinding return null; } - var localPos = Vector2.Transform(coordinates.ToMapPos(EntityManager, _transform), xform.InvWorldMatrix); + var localPos = Vector2.Transform(coordinates.ToMapPos(EntityManager, _transform), _transform.GetInvWorldMatrix(xform)); var origin = GetOrigin(localPos); if (!TryGetChunk(origin, comp, out var chunk))