Fixed rotation check for pulling (#8845)

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
keronshb
2022-06-16 05:15:56 -04:00
committed by GitHub
parent 96741fbfc0
commit bb4318b6f1
20 changed files with 24 additions and 29 deletions

View File

@@ -11,8 +11,6 @@ namespace Content.Shared.Pulling.Components
[RegisterComponent]
public sealed class SharedPullableComponent : Component
{
public float? MaxDistance => PullJoint?.MaxLength;
/// <summary>
/// The current entity pulling this component.
/// SharedPullingStateManagementSystem should be writing this. This means definitely not you.
@@ -29,6 +27,20 @@ namespace Content.Shared.Pulling.Components
[Access(typeof(SharedPullingStateManagementSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends
public EntityCoordinates? MovingTo { get; set; }
/// <summary>
/// If the physics component has FixedRotation should we keep it upon being pulled
/// </summary>
[Access(typeof(SharedPullingSystem), Other = AccessPermissions.ReadExecute)]
[ViewVariables(VVAccess.ReadWrite), DataField("fixedRotation")]
public bool FixedRotationOnPull { get; set; }
/// <summary>
/// What the pullable's fixedrotation was set to before being pulled.
/// </summary>
[Access(typeof(SharedPullingSystem), Other = AccessPermissions.ReadExecute)]
[ViewVariables]
public bool PrevFixedRotation;
public override ComponentState GetComponentState()
{
return new PullableComponentState(Puller);

View File

@@ -85,6 +85,13 @@ namespace Content.Shared.Pulling
if (msg.Cancelled) return false;
// Stop pulling confirmed!
if (TryComp<PhysicsComponent>(pullable.Owner, out var pullablePhysics))
{
pullablePhysics.FixedRotation = pullable.PrevFixedRotation;
}
_pullSm.ForceRelationship(null, pullable);
return true;
}
@@ -172,11 +179,11 @@ namespace Content.Shared.Pulling
RaiseLocalEvent(pullable.Owner, pullAttempt);
if (pullAttempt.Cancelled)
{
return false;
}
_pullSm.ForceRelationship(puller, pullable);
pullable.PrevFixedRotation = pullablePhysics.FixedRotation;
pullablePhysics.FixedRotation = pullable.FixedRotationOnPull;
return true;
}