Add IEntity.IsWeightless extension method (#2255)

Checking manually every time wasn't that cool
This commit is contained in:
DrSmugleaf
2020-10-14 22:37:25 +02:00
committed by GitHub
parent 17ee9814b0
commit 5fcd13d0e3
4 changed files with 18 additions and 10 deletions

View File

@@ -1,4 +1,8 @@
#nullable enable
using Robust.Shared.GameObjects;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Physics;
using Robust.Shared.IoC;
namespace Content.Shared.GameObjects.Components.Movement
{
@@ -7,4 +11,15 @@ namespace Content.Shared.GameObjects.Components.Movement
{
public override string Name => "MovementIgnoreGravity";
}
public static class GravityExtensions
{
public static bool IsWeightless(this IEntity entity, IPhysicsManager? physicsManager = null)
{
physicsManager ??= IoCManager.Resolve<IPhysicsManager>();
return !entity.HasComponent<MovementIgnoreGravityComponent>() &&
physicsManager.IsWeightless(entity.Transform.Coordinates);
}
}
}

View File

@@ -56,8 +56,7 @@ namespace Content.Shared.GameObjects.EntitySystems
{
physics.EnsureController<MoverController>();
var weightless = !transform.Owner.HasComponent<MovementIgnoreGravityComponent>() &&
_physicsManager.IsWeightless(transform.Coordinates);
var weightless = !transform.Owner.IsWeightless();
if (weightless)
{

View File

@@ -14,8 +14,7 @@ namespace Content.Shared.Physics
public void Move(Vector2 velocityDirection, float speed)
{
if (ControlledComponent?.Owner.HasComponent<MovementIgnoreGravityComponent>() == false &&
IoCManager.Resolve<IPhysicsManager>().IsWeightless(ControlledComponent.Owner.Transform.Coordinates))
if (ControlledComponent?.Owner.IsWeightless() ?? false)
{
return;
}

View File

@@ -1,8 +1,6 @@
#nullable enable
using Content.Shared.GameObjects.Components.Movement;
using Robust.Shared.GameObjects.Components;
using Robust.Shared.Interfaces.Physics;
using Robust.Shared.IoC;
using Robust.Shared.Maths;
using Robust.Shared.Physics;
@@ -10,14 +8,11 @@ namespace Content.Shared.Physics
{
public class MoverController : VirtualController
{
[Dependency] private readonly IPhysicsManager _physicsManager = default!;
public override IPhysicsComponent? ControlledComponent { protected get; set; }
public void Move(Vector2 velocityDirection, float speed)
{
if (ControlledComponent?.Owner.HasComponent<MovementIgnoreGravityComponent>() == false
&& _physicsManager.IsWeightless(ControlledComponent.Owner.Transform.Coordinates))
if (ControlledComponent?.Owner.IsWeightless() ?? false)
{
return;
}