Derotate Saltern (#12503)
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
@@ -28,6 +28,7 @@ namespace Content.Server.Physics.Controllers
|
||||
[Dependency] private readonly GravitySystem _gravity = default!;
|
||||
[Dependency] private readonly RecyclerSystem _recycler = default!;
|
||||
[Dependency] private readonly SignalLinkerSystem _signalSystem = default!;
|
||||
[Dependency] private readonly SharedBroadphaseSystem _broadphase = default!;
|
||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
|
||||
@@ -60,7 +61,7 @@ namespace Content.Server.Physics.Controllers
|
||||
{
|
||||
var otherUid = args.OtherFixture.Body.Owner;
|
||||
|
||||
if (args.OtherFixture.Body.BodyType == BodyType.Static)
|
||||
if (args.OtherFixture.Body.BodyType == BodyType.Static || component.State == ConveyorState.Off)
|
||||
return;
|
||||
|
||||
component.Intersecting.Add(otherUid);
|
||||
@@ -99,23 +100,31 @@ namespace Content.Server.Physics.Controllers
|
||||
private void OnSignalReceived(EntityUid uid, ConveyorComponent component, SignalReceivedEvent args)
|
||||
{
|
||||
if (args.Port == component.OffPort)
|
||||
SetState(component, ConveyorState.Off);
|
||||
SetState(uid, ConveyorState.Off, component);
|
||||
else if (args.Port == component.ForwardPort)
|
||||
{
|
||||
AwakenEntities(component);
|
||||
SetState(component, ConveyorState.Forward);
|
||||
SetState(uid, ConveyorState.Forward, component);
|
||||
}
|
||||
else if (args.Port == component.ReversePort)
|
||||
{
|
||||
AwakenEntities(component);
|
||||
SetState(component, ConveyorState.Reverse);
|
||||
SetState(uid, ConveyorState.Reverse, component);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetState(ConveyorComponent component, ConveyorState state)
|
||||
private void SetState(EntityUid uid, ConveyorState state, ConveyorComponent? component = null)
|
||||
{
|
||||
if (!Resolve(uid, ref component))
|
||||
return;
|
||||
|
||||
component.State = state;
|
||||
|
||||
if (TryComp<PhysicsComponent>(uid, out var physics))
|
||||
{
|
||||
_broadphase.RegenerateContacts(physics);
|
||||
}
|
||||
|
||||
if (TryComp<RecyclerComponent>(component.Owner, out var recycler))
|
||||
{
|
||||
if (component.State != ConveyorState.Off)
|
||||
|
||||
Reference in New Issue
Block a user