]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Transform cleanups (#25963)
authormetalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Fri, 29 Mar 2024 06:26:30 +0000 (17:26 +1100)
committerGitHub <noreply@github.com>
Fri, 29 Mar 2024 06:26:30 +0000 (17:26 +1100)
* Transform cleanups

* Fix build

* ascension

Content.IntegrationTests/Tests/Buckle/BuckleTest.cs
Content.IntegrationTests/Tests/GameObjects/Components/ActionBlocking/HandCuffTest.cs
Content.Server/Anomaly/Effects/BluespaceAnomalySystem.cs
Content.Shared/Disposal/SharedDisposalUnitSystem.cs
Content.Shared/Storage/EntitySystems/DumpableSystem.cs

index 6e2a080370d31cd73dd74b637e4703422b61659e..7c700d9fb8a8ecc2ae03443a5e40a205b1eebe52 100644 (file)
@@ -181,9 +181,8 @@ namespace Content.IntegrationTests.Tests.Buckle
 #pragma warning restore NUnit2045
 
                 // Move away from the chair
-                var xformQuery = entityManager.GetEntityQuery<TransformComponent>();
-                var oldWorldPosition = xformSystem.GetWorldPosition(chair, xformQuery);
-                xformSystem.SetWorldPosition(human, oldWorldPosition + new Vector2(1000, 1000), xformQuery);
+                var oldWorldPosition = xformSystem.GetWorldPosition(chair);
+                xformSystem.SetWorldPosition(human, oldWorldPosition + new Vector2(1000, 1000));
 
                 // Out of range
 #pragma warning disable NUnit2045 // Interdependent asserts.
@@ -193,8 +192,8 @@ namespace Content.IntegrationTests.Tests.Buckle
 #pragma warning restore NUnit2045
 
                 // Move near the chair
-                oldWorldPosition = xformSystem.GetWorldPosition(chair, xformQuery);
-                xformSystem.SetWorldPosition(human, oldWorldPosition + new Vector2(0.5f, 0), xformQuery);
+                oldWorldPosition = xformSystem.GetWorldPosition(chair);
+                xformSystem.SetWorldPosition(human, oldWorldPosition + new Vector2(0.5f, 0));
 
                 // In range
 #pragma warning disable NUnit2045 // Interdependent asserts.
@@ -220,8 +219,8 @@ namespace Content.IntegrationTests.Tests.Buckle
                 Assert.That(buckleSystem.TryBuckle(human, human, chair, buckleComp: buckle));
 
                 // Move away from the chair
-                oldWorldPosition = xformSystem.GetWorldPosition(chair, xformQuery);
-                xformSystem.SetWorldPosition(human, oldWorldPosition + new Vector2(1, 0), xformQuery);
+                oldWorldPosition = xformSystem.GetWorldPosition(chair);
+                xformSystem.SetWorldPosition(human, oldWorldPosition + new Vector2(1, 0));
             });
 
             await server.WaitRunTicks(1);
@@ -371,9 +370,8 @@ namespace Content.IntegrationTests.Tests.Buckle
                 });
 
                 // Move the buckled entity away
-                var xformQuery = entityManager.GetEntityQuery<TransformComponent>();
-                var oldWorldPosition = xformSystem.GetWorldPosition(chair, xformQuery);
-                xformSystem.SetWorldPosition(human, oldWorldPosition + new Vector2(100, 0), xformQuery);
+                var oldWorldPosition = xformSystem.GetWorldPosition(chair);
+                xformSystem.SetWorldPosition(human, oldWorldPosition + new Vector2(100, 0));
             });
 
             await PoolManager.WaitUntil(server, () => !buckle.Buckled, 10);
@@ -383,9 +381,8 @@ namespace Content.IntegrationTests.Tests.Buckle
             await server.WaitAssertion(() =>
             {
                 // Move the now unbuckled entity back onto the chair
-                var xformQuery = entityManager.GetEntityQuery<TransformComponent>();
-                var oldWorldPosition = xformSystem.GetWorldPosition(chair, xformQuery);
-                xformSystem.SetWorldPosition(human, oldWorldPosition, xformQuery);
+                var oldWorldPosition = xformSystem.GetWorldPosition(chair);
+                xformSystem.SetWorldPosition(human, oldWorldPosition);
 
                 // Buckle
                 Assert.That(buckleSystem.TryBuckle(human, human, chair, buckleComp: buckle));
index 1d5dd6d34e21bc4a945b12abc71d7cc8f183fb4c..c6a8e618cc1a2f173fa05a35afeefaf7333248ff 100644 (file)
@@ -58,7 +58,6 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking
 
                 var cuffableSys = entityManager.System<CuffableSystem>();
                 var xformSys = entityManager.System<SharedTransformSystem>();
-                var xformQuery = entityManager.GetEntityQuery<TransformComponent>();
 
                 // Spawn the entities
                 human = entityManager.SpawnEntity("HumanHandcuffDummy", coordinates);
@@ -66,8 +65,8 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking
                 cuffs = entityManager.SpawnEntity("HandcuffsDummy", coordinates);
                 secondCuffs = entityManager.SpawnEntity("HandcuffsDummy", coordinates);
 
-                var coords = xformSys.GetWorldPosition(otherHuman, xformQuery);
-                xformSys.SetWorldPosition(human, coords, xformQuery);
+                var coords = xformSys.GetWorldPosition(otherHuman);
+                xformSys.SetWorldPosition(human, coords);
 
                 // Test for components existing
                 Assert.Multiple(() =>
index 87c0ba4a4eedd742933e90a8e14fb655bc05de97..dd2da82c9d6b497d2ba0e128c9fdc1c9cdcd9247 100644 (file)
@@ -8,6 +8,7 @@ using Content.Shared.Mobs.Components;
 using Content.Shared.Teleportation.Components;
 using Robust.Shared.Audio;
 using Robust.Shared.Audio.Systems;
+using Robust.Shared.Collections;
 using Robust.Shared.Random;
 
 namespace Content.Server.Anomaly.Effects;
@@ -35,20 +36,19 @@ public sealed class BluespaceAnomalySystem : EntitySystem
         var range = component.MaxShuffleRadius * args.Severity;
         var mobs = new HashSet<Entity<MobStateComponent>>();
         _lookup.GetEntitiesInRange(xform.Coordinates, range, mobs);
-        var allEnts = new List<EntityUid>(mobs.Select(m => m.Owner)) { uid };
-        var coords = new List<Vector2>();
+        var allEnts = new ValueList<EntityUid>(mobs.Select(m => m.Owner)) { uid };
+        var coords = new ValueList<Vector2>();
         foreach (var ent in allEnts)
         {
-            if (xformQuery.TryGetComponent(ent, out var xf))
-                coords.Add(xf.MapPosition.Position);
+            if (xformQuery.TryGetComponent(ent, out var allXform))
+                coords.Add(_xform.GetWorldPosition(allXform));
         }
 
         _random.Shuffle(coords);
         for (var i = 0; i < allEnts.Count; i++)
         {
-
             _adminLogger.Add(LogType.Teleport, $"{ToPrettyString(allEnts[i])} has been shuffled to {coords[i]} by the {ToPrettyString(uid)} at {xform.Coordinates}");
-            _xform.SetWorldPosition(allEnts[i], coords[i], xformQuery);
+            _xform.SetWorldPosition(allEnts[i], coords[i]);
         }
     }
 
index 600036a8910cceec92a05dbbd1b1e5cbae578e95..9afd683cbdc1ec0f30ea904622f2a522164ac917 100644 (file)
@@ -127,9 +127,6 @@ public abstract class SharedDisposalUnitSystem : EntitySystem
         return damageState != null && (!component.MobsCanEnter || _mobState.IsDead(entity, damageState));
     }
 
-    /// <summary>
-    /// TODO: Proper prediction
-    /// </summary>
     public abstract void DoInsertDisposalUnit(EntityUid uid, EntityUid toInsert, EntityUid user, SharedDisposalUnitComponent? disposal = null);
 
     [Serializable, NetSerializable]
index 2b804cf73249247a1a0b5be66d94fce9f9cc2735..8a8b636a679615676fb89ac729a0aa6702894cac 100644 (file)
@@ -19,17 +19,16 @@ public sealed class DumpableSystem : EntitySystem
     [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
     [Dependency] private readonly IRobustRandom _random = default!;
     [Dependency] private readonly SharedAudioSystem _audio = default!;
-    [Dependency] private readonly SharedContainerSystem _container = default!;
     [Dependency] private readonly SharedDisposalUnitSystem _disposalUnitSystem = default!;
     [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!;
     [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
-    private EntityQuery<TransformComponent> _xformQuery;
+    private EntityQuery<ItemComponent> _itemQuery;
 
     public override void Initialize()
     {
         base.Initialize();
-        _xformQuery = GetEntityQuery<TransformComponent>();
+        _itemQuery = GetEntityQuery<ItemComponent>();
         SubscribeLocalEvent<DumpableComponent, AfterInteractEvent>(OnAfterInteract, after: new[]{ typeof(SharedEntityStorageSystem) });
         SubscribeLocalEvent<DumpableComponent, GetVerbsEvent<AlternativeVerb>>(AddDumpVerb);
         SubscribeLocalEvent<DumpableComponent, GetVerbsEvent<UtilityVerb>>(AddUtilityVerbs);
@@ -111,7 +110,7 @@ public sealed class DumpableSystem : EntitySystem
         }
     }
 
-    private void StartDoAfter(EntityUid storageUid, EntityUid? targetUid, EntityUid userUid, DumpableComponent dumpable)
+    private void StartDoAfter(EntityUid storageUid, EntityUid targetUid, EntityUid userUid, DumpableComponent dumpable)
     {
         if (!TryComp<StorageComponent>(storageUid, out var storage))
             return;
@@ -120,7 +119,7 @@ public sealed class DumpableSystem : EntitySystem
 
         foreach (var entity in storage.Container.ContainedEntities)
         {
-            if (!TryComp<ItemComponent>(entity, out var itemComp) ||
+            if (!_itemQuery.TryGetComponent(entity, out var itemComp) ||
                 !_prototypeManager.TryIndex(itemComp.Size, out var itemSize))
             {
                 continue;
@@ -138,33 +137,16 @@ public sealed class DumpableSystem : EntitySystem
         });
     }
 
-    private void OnDoAfter(EntityUid uid, DumpableComponent component, DoAfterEvent args)
+    private void OnDoAfter(EntityUid uid, DumpableComponent component, DumpableDoAfterEvent args)
     {
-        if (args.Handled || args.Cancelled || !TryComp<StorageComponent>(uid, out var storage))
+        if (args.Handled || args.Cancelled || !TryComp<StorageComponent>(uid, out var storage) || storage.Container.ContainedEntities.Count == 0)
             return;
 
-        Queue<EntityUid> dumpQueue = new();
-        foreach (var entity in storage.Container.ContainedEntities)
-        {
-            dumpQueue.Enqueue(entity);
-        }
-
-        if (dumpQueue.Count == 0)
-            return;
-
-        foreach (var entity in dumpQueue)
-        {
-            var transform = Transform(entity);
-            _container.AttachParentToContainerOrGrid((entity, transform));
-            _transformSystem.SetLocalPositionRotation(entity, transform.LocalPosition + _random.NextVector2Box() / 2, _random.NextAngle(), transform);
-        }
-
-        if (args.Args.Target == null)
-            return;
+        var dumpQueue = new Queue<EntityUid>(storage.Container.ContainedEntities);
 
         var dumped = false;
 
-        if (_disposalUnitSystem.HasDisposals(args.Args.Target.Value))
+        if (_disposalUnitSystem.HasDisposals(args.Args.Target))
         {
             dumped = true;
 
@@ -173,22 +155,31 @@ public sealed class DumpableSystem : EntitySystem
                 _disposalUnitSystem.DoInsertDisposalUnit(args.Args.Target.Value, entity, args.Args.User);
             }
         }
-        else if (HasComp<PlaceableSurfaceComponent>(args.Args.Target.Value))
+        else if (HasComp<PlaceableSurfaceComponent>(args.Args.Target))
         {
             dumped = true;
 
-            var targetPos = _xformQuery.GetComponent(args.Args.Target.Value).LocalPosition;
+            var targetPos = _transformSystem.GetWorldPosition(args.Args.Target.Value);
+
+            foreach (var entity in dumpQueue)
+            {
+                _transformSystem.SetWorldPosition(entity, targetPos + _random.NextVector2Box() / 4);
+            }
+        }
+        else
+        {
+            var targetPos = _transformSystem.GetWorldPosition(uid);
 
             foreach (var entity in dumpQueue)
             {
-                _transformSystem.SetLocalPosition(entity, targetPos + _random.NextVector2Box() / 4);
+                var transform = Transform(entity);
+                _transformSystem.SetWorldPositionRotation(entity, targetPos + _random.NextVector2Box() / 4, _random.NextAngle(), transform);
             }
         }
 
         if (dumped)
         {
-            // TODO: Predicted when above predicted
-            _audio.PlayPvs(component.DumpSound, uid);
+            _audio.PlayPredicted(component.DumpSound, uid, args.User);
         }
     }
 }