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] [RegisterComponent]
public sealed class SharedPullableComponent : Component public sealed class SharedPullableComponent : Component
{ {
public float? MaxDistance => PullJoint?.MaxLength;
/// <summary> /// <summary>
/// The current entity pulling this component. /// The current entity pulling this component.
/// SharedPullingStateManagementSystem should be writing this. This means definitely not you. /// 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 [Access(typeof(SharedPullingStateManagementSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends
public EntityCoordinates? MovingTo { get; set; } 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() public override ComponentState GetComponentState()
{ {
return new PullableComponentState(Puller); return new PullableComponentState(Puller);

View File

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

View File

@@ -52,7 +52,6 @@
- Wringer - Wringer
- type: Physics - type: Physics
bodyType: Dynamic bodyType: Dynamic
fixedRotation: false
- type: Transform - type: Transform
noRot: true noRot: true
- type: Fixtures - type: Fixtures

View File

@@ -27,7 +27,6 @@
- type: MovedByPressure - type: MovedByPressure
- type: Physics - type: Physics
bodyType: Dynamic bodyType: Dynamic
fixedRotation: false
- type: Transform - type: Transform
noRot: true noRot: true
- type: Fixtures - type: Fixtures

View File

@@ -25,7 +25,6 @@
maxIntensity: 45 maxIntensity: 45
- type: Physics - type: Physics
bodyType: Dynamic bodyType: Dynamic
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -21,7 +21,6 @@
modifier: 0.5 modifier: 0.5
- type: Physics - type: Physics
bodyType: Dynamic bodyType: Dynamic
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -11,7 +11,6 @@
- type: InteractionOutline - type: InteractionOutline
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -10,7 +10,6 @@
sprite: Structures/Doors/Airlocks/Standard/basic.rsi sprite: Structures/Doors/Airlocks/Standard/basic.rsi
state: "assembly" state: "assembly"
- type: Physics - type: Physics
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -6,7 +6,6 @@
components: components:
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -11,7 +11,6 @@
noRot: true noRot: true
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:
@@ -59,7 +58,6 @@
noRot: true noRot: true
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:
@@ -114,8 +112,6 @@
- type: Construction - type: Construction
graph: Machine graph: Machine
node: destroyedMachineFrame node: destroyedMachineFrame
- type: Physics
fixedRotation: false
- type: Damageable - type: Damageable
damageContainer: Inorganic damageContainer: Inorganic
damageModifierSet: Metallic damageModifierSet: Metallic

View File

@@ -10,7 +10,6 @@
noRot: true noRot: true
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -9,7 +9,6 @@
- type: Rotatable - type: Rotatable
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -9,7 +9,6 @@
- type: InteractionOutline - type: InteractionOutline
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -9,7 +9,6 @@
- type: InteractionOutline - type: InteractionOutline
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:
@@ -75,4 +74,4 @@
graph: Machine graph: Machine
node: machine node: machine
- type: Machine - type: Machine
board: EmitterCircuitboard board: EmitterCircuitboard

View File

@@ -14,7 +14,6 @@
- type: Clickable - type: Clickable
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -11,7 +11,6 @@
sprite: Structures/Power/Generation/ame.rsi sprite: Structures/Power/Generation/ame.rsi
state: control state: control
- type: Physics - type: Physics
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -16,7 +16,6 @@
- type: InteractionOutline - type: InteractionOutline
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -16,7 +16,6 @@
anchored: true anchored: true
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:
@@ -111,7 +110,6 @@
- type: InteractionOutline - type: InteractionOutline
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:
@@ -155,7 +153,6 @@
- type: InteractionOutline - type: InteractionOutline
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -9,7 +9,6 @@
- type: Clickable - type: Clickable
- type: Physics - type: Physics
bodyType: Static bodyType: Static
fixedRotation: false
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:

View File

@@ -4,8 +4,6 @@
id: hydroponicsTray id: hydroponicsTray
description: An interstellar-grade space farmplot allowing for rapid growth and selective breeding of crops. Just... keep in mind the space weeds. description: An interstellar-grade space farmplot allowing for rapid growth and selective breeding of crops. Just... keep in mind the space weeds.
components: components:
- type: Physics
fixedRotation: false
- type: Transform - type: Transform
noRot: true noRot: true
- type: Fixtures - type: Fixtures