]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Replace xform.WorldPosition with xformSystem method for Setting/Getting (#30029)
authorPlykiya <58439124+Plykiya@users.noreply.github.com>
Tue, 6 Aug 2024 11:02:01 +0000 (04:02 -0700)
committerGitHub <noreply@github.com>
Tue, 6 Aug 2024 11:02:01 +0000 (21:02 +1000)
* GET WORLD POSITON, ROTATION

* Missing parentheses

* ui system depndency

* the issue

* Unused

* Let the function do the transform

---------

Co-authored-by: plykiya <plykiya@protonmail.com>
35 files changed:
Content.Client/Chat/UI/SpeechBubble.cs
Content.Client/Explosion/ExplosionOverlay.cs
Content.Client/Fluids/PuddleOverlay.cs
Content.Client/Interaction/DragDropSystem.cs
Content.Client/Maps/GridDraggingSystem.cs
Content.Client/NPC/HTN/HTNOverlay.cs
Content.Client/NPC/NPCSteeringSystem.cs
Content.Client/NetworkConfigurator/NetworkConfiguratorLinkOverlay.cs
Content.Client/NodeContainer/NodeVisualizationOverlay.cs
Content.Client/Outline/TargetOutlineSystem.cs
Content.Client/Stealth/StealthSystem.cs
Content.Client/Tabletop/TabletopSystem.cs
Content.Client/UserInterface/Systems/Viewport/ViewportUIController.cs
Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs
Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs
Content.Server/Chemistry/EntitySystems/VaporSystem.cs
Content.Server/Commands/CommandUtils.cs
Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs
Content.Server/Dragon/DragonSystem.cs
Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs
Content.Server/Explosion/EntitySystems/ExplosionSystem.cs
Content.Server/Hands/Systems/HandsSystem.cs
Content.Server/Maps/GridDraggingSystem.cs
Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs
Content.Server/Movement/StressTestMovementSystem.cs
Content.Server/Pointing/EntitySystems/RoguePointingSystem.cs
Content.Server/Respawn/SpecialRespawnSystem.cs
Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs
Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs
Content.Server/Singularity/EntitySystems/ContainmentFieldSystem.cs
Content.Server/Solar/EntitySystems/PowerSolarSystem.cs
Content.Server/Worldgen/Systems/BaseWorldSystem.cs
Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ThrowArtifactSystem.cs
Content.Shared/Construction/Conditions/WallmountCondition.cs
Content.Shared/Tiles/FloorTileSystem.cs

index 68c937a788551e82bb0b9f9683df5d37dec66794..adb61d10e62712a43f30d7ae25b179d1b2a6d467 100644 (file)
@@ -16,6 +16,7 @@ namespace Content.Client.Chat.UI
         [Dependency] private readonly IEyeManager _eyeManager = default!;
         [Dependency] private readonly IEntityManager _entityManager = default!;
         [Dependency] protected readonly IConfigurationManager ConfigManager = default!;
+        private readonly SharedTransformSystem _transformSystem;
 
         public enum SpeechType : byte
         {
@@ -83,6 +84,7 @@ namespace Content.Client.Chat.UI
         {
             IoCManager.InjectDependencies(this);
             _senderEntity = senderEntity;
+            _transformSystem = _entityManager.System<SharedTransformSystem>();
 
             // Use text clipping so new messages don't overlap old ones being pushed up.
             RectClipContent = true;
@@ -140,7 +142,7 @@ namespace Content.Client.Chat.UI
             }
 
             var offset = (-_eyeManager.CurrentEye.Rotation).ToWorldVec() * -EntityVerticalOffset;
-            var worldPos = xform.WorldPosition + offset;
+            var worldPos = _transformSystem.GetWorldPosition(xform) + offset;
 
             var lowerCenter = _eyeManager.WorldToScreen(worldPos) / UIScale;
             var screenPos = lowerCenter - new Vector2(ContentSize.X / 2, ContentSize.Y + _verticalOffsetAchieved);
index 653f63e0f9026a379cc3b77e6440199794a4f7dd..a005d0317b19359f3d6dcac7d914d2359f2a95a5 100644 (file)
@@ -16,6 +16,7 @@ public sealed class ExplosionOverlay : Overlay
     [Dependency] private readonly IRobustRandom _robustRandom = default!;
     [Dependency] private readonly IEntityManager _entMan = default!;
     [Dependency] private readonly IPrototypeManager _proto = default!;
+    private readonly SharedTransformSystem _transformSystem;
     private SharedAppearanceSystem _appearance;
 
     public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
@@ -26,6 +27,7 @@ public sealed class ExplosionOverlay : Overlay
     {
         IoCManager.InjectDependencies(this);
         _shader = _proto.Index<ShaderPrototype>("unshaded").Instance();
+        _transformSystem = _entMan.System<SharedTransformSystem>();
         _appearance = appearanceSystem;
     }
 
@@ -68,7 +70,7 @@ public sealed class ExplosionOverlay : Overlay
                 continue;
 
             var xform = xforms.GetComponent(gridId);
-            var (_, _, worldMatrix, invWorldMatrix) = xform.GetWorldPositionRotationMatrixWithInv(xforms);
+            var (_, _, worldMatrix, invWorldMatrix) = _transformSystem.GetWorldPositionRotationMatrixWithInv(xform, xforms);
 
             gridBounds = invWorldMatrix.TransformBox(worldBounds).Enlarged(grid.TileSize * 2);
             drawHandle.SetTransform(worldMatrix);
index a8c1d355105bf3dda9d85bae22d54eb2049682b7..caa5a92580795158220e1d7d400ae5c973ac2be5 100644 (file)
@@ -14,6 +14,7 @@ public sealed class PuddleOverlay : Overlay
     [Dependency] private readonly IEntityManager _entityManager = default!;
     [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!;
     private readonly PuddleDebugOverlaySystem _debugOverlaySystem;
+    private readonly SharedTransformSystem _transformSystem;
 
     private readonly Color _heavyPuddle = new(0, 255, 255, 50);
     private readonly Color _mediumPuddle = new(0, 150, 255, 50);
@@ -29,6 +30,7 @@ public sealed class PuddleOverlay : Overlay
         _debugOverlaySystem = _entitySystemManager.GetEntitySystem<PuddleDebugOverlaySystem>();
         var cache = IoCManager.Resolve<IResourceCache>();
         _font = new VectorFont(cache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 8);
+        _transformSystem = _entityManager.System<SharedTransformSystem>();
     }
 
     protected override void Draw(in OverlayDrawArgs args)
@@ -56,7 +58,7 @@ public sealed class PuddleOverlay : Overlay
                 continue;
 
             var gridXform = xformQuery.GetComponent(gridId);
-            var (_, _, worldMatrix, invWorldMatrix) = gridXform.GetWorldPositionRotationMatrixWithInv(xformQuery);
+            var (_, _, worldMatrix, invWorldMatrix) = _transformSystem.GetWorldPositionRotationMatrixWithInv(gridXform, xformQuery);
             gridBounds = invWorldMatrix.TransformBox(args.WorldBounds).Enlarged(mapGrid.TileSize * 2);
             drawHandle.SetTransform(worldMatrix);
 
@@ -89,7 +91,7 @@ public sealed class PuddleOverlay : Overlay
                 continue;
 
             var gridXform = xformQuery.GetComponent(gridId);
-            var (_, _, matrix, invMatrix) = gridXform.GetWorldPositionRotationMatrixWithInv(xformQuery);
+            var (_, _, matrix, invMatrix) = _transformSystem.GetWorldPositionRotationMatrixWithInv(gridXform, xformQuery);
             var gridBounds = invMatrix.TransformBox(args.WorldBounds).Enlarged(mapGrid.TileSize * 2);
 
             foreach (var debugOverlayData in _debugOverlaySystem.GetData(gridId))
index d249766bbccaf46192c7d54540401dfdcd0d86b0..aab6a6277625651a7c94dac374c6317b358c212d 100644 (file)
@@ -42,6 +42,7 @@ public sealed class DragDropSystem : SharedDragDropSystem
     [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!;
     [Dependency] private readonly EntityLookupSystem _lookup = default!;
     [Dependency] private readonly SharedPopupSystem _popup = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     // how often to recheck possible targets (prevents calling expensive
     // check logic each update)
@@ -551,7 +552,7 @@ public sealed class DragDropSystem : SharedDragDropSystem
         if (Exists(_dragShadow))
         {
             var mousePos = _eyeManager.PixelToMap(_inputManager.MouseScreenPosition);
-            Transform(_dragShadow.Value).WorldPosition = mousePos.Position;
+            _transformSystem.SetWorldPosition(_dragShadow.Value, mousePos.Position);
         }
     }
 }
index 5e9250f0ce96d820237ac1cc135f4d18d5cdcc9d..5bbf5ff500642a035c9c9b28fbe7c50b4fc4e018 100644 (file)
@@ -18,6 +18,7 @@ public sealed class GridDraggingSystem : SharedGridDraggingSystem
     [Dependency] private readonly IInputManager _inputManager = default!;
     [Dependency] private readonly IMapManager _mapManager = default!;
     [Dependency] private readonly InputSystem _inputSystem = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     public bool Enabled { get; set; }
 
@@ -62,11 +63,11 @@ public sealed class GridDraggingSystem : SharedGridDraggingSystem
         if (_dragging == null) return;
 
         if (_lastMousePosition != null && TryComp(_dragging.Value, out TransformComponent? xform) &&
-            TryComp<PhysicsComponent>(_dragging.Value, out var body) &&
+            TryComp<PhysicsComponent>(_dragging.Value, out _) &&
             xform.MapID == _lastMousePosition.Value.MapId)
         {
             var tickTime = _gameTiming.TickPeriod;
-            var distance = _lastMousePosition.Value.Position - xform.WorldPosition;
+            var distance = _lastMousePosition.Value.Position - _transformSystem.GetWorldPosition(xform);
             RaiseNetworkEvent(new GridDragVelocityRequest()
             {
                 Grid = GetNetEntity(_dragging.Value),
index ad173f3b29c760b7bcefbde76979efbdc93a23ca..2cb02f10864530cd3a652d848913375848684b86 100644 (file)
@@ -9,6 +9,7 @@ public sealed class HTNOverlay : Overlay
 {
     private readonly IEntityManager _entManager = default!;
     private readonly Font _font = default!;
+    private readonly SharedTransformSystem _transformSystem;
 
     public override OverlaySpace Space => OverlaySpace.ScreenSpace;
 
@@ -16,6 +17,7 @@ public sealed class HTNOverlay : Overlay
     {
         _entManager = entManager;
         _font = new VectorFont(resourceCache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10);
+        _transformSystem = _entManager.System<SharedTransformSystem>();
     }
 
     protected override void Draw(in OverlayDrawArgs args)
@@ -30,7 +32,7 @@ public sealed class HTNOverlay : Overlay
             if (string.IsNullOrEmpty(comp.DebugText) || xform.MapID != args.MapId)
                 continue;
 
-            var worldPos = xform.WorldPosition;
+            var worldPos = _transformSystem.GetWorldPosition(xform);
 
             if (!args.WorldAABB.Contains(worldPos))
                 continue;
index bb2145bce0c92bc8d22d0a4c7f3d313484ea0ac5..eda3d74cf7151b9003be5fe9bf1778843d9c9174 100644 (file)
@@ -81,10 +81,12 @@ public sealed class NPCSteeringOverlay : Overlay
     public override OverlaySpace Space => OverlaySpace.WorldSpace;
 
     private readonly IEntityManager _entManager;
+    private readonly SharedTransformSystem _transformSystem;
 
     public NPCSteeringOverlay(IEntityManager entManager)
     {
         _entManager = entManager;
+        _transformSystem = _entManager.System<SharedTransformSystem>();
     }
 
     protected override void Draw(in OverlayDrawArgs args)
@@ -96,7 +98,7 @@ public sealed class NPCSteeringOverlay : Overlay
                 continue;
             }
 
-            var (worldPos, worldRot) = xform.GetWorldPositionRotation();
+            var (worldPos, worldRot) = _transformSystem.GetWorldPositionRotation(xform);
 
             if (!args.WorldAABB.Contains(worldPos))
                 continue;
index 4fcdada86842ec8842d5e11d422513f9ee25c4d0..19da5aa95949ec44841e74280d1409c91d21a9ef 100644 (file)
@@ -12,6 +12,7 @@ public sealed class NetworkConfiguratorLinkOverlay : Overlay
     [Dependency] private readonly IEntityManager _entityManager = default!;
     [Dependency] private readonly IRobustRandom _random = default!;
     private readonly DeviceListSystem _deviceListSystem;
+    private readonly SharedTransformSystem _transformSystem;
 
     public Dictionary<EntityUid, Color> Colors = new();
     public EntityUid? Action;
@@ -23,6 +24,7 @@ public sealed class NetworkConfiguratorLinkOverlay : Overlay
         IoCManager.InjectDependencies(this);
 
         _deviceListSystem = _entityManager.System<DeviceListSystem>();
+        _transformSystem = _entityManager.System<SharedTransformSystem>();
     }
 
     protected override void Draw(in OverlayDrawArgs args)
@@ -66,7 +68,7 @@ public sealed class NetworkConfiguratorLinkOverlay : Overlay
                     continue;
                 }
 
-                args.WorldHandle.DrawLine(sourceTransform.WorldPosition, linkTransform.WorldPosition, Colors[uid]);
+                args.WorldHandle.DrawLine(_transformSystem.GetWorldPosition(sourceTransform), _transformSystem.GetWorldPosition(linkTransform), Colors[uid]);
             }
         }
     }
index 4e8a4a10ca6d9c284f72d3d4e28600e0c12a694f..b0bdf8ed87d751da257a69eab5066a8d0d4bc7e3 100644 (file)
@@ -20,6 +20,7 @@ namespace Content.Client.NodeContainer
         private readonly IMapManager _mapManager;
         private readonly IInputManager _inputManager;
         private readonly IEntityManager _entityManager;
+        private readonly SharedTransformSystem _transformSystem;
 
         private readonly Dictionary<(int, int), NodeRenderData> _nodeIndex = new();
         private readonly Dictionary<EntityUid, Dictionary<Vector2i, List<(GroupData, NodeDatum)>>> _gridIndex = new ();
@@ -46,6 +47,7 @@ namespace Content.Client.NodeContainer
             _mapManager = mapManager;
             _inputManager = inputManager;
             _entityManager = entityManager;
+            _transformSystem = _entityManager.System<SharedTransformSystem>();
 
             _font = cache.GetFont("/Fonts/NotoSans/NotoSans-Regular.ttf", 12);
         }
@@ -146,7 +148,7 @@ namespace Content.Client.NodeContainer
             foreach (var (gridId, gridDict) in _gridIndex)
             {
                 var grid = _entityManager.GetComponent<MapGridComponent>(gridId);
-                var (_, _, worldMatrix, invMatrix) = _entityManager.GetComponent<TransformComponent>(gridId).GetWorldPositionRotationMatrixWithInv();
+                var (_, _, worldMatrix, invMatrix) = _transformSystem.GetWorldPositionRotationMatrixWithInv(gridId);
 
                 var lCursorBox = invMatrix.TransformBox(cursorBox);
                 foreach (var (pos, list) in gridDict)
index df57578b1f5149a6c775502a3e68df01462484b8..c69987fe77c9fa02193f05992eebda6546682832 100644 (file)
@@ -23,6 +23,7 @@ public sealed class TargetOutlineSystem : EntitySystem
     [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
     [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
     [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     private bool _enabled = false;
 
@@ -165,8 +166,8 @@ public sealed class TargetOutlineSystem : EntitySystem
                 valid = _interactionSystem.InRangeUnobstructed(player, entity, Range);
             else if (Range >= 0)
             {
-                var origin = Transform(player).WorldPosition;
-                var target = Transform(entity).WorldPosition;
+                var origin = _transformSystem.GetWorldPosition(player);
+                var target = _transformSystem.GetWorldPosition(entity);
                 valid = (origin - target).LengthSquared() <= Range;
             }
 
index 0b94e41f6bc6ffc026793a323d673765eeb05f0d..adb25e1ef63b09e65f92ce4b4702eb579b4657e0 100644 (file)
@@ -11,6 +11,7 @@ namespace Content.Client.Stealth;
 public sealed class StealthSystem : SharedStealthSystem
 {
     [Dependency] private readonly IPrototypeManager _protoMan = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     private ShaderInstance _shader = default!;
 
@@ -81,7 +82,7 @@ public sealed class StealthSystem : SharedStealthSystem
         if (!parent.IsValid())
             return; // should never happen, but lets not kill the client.
         var parentXform = Transform(parent);
-        var reference = args.Viewport.WorldToLocal(parentXform.WorldPosition);
+        var reference = args.Viewport.WorldToLocal(_transformSystem.GetWorldPosition(parentXform));
         reference.X = -reference.X;
         var visibility = GetVisibility(uid, component);
 
index 0b55a1839c0a97d26a6ddf93a9a3094d5f39b938..034d3e4f02c6a90c84cd25787c6fc712e1642dcd 100644 (file)
@@ -27,6 +27,7 @@ namespace Content.Client.Tabletop
         [Dependency] private readonly IPlayerManager _playerManager = default!;
         [Dependency] private readonly IGameTiming _gameTiming = default!;
         [Dependency] private readonly AppearanceSystem _appearance = default!;
+        [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
         // Time in seconds to wait until sending the location of a dragged entity to the server again
         private const float Delay = 1f / 10; // 10 Hz
@@ -100,7 +101,7 @@ namespace Content.Client.Tabletop
             if (clampedCoords.Equals(MapCoordinates.Nullspace)) return;
 
             // Move the entity locally every update
-            EntityManager.GetComponent<TransformComponent>(_draggedEntity.Value).WorldPosition = clampedCoords.Position;
+            _transformSystem.SetWorldPosition(_draggedEntity.Value, clampedCoords.Position);
 
             // Increment total time passed
             _timePassed += frameTime;
index 59747b1b0f473cbdb8a9d1bada950324247b4ad0..613f71e79b25e003c24c992627f76638639389f9 100644 (file)
@@ -15,7 +15,6 @@ public sealed class ViewportUIController : UIController
     [Dependency] private readonly IPlayerManager _playerMan = default!;
     [Dependency] private readonly IEntityManager _entMan = default!;
     [Dependency] private readonly IConfigurationManager _configurationManager = default!;
-
     public static readonly Vector2i ViewportSize = (EyeManager.PixelsPerMeter * 21, EyeManager.PixelsPerMeter * 15);
     public const int ViewportHeight = 15;
     private MainViewport? Viewport => UIManager.ActiveScreen?.GetWidget<MainViewport>();
index 3e1a4b1906d531efbc5a6a6cbf9f4a1d5ae5eb2d..540d76c129bf6c9f7e319c893e3fc18665445b67 100644 (file)
@@ -213,7 +213,7 @@ public sealed partial class MeleeWeaponSystem
     private void UpdateEffects()
     {
         var query = EntityQueryEnumerator<TrackUserComponent, TransformComponent>();
-        while (query.MoveNext(out var arcComponent, out var xform))
+        while (query.MoveNext(out var uid, out var arcComponent, out var xform))
         {
             if (arcComponent.User == null)
                 continue;
@@ -226,7 +226,7 @@ public sealed partial class MeleeWeaponSystem
                 targetPos += entRotation.RotateVec(arcComponent.Offset);
             }
 
-            TransformSystem.SetWorldPosition(xform, targetPos);
+            TransformSystem.SetWorldPosition(uid, targetPos);
         }
     }
 }
index 2e41e45d3f8c1fe73d9ce1c09f1dc14f6d37f02b..b96dd0ac48d05ce146d127a0b673e1baca280879 100644 (file)
@@ -237,7 +237,7 @@ namespace Content.Server.Atmos.EntitySystems
                     // TODO: Technically these directions won't be correct but uhh I'm just here for optimisations buddy not to fix my old bugs.
                     if (throwTarget != EntityCoordinates.Invalid)
                     {
-                        var pos = ((throwTarget.ToMap(EntityManager, _transformSystem).Position - xform.WorldPosition).Normalized() + dirVec).Normalized();
+                        var pos = ((_transformSystem.ToMapCoordinates(throwTarget).Position - _transformSystem.GetWorldPosition(xform)).Normalized() + dirVec).Normalized();
                         _physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics);
                     }
                     else
index 8e12670ca62b92dc04b11f289ea6d59ec6a42bfa..dbb8572299f251e91026a9064af25b9bc2d4d365 100644 (file)
@@ -28,6 +28,7 @@ namespace Content.Server.Chemistry.EntitySystems
         [Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
         [Dependency] private readonly ThrowingSystem _throwing = default!;
         [Dependency] private readonly ReactiveSystem _reactive = default!;
+        [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
         private const float ReactTime = 0.125f;
 
@@ -69,7 +70,7 @@ namespace Content.Server.Chemistry.EntitySystems
 
                 _throwing.TryThrow(vapor, dir, speed, user: user);
 
-                var distance = (target.Position - vaporXform.WorldPosition).Length();
+                var distance = (target.Position - _transformSystem.GetWorldPosition(vaporXform)).Length();
                 var time = (distance / physics.LinearVelocity.Length());
                 despawn.Lifetime = MathF.Min(aliveTime, time);
             }
index 172f3324e35d8ba09bc673f36efceba68aaeece8..30ea41b7c9faa33ffc6f4921ef46123ae1dd4076 100644 (file)
@@ -1,4 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
 using System.Globalization;
 using Robust.Server.Player;
 using Robust.Shared.Console;
@@ -55,13 +55,15 @@ namespace Content.Server.Commands
         {
             var entMan = IoCManager.Resolve<IEntityManager>();
             var transform = entMan.GetComponent<TransformComponent>(ent);
+            var transformSystem = entMan.System<SharedTransformSystem>();
+            var worldPosition = transformSystem.GetWorldPosition(transform);
 
             // gross, is there a better way to do this?
             ruleString = ruleString.Replace("$ID", ent.ToString());
             ruleString = ruleString.Replace("$WX",
-                transform.WorldPosition.X.ToString(CultureInfo.InvariantCulture));
+                worldPosition.X.ToString(CultureInfo.InvariantCulture));
             ruleString = ruleString.Replace("$WY",
-                transform.WorldPosition.Y.ToString(CultureInfo.InvariantCulture));
+                worldPosition.Y.ToString(CultureInfo.InvariantCulture));
             ruleString = ruleString.Replace("$LX",
                 transform.LocalPosition.X.ToString(CultureInfo.InvariantCulture));
             ruleString = ruleString.Replace("$LY",
@@ -73,12 +75,13 @@ namespace Content.Server.Commands
                 if (player.AttachedEntity is {Valid: true} p)
                 {
                     var pTransform = entMan.GetComponent<TransformComponent>(p);
+                    var pWorldPosition = transformSystem.GetWorldPosition(pTransform);
 
                     ruleString = ruleString.Replace("$PID", ent.ToString());
                     ruleString = ruleString.Replace("$PWX",
-                        pTransform.WorldPosition.X.ToString(CultureInfo.InvariantCulture));
+                        pWorldPosition.X.ToString(CultureInfo.InvariantCulture));
                     ruleString = ruleString.Replace("$PWY",
-                        pTransform.WorldPosition.Y.ToString(CultureInfo.InvariantCulture));
+                        pWorldPosition.Y.ToString(CultureInfo.InvariantCulture));
                     ruleString = ruleString.Replace("$PLX",
                         pTransform.LocalPosition.X.ToString(CultureInfo.InvariantCulture));
                     ruleString = ruleString.Replace("$PLY",
index b27ef52eca60ccda5dcf98b229a02d75433849bd..1741afd4ce3e5f93a0e9ebd08ad131ab7471f741 100644 (file)
@@ -6,6 +6,8 @@ namespace Content.Server.DeviceNetwork.Systems
     [UsedImplicitly]
     public sealed class WirelessNetworkSystem : EntitySystem
     {
+        [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
+
         public override void Initialize()
         {
             base.Initialize();
@@ -25,7 +27,7 @@ namespace Content.Server.DeviceNetwork.Systems
                 return;
 
             if (xform.MapID != args.SenderTransform.MapID
-                || (ownPosition - xform.WorldPosition).Length() > sendingComponent.Range)
+                || (ownPosition - _transformSystem.GetWorldPosition(xform)).Length() > sendingComponent.Range)
             {
                 args.Cancel();
             }
index 29875c60ca7ae21728f334257ce603da6ff2a9af..42610a03237274a4c4b8c01db245e429e3926b6b 100644 (file)
@@ -156,7 +156,7 @@ public sealed partial class DragonSystem : EntitySystem
         }
 
         // cant put a rift on solars
-        foreach (var tile in grid.GetTilesIntersecting(new Circle(xform.WorldPosition, RiftTileRadius), false))
+        foreach (var tile in grid.GetTilesIntersecting(new Circle(_transform.GetWorldPosition(xform), RiftTileRadius), false))
         {
             if (!tile.IsSpace(_tileDef))
                 continue;
index d88945bc19e26dbcdc9b6c06e3ee34afbbfc0b3e..75bb606441a42437beb3f074cfaed93fcaa73992 100644 (file)
@@ -105,7 +105,7 @@ public sealed partial class ExplosionSystem : SharedExplosionSystem
 
             var xforms = EntityManager.GetEntityQuery<TransformComponent>();
             var xform = xforms.GetComponent(gridToTransform);
-            var  (_, gridWorldRotation, gridWorldMatrix, invGridWorldMatrid) = xform.GetWorldPositionRotationMatrixWithInv(xforms);
+            var  (_, gridWorldRotation, gridWorldMatrix, invGridWorldMatrid) = _transformSystem.GetWorldPositionRotationMatrixWithInv(xform, xforms);
 
             var localEpicentre = (Vector2i) Vector2.Transform(epicentre.Position, invGridWorldMatrid);
             var matrix = offsetMatrix * gridWorldMatrix * targetMatrix;
index 1eeed949cc0f3a39f5445725585e151beed4523b..6de516ec0f378881af7eab4d492c22380283a87d 100644 (file)
@@ -406,7 +406,7 @@ public sealed partial class ExplosionSystem : SharedExplosionSystem
             if (player.AttachedEntity is not EntityUid uid)
                 continue;
 
-            var playerPos = Transform(player.AttachedEntity!.Value).WorldPosition;
+            var playerPos = _transformSystem.GetWorldPosition(player.AttachedEntity!.Value);
             var delta = epicenter.Position - playerPos;
 
             if (delta.EqualsApprox(Vector2.Zero))
index 12c2a396dedcb8075f28b173949c899aaca52538..903fd1ff3f734d5b0e8a6b8abf03556e1359a0d5 100644 (file)
@@ -201,7 +201,7 @@ namespace Content.Server.Hands.Systems
                 throwEnt = splitStack.Value;
             }
 
-            var direction = coordinates.ToMapPos(EntityManager, _transformSystem) - Transform(player).WorldPosition;
+            var direction = _transformSystem.ToMapCoordinates(coordinates).Position - _transformSystem.GetWorldPosition(player);
             if (direction == Vector2.Zero)
                 return true;
 
index 76b2e29dea0fd270dbaec2fd0f8150f4f5e2afef..cf71e012f48a6cd8e536b35841c21205b15c8ff6 100644 (file)
@@ -12,6 +12,7 @@ public sealed class GridDraggingSystem : SharedGridDraggingSystem
 {
     [Dependency] private readonly IConGroupController _admin = default!;
     [Dependency] private readonly SharedPhysicsSystem _physics = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     private readonly HashSet<ICommonSession> _draggers = new();
 
@@ -76,8 +77,6 @@ public sealed class GridDraggingSystem : SharedGridDraggingSystem
             return;
         }
 
-        var gridXform = Transform(grid);
-
-        gridXform.WorldPosition = msg.WorldPosition;
+        _transformSystem.SetWorldPosition(grid, msg.WorldPosition);
     }
 }
index c5c44056b96cd8b91aa17fc4a95ecfcb3caae48c..aa28a8063c0de14cc4cee3e669675c52fc5b172b 100644 (file)
@@ -1,4 +1,4 @@
-using System.Linq;
+using System.Linq;
 using Content.Server.Interaction;
 using Content.Server.Mech.Equipment.Components;
 using Content.Server.Mech.Systems;
@@ -85,7 +85,7 @@ public sealed class MechGrabberSystem : EntitySystem
         var (mechPos, mechRot) = _transform.GetWorldPositionRotation(mechxform);
 
         var offset = mechPos + mechRot.RotateVec(component.DepositOffset);
-        _transform.SetWorldPositionRotation(xform, offset, Angle.Zero);
+        _transform.SetWorldPositionRotation(toRemove, offset, Angle.Zero);
         _mech.UpdateUserInterface(mech);
     }
 
index 81ea6840e31fcc5224edeb21c6c338c20806c551..51916204da419f32d10815bcf31bbf6f9aa08329 100644 (file)
@@ -39,7 +39,7 @@ public sealed class StressTestMovementSystem : EntitySystem
             var x = MathF.Sin(stressTest.Progress * MathHelper.TwoPi);
             var y = MathF.Cos(stressTest.Progress * MathHelper.TwoPi);
 
-            _transform.SetWorldPosition(transform, stressTest.Origin + new Vector2(x, y) * 5);
+            _transform.SetWorldPosition((uid, transform), stressTest.Origin + new Vector2(x, y) * 5);
         }
     }
 }
index be3ceb3b08625a6c4cc5d7361166406a9e968da1..bdd652f38f111000d2ce1b02c945496fe20819a4 100644 (file)
@@ -12,6 +12,7 @@ namespace Content.Server.Pointing.EntitySystems
         [Dependency] private readonly IRobustRandom _random = default!;
         [Dependency] private readonly ExplosionSystem _explosion = default!;
         [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
+        [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
         private EntityUid? RandomNearbyPlayer(EntityUid uid, RoguePointingArrowComponent? component = null, TransformComponent? transform = null)
         {
@@ -66,27 +67,28 @@ namespace Content.Server.Pointing.EntitySystems
                 }
 
                 component.TurningDelay -= frameTime;
+                var (transformPos, transformRot) = _transformSystem.GetWorldPositionRotation(transform);
 
                 if (component.TurningDelay > 0)
                 {
-                    var difference = Comp<TransformComponent>(chasing).WorldPosition - transform.WorldPosition;
+                    var difference = _transformSystem.GetWorldPosition(chasing) - transformPos;
                     var angle = difference.ToAngle();
                     var adjusted = angle.Degrees + 90;
                     var newAngle = Angle.FromDegrees(adjusted);
 
-                    transform.WorldRotation = newAngle;
+                    _transformSystem.SetWorldRotation(transform, newAngle);
 
                     UpdateAppearance(uid, component, transform);
                     continue;
                 }
 
-                transform.WorldRotation += Angle.FromDegrees(20);
+                _transformSystem.SetWorldRotation(transform, transformRot + Angle.FromDegrees(20));
 
                 UpdateAppearance(uid, component, transform);
 
-                var toChased = Comp<TransformComponent>(chasing).WorldPosition - transform.WorldPosition;
+                var toChased = _transformSystem.GetWorldPosition(chasing) - transformPos;
 
-                transform.WorldPosition += toChased * frameTime * component.ChasingSpeed;
+                _transformSystem.SetWorldPosition((uid, transform), transformPos + (toChased * frameTime * component.ChasingSpeed));
 
                 component.ChasingTime -= frameTime;
 
index bdaa4a40bc10cbde683ba2debefbf6093dc681f1..cbda98f2638910a40e7f29f0691bc14008122d84 100644 (file)
@@ -1,4 +1,4 @@
-using Content.Server.Administration.Logs;
+using Content.Server.Administration.Logs;
 using Content.Server.Atmos.EntitySystems;
 using Content.Server.Chat.Managers;
 using Content.Server.GameTicking;
@@ -157,7 +157,7 @@ public sealed class SpecialRespawnSystem : SharedSpecialRespawnSystem
         var tile = tileRef.GridIndices;
 
         var found = false;
-        var (gridPos, _, gridMatrix) = xform.GetWorldPositionRotationMatrix();
+        var (gridPos, _, gridMatrix) = _transform.GetWorldPositionRotationMatrix(xform);
         var gridBounds = gridMatrix.TransformBox(grid.LocalAABB);
 
         //Obviously don't put anything ridiculous in here
index c889d59f1556385b186a95ea79965b6fb492c03a..f972865509edc04713e5f61314fe567612a76449 100644 (file)
@@ -42,6 +42,7 @@ public sealed partial class RevenantSystem
     [Dependency] private readonly GhostSystem _ghost = default!;
     [Dependency] private readonly TileSystem _tile = default!;
     [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     private void InitializeAbilities()
     {
@@ -227,7 +228,7 @@ public sealed partial class RevenantSystem
         var xform = Transform(uid);
         if (!TryComp<MapGridComponent>(xform.GridUid, out var map))
             return;
-        var tiles = map.GetTilesIntersecting(Box2.CenteredAround(xform.WorldPosition,
+        var tiles = map.GetTilesIntersecting(Box2.CenteredAround(_transformSystem.GetWorldPosition(xform),
             new Vector2(component.DefileRadius * 2, component.DefileRadius))).ToArray();
 
         _random.Shuffle(tiles);
index e575b0403b60b1d5d89c35e2fe5a2cd5fa366b03..f02c2bfd0d11a04325620fd95e1ad30dfe9ee2fd 100644 (file)
@@ -22,6 +22,7 @@ public sealed class ContainmentFieldGeneratorSystem : EntitySystem
     [Dependency] private readonly PhysicsSystem _physics = default!;
     [Dependency] private readonly PopupSystem _popupSystem = default!;
     [Dependency] private readonly SharedPointLightSystem _light = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
     [Dependency] private readonly TagSystem _tags = default!;
 
     public override void Initialize()
@@ -234,7 +235,7 @@ public sealed class ContainmentFieldGeneratorSystem : EntitySystem
         if (!gen1XForm.Anchored)
             return false;
 
-        var genWorldPosRot = gen1XForm.GetWorldPositionRotation();
+        var genWorldPosRot = _transformSystem.GetWorldPositionRotation(gen1XForm);
         var dirRad = dir.ToAngle() + genWorldPosRot.WorldRotation; //needs to be like this for the raycast to work properly
 
         var ray = new CollisionRay(genWorldPosRot.WorldPosition, dirRad.ToVec(), component.CollisionMask);
index 0af49545190101ee3e94f8800a6d9ac6c25427bf..d3a32f500646695af4ec848b4e1273f038a725ab 100644 (file)
@@ -1,4 +1,4 @@
-using Content.Server.Popups;
+using Content.Server.Popups;
 using Content.Server.Shuttles.Components;
 using Content.Server.Singularity.Events;
 using Content.Shared.Popups;
@@ -13,6 +13,7 @@ public sealed class ContainmentFieldSystem : EntitySystem
 {
     [Dependency] private readonly ThrowingSystem _throwing = default!;
     [Dependency] private readonly PopupSystem _popupSystem = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     public override void Initialize()
     {
@@ -34,8 +35,8 @@ public sealed class ContainmentFieldSystem : EntitySystem
 
         if (TryComp<PhysicsComponent>(otherBody, out var physics) && physics.Mass <= component.MaxMass && physics.Hard)
         {
-            var fieldDir = Transform(uid).WorldPosition;
-            var playerDir = Transform(otherBody).WorldPosition;
+            var fieldDir = _transformSystem.GetWorldPosition(uid);
+            var playerDir = _transformSystem.GetWorldPosition(otherBody);
 
             _throwing.TryThrow(otherBody, playerDir-fieldDir, baseThrowSpeed: component.ThrowForce);
         }
index 6a8fc68d976bd72d2f1151a5026bdd658dfd2c79..4f1cdb0eb0ee7b8dd71d77ba4e07fd630671d36a 100644 (file)
@@ -18,6 +18,7 @@ namespace Content.Server.Solar.EntitySystems
     {
         [Dependency] private readonly IRobustRandom _robustRandom = default!;
         [Dependency] private readonly SharedPhysicsSystem _physicsSystem = default!;
+        [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
         /// <summary>
         /// Maximum panel angular velocity range - used to stop people rotating panels fast enough that the lag prevention becomes noticable
@@ -112,7 +113,7 @@ namespace Content.Server.Solar.EntitySystems
                 while (query.MoveNext(out var uid, out var panel, out var xform))
                 {
                     TotalPanelPower += panel.MaxSupply * panel.Coverage;
-                    xform.WorldRotation = TargetPanelRotation;
+                    _transformSystem.SetWorldRotation(xform, TargetPanelRotation);
                     _updateQueue.Enqueue((uid, panel));
                 }
             }
@@ -135,7 +136,7 @@ namespace Content.Server.Solar.EntitySystems
             // directly downwards (abs(theta) = pi) = coverage -1
             // as TowardsSun + = CCW,
             // panelRelativeToSun should - = CW
-            var panelRelativeToSun = xform.WorldRotation - TowardsSun;
+            var panelRelativeToSun = _transformSystem.GetWorldRotation(xform) - TowardsSun;
             // essentially, given cos = X & sin = Y & Y is 'downwards',
             // then for the first 90 degrees of rotation in either direction,
             // this plots the lower-right quadrant of a circle.
@@ -153,7 +154,7 @@ namespace Content.Server.Solar.EntitySystems
             if (coverage > 0)
             {
                 // Determine if the solar panel is occluded, and zero out coverage if so.
-                var ray = new CollisionRay(xform.WorldPosition, TowardsSun.ToWorldVec(), (int) CollisionGroup.Opaque);
+                var ray = new CollisionRay(_transformSystem.GetWorldPosition(xform), TowardsSun.ToWorldVec(), (int) CollisionGroup.Opaque);
                 var rayCastResults = _physicsSystem.IntersectRayWithPredicate(
                     xform.MapID,
                     ray,
index 78326651c9c0aa3f9ac8d673d3f8dc1d1682a63c..7a9e74375cbd7036e80ce38c86a2d500072a1ea8 100644 (file)
@@ -1,4 +1,4 @@
-using System.Numerics;
+using System.Numerics;
 using Content.Server.Worldgen.Components;
 using JetBrains.Annotations;
 
@@ -12,6 +12,7 @@ namespace Content.Server.Worldgen.Systems;
 public abstract class BaseWorldSystem : EntitySystem
 {
     [Dependency] private readonly WorldControllerSystem _worldController = default!;
+    [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     /// <summary>
     ///     Gets a chunk's coordinates in chunk space as an integer value.
@@ -25,7 +26,7 @@ public abstract class BaseWorldSystem : EntitySystem
         if (!Resolve(ent, ref xform))
             throw new Exception("Failed to resolve transform, somehow.");
 
-        return WorldGen.WorldToChunkCoords(xform.WorldPosition).Floored();
+        return WorldGen.WorldToChunkCoords(_transformSystem.GetWorldPosition(xform)).Floored();
     }
 
     /// <summary>
@@ -40,7 +41,7 @@ public abstract class BaseWorldSystem : EntitySystem
         if (!Resolve(ent, ref xform))
             throw new Exception("Failed to resolve transform, somehow.");
 
-        return WorldGen.WorldToChunkCoords(xform.WorldPosition);
+        return WorldGen.WorldToChunkCoords(_transformSystem.GetWorldPosition(xform));
     }
 
     /// <summary>
index 8708e0ff4e88b0cab4e4754908e5dd13e3f6b771..05912229960a9507cc40f58a9bd78207d5168430 100644 (file)
@@ -1,4 +1,4 @@
-using System.Numerics;
+using System.Numerics;
 using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components;
 using Content.Server.Xenoarchaeology.XenoArtifacts.Events;
 using Content.Shared.Maps;
@@ -31,7 +31,7 @@ public sealed class ThrowArtifactSystem : EntitySystem
         if (TryComp<MapGridComponent>(xform.GridUid, out var grid))
         {
             var tiles = grid.GetTilesIntersecting(
-                Box2.CenteredAround(xform.WorldPosition, new Vector2(component.Range * 2, component.Range)));
+                Box2.CenteredAround(_transform.GetWorldPosition(xform), new Vector2(component.Range * 2, component.Range)));
 
             foreach (var tile in tiles)
             {
index fe4336e6fc7ac770a44b043c19744d4291c06878..f1d056165e4774c0e637378e8bd4952c76bfc41e 100644 (file)
@@ -20,13 +20,13 @@ namespace Content.Shared.Construction.Conditions
 
             // get blueprint and user position
             var transformSystem = entManager.System<SharedTransformSystem>();
-            var userWorldPosition = entManager.GetComponent<TransformComponent>(user).WorldPosition;
+            var userWorldPosition = transformSystem.GetWorldPosition(user);
             var objWorldPosition = location.ToMap(entManager, transformSystem).Position;
 
             // find direction from user to blueprint
             var userToObject = (objWorldPosition - userWorldPosition);
             // get direction of the grid being placed on as an offset.
-            var gridRotation = entManager.GetComponent<TransformComponent>(location.EntityId).WorldRotation;
+            var gridRotation = transformSystem.GetWorldRotation(location.EntityId);
             var directionWithOffset = gridRotation.RotateVec(direction.ToVec());
 
             // dot product will be positive if user direction and blueprint are co-directed
index 97ed908ed3af4a288bf0b4f6dae5275933a29d78..f031292f231943ce5f7f58a519a65c0520a7e95a 100644 (file)
@@ -156,7 +156,7 @@ public sealed class FloorTileSystem : EntitySystem
 
                 var grid = _mapManager.CreateGridEntity(locationMap.MapId);
                 var gridXform = Transform(grid);
-                _transform.SetWorldPosition(gridXform, locationMap.Position);
+                _transform.SetWorldPosition((grid, gridXform), locationMap.Position);
                 location = new EntityCoordinates(grid, Vector2.Zero);
                 PlaceAt(args.User, grid, grid.Comp, location, _tileDefinitionManager[component.OutputTiles[0]].TileId, component.PlaceTileSound, grid.Comp.TileSize / 2f);
                 return;