Add gravitycomponent support to maps (#9857)

* Add gravitycomponent support to maps

The alert still needs fixing if you want planets.

* move
This commit is contained in:
metalgearsloth
2022-07-18 19:49:52 +10:00
committed by GitHub
parent dc9493f7a2
commit 2268fdd24b
5 changed files with 61 additions and 11 deletions

View File

@@ -31,6 +31,7 @@ namespace Content.Shared.Movement.Components
public static class GravityExtensions
{
[Obsolete("Use GravitySystem")]
public static bool IsWeightless(this EntityUid entity, PhysicsComponent? body = null, EntityCoordinates? coords = null, IMapManager? mapManager = null, IEntityManager? entityManager = null)
{
entityManager ??= IoCManager.Resolve<IEntityManager>();
@@ -47,10 +48,12 @@ namespace Content.Shared.Movement.Components
var transform = entityManager.GetComponent<TransformComponent>(entity);
var gridId = transform.GridUid;
if ((entityManager.TryGetComponent<GravityComponent>(transform.GridUid, out var gravity) ||
entityManager.TryGetComponent(transform.MapUid, out gravity)) && gravity.Enabled)
return false;
if (gridId == null)
{
// Not on a grid = no gravity for now.
// In the future, may want to allow maps to override to always have gravity instead.
return true;
}

View File

@@ -2,6 +2,7 @@ using System.Diagnostics.CodeAnalysis;
using Content.Shared.Audio;
using Content.Shared.CCVar;
using Content.Shared.Friction;
using Content.Shared.Gravity;
using Content.Shared.Inventory;
using Content.Shared.Maps;
using Content.Shared.MobState.Components;
@@ -34,6 +35,7 @@ namespace Content.Shared.Movement.Systems
[Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!;
[Dependency] private readonly InventorySystem _inventory = default!;
[Dependency] private readonly SharedContainerSystem _container = default!;
[Dependency] private readonly SharedGravitySystem _gravity = default!;
[Dependency] private readonly SharedMobStateSystem _mobState = default!;
[Dependency] private readonly TagSystem _tags = default!;
@@ -112,7 +114,7 @@ namespace Content.Shared.Movement.Systems
}
UsedMobMovement[mover.Owner] = true;
var weightless = mover.Owner.IsWeightless(physicsComponent, mapManager: _mapManager, entityManager: EntityManager);
var weightless = _gravity.IsWeightless(mover.Owner, physicsComponent, xform);
var (walkDir, sprintDir) = GetVelocityInput(mover);
var touching = false;