private EntityQuery<PhysicsComponent> _physicsQuery;
private EntityQuery<TransformComponent> _xformQuery;
- private List<EntityUid> _entList = new();
-
public override void Initialize()
{
base.Initialize();
}
}
- _entList.Clear();
- _entList.AddRange(holder.Container.ContainedEntities);
-
- foreach (var entity in _entList)
+ // We're purposely iterating over all the holder's children
+ // because the holder might have something teleported into it,
+ // outside the usual container insertion logic.
+ var children = holderTransform.ChildEnumerator;
+ while (children.MoveNext(out var entity))
{
RemComp<BeingDisposedComponent>(entity);
var meta = _metaQuery.GetComponent(entity);
- _containerSystem.Remove((entity, null, meta), holder.Container, reparent: false, force: true);
+ if (holder.Container.Contains(entity))
+ _containerSystem.Remove((entity, null, meta), holder.Container, reparent: false, force: true);
var xform = _xformQuery.GetComponent(entity);
if (xform.ParentUid != uid)