Derotate Saltern (#12503)

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
Emisse
2022-11-19 21:05:32 -07:00
committed by GitHub
parent bbca523756
commit 76874c7b6d
6 changed files with 16 additions and 74557 deletions

View File

@@ -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)