Conveyor belt fix (#12713)
Fixes https://github.com/space-wizards/space-station-14/issues/12704
This commit is contained in:
@@ -7,6 +7,8 @@ using JetBrains.Annotations;
|
|||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
using Robust.Shared.Map;
|
using Robust.Shared.Map;
|
||||||
using Robust.Shared.Physics;
|
using Robust.Shared.Physics;
|
||||||
|
using Robust.Shared.Physics.Systems;
|
||||||
|
using Robust.Shared.Physics.Components;
|
||||||
|
|
||||||
namespace Content.Server.Disposal.Unit.EntitySystems
|
namespace Content.Server.Disposal.Unit.EntitySystems
|
||||||
{
|
{
|
||||||
@@ -17,6 +19,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems
|
|||||||
[Dependency] private readonly DisposalUnitSystem _disposalUnitSystem = default!;
|
[Dependency] private readonly DisposalUnitSystem _disposalUnitSystem = default!;
|
||||||
[Dependency] private readonly DisposalTubeSystem _disposalTubeSystem = default!;
|
[Dependency] private readonly DisposalTubeSystem _disposalTubeSystem = default!;
|
||||||
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
|
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
|
||||||
|
[Dependency] private readonly SharedPhysicsSystem _physicsSystem = default!;
|
||||||
|
|
||||||
public void ExitDisposals(EntityUid uid, DisposalHolderComponent? holder = null, TransformComponent? holderTransform = null)
|
public void ExitDisposals(EntityUid uid, DisposalHolderComponent? holder = null, TransformComponent? holderTransform = null)
|
||||||
{
|
{
|
||||||
@@ -50,13 +53,8 @@ namespace Content.Server.Disposal.Unit.EntitySystems
|
|||||||
{
|
{
|
||||||
RemComp<BeingDisposedComponent>(entity);
|
RemComp<BeingDisposedComponent>(entity);
|
||||||
|
|
||||||
if (EntityManager.TryGetComponent(entity, out IPhysBody? physics))
|
|
||||||
{
|
|
||||||
physics.CanCollide = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
var meta = MetaData(entity);
|
var meta = MetaData(entity);
|
||||||
holder.Container.ForceRemove(entity, EntityManager, meta);
|
holder.Container.Remove(entity, EntityManager, meta: meta, reparent: false, force: true);
|
||||||
|
|
||||||
var xform = Transform(entity);
|
var xform = Transform(entity);
|
||||||
if (xform.ParentUid != uid)
|
if (xform.ParentUid != uid)
|
||||||
@@ -66,6 +64,11 @@ namespace Content.Server.Disposal.Unit.EntitySystems
|
|||||||
duc.Container.Insert(entity, EntityManager, xform, meta: meta);
|
duc.Container.Insert(entity, EntityManager, xform, meta: meta);
|
||||||
else
|
else
|
||||||
xform.AttachToGridOrMap();
|
xform.AttachToGridOrMap();
|
||||||
|
|
||||||
|
if (EntityManager.TryGetComponent(entity, out PhysicsComponent? physics))
|
||||||
|
{
|
||||||
|
_physicsSystem.WakeBody(entity, physics);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (duc != null)
|
if (duc != null)
|
||||||
@@ -174,7 +177,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems
|
|||||||
|
|
||||||
// Past this point, we are performing inter-tube transfer!
|
// Past this point, we are performing inter-tube transfer!
|
||||||
// Remove current tube content
|
// Remove current tube content
|
||||||
currentTube.Contents.ForceRemove(holder.Owner);
|
currentTube.Contents.Remove(holder.Owner, reparent: false, force: true);
|
||||||
|
|
||||||
// Find next tube
|
// Find next tube
|
||||||
var nextTube = _disposalTubeSystem.NextTubeFor(currentTube.Owner, holder.CurrentDirection);
|
var nextTube = _disposalTubeSystem.NextTubeFor(currentTube.Owner, holder.CurrentDirection);
|
||||||
|
|||||||
Reference in New Issue
Block a user