]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix ItemPlacer (#21160)
authormetalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Fri, 27 Oct 2023 02:14:01 +0000 (13:14 +1100)
committerGitHub <noreply@github.com>
Fri, 27 Oct 2023 02:14:01 +0000 (22:14 -0400)
This is going to lead to many entities being ticked unnecessarily and performance problems.

Content.Shared/Placeable/ItemPlacerSystem.cs

index 92dc8eb74b75aa6263c45243fcc4b7c3bdc4e356..ec6ece671f0053d4a10038eea3e1c8b569bef6e7 100644 (file)
@@ -9,6 +9,7 @@ namespace Content.Shared.Placeable;
 /// </summary>
 public sealed class ItemPlacerSystem : EntitySystem
 {
+    [Dependency] private readonly CollisionWakeSystem _wake = default!;
     [Dependency] private readonly PlaceableSurfaceSystem _placeableSurface = default!;
     [Dependency] private readonly SharedPhysicsSystem _physics = default!;
 
@@ -25,8 +26,8 @@ public sealed class ItemPlacerSystem : EntitySystem
         if (comp.Whitelist != null && !comp.Whitelist.IsValid(args.OtherEntity))
             return;
 
-        // Disallow sleeping so we can detect when entity is removed from the heater.
-        _physics.SetSleepingAllowed(args.OtherEntity, args.OtherBody, false);
+        if (TryComp<CollisionWakeComponent>(uid, out var wakeComp))
+            _wake.SetEnabled(uid, false, wakeComp);
 
         var count = comp.PlacedEntities.Count;
         if (comp.MaxEntities == 0 || count < comp.MaxEntities)
@@ -46,8 +47,8 @@ public sealed class ItemPlacerSystem : EntitySystem
 
     private void OnEndCollide(EntityUid uid, ItemPlacerComponent comp, ref EndCollideEvent args)
     {
-        // Re-allow sleeping.
-        _physics.SetSleepingAllowed(args.OtherEntity, args.OtherBody, true);
+        if (TryComp<CollisionWakeComponent>(uid, out var wakeComp))
+            _wake.SetEnabled(uid, true, wakeComp);
 
         comp.PlacedEntities.Remove(args.OtherEntity);