Fix a bunch of mover bugs (#9999)
* Fix a bunch of mover bugs Just regressions from random things * Fix vehicle movement I guess
This commit is contained in:
@@ -24,8 +24,6 @@ namespace Content.Client.Physics.Controllers
|
|||||||
{
|
{
|
||||||
if (relayMover.RelayEntity != null)
|
if (relayMover.RelayEntity != null)
|
||||||
HandleClientsideMovement(relayMover.RelayEntity.Value, frameTime);
|
HandleClientsideMovement(relayMover.RelayEntity.Value, frameTime);
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleClientsideMovement(player, frameTime);
|
HandleClientsideMovement(player, frameTime);
|
||||||
@@ -34,13 +32,26 @@ namespace Content.Client.Physics.Controllers
|
|||||||
private void HandleClientsideMovement(EntityUid player, float frameTime)
|
private void HandleClientsideMovement(EntityUid player, float frameTime)
|
||||||
{
|
{
|
||||||
if (!TryComp(player, out InputMoverComponent? mover) ||
|
if (!TryComp(player, out InputMoverComponent? mover) ||
|
||||||
!TryComp(player, out TransformComponent? xform)) return;
|
!TryComp(player, out TransformComponent? xform))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PhysicsComponent? body = null;
|
PhysicsComponent? body = null;
|
||||||
|
TransformComponent? xformMover = xform;
|
||||||
|
|
||||||
if (mover.ToParent && HasComp<RelayInputMoverComponent>(xform.ParentUid))
|
if (mover.ToParent && HasComp<RelayInputMoverComponent>(xform.ParentUid))
|
||||||
{
|
{
|
||||||
if (!TryComp(xform.ParentUid, out body)) return;
|
if (!TryComp(xform.ParentUid, out body) ||
|
||||||
|
!TryComp(xform.ParentUid, out xformMover))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TryComp<InputMoverComponent>(xform.ParentUid, out var parentMover))
|
||||||
|
{
|
||||||
|
mover.LastGridAngle = parentMover.LastGridAngle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!TryComp(player, out body))
|
else if (!TryComp(player, out body))
|
||||||
{
|
{
|
||||||
@@ -84,7 +95,7 @@ namespace Content.Client.Physics.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Server-side should just be handled on its own so we'll just do this shizznit
|
// Server-side should just be handled on its own so we'll just do this shizznit
|
||||||
HandleMobMovement(mover, body, xform, frameTime);
|
HandleMobMovement(mover, body, xformMover, frameTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Filter GetSoundPlayers(EntityUid mover)
|
protected override Filter GetSoundPlayers(EntityUid mover)
|
||||||
|
|||||||
@@ -36,23 +36,33 @@ namespace Content.Server.Physics.Controllers
|
|||||||
|
|
||||||
foreach (var (mover, xform) in EntityQuery<InputMoverComponent, TransformComponent>(true))
|
foreach (var (mover, xform) in EntityQuery<InputMoverComponent, TransformComponent>(true))
|
||||||
{
|
{
|
||||||
if (relayQuery.TryGetComponent(mover.Owner, out var relayed) && relayed != null)
|
if (relayQuery.TryGetComponent(mover.Owner, out var relayed) && relayed.RelayEntity != null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
PhysicsComponent? body = null;
|
PhysicsComponent? body = null;
|
||||||
|
TransformComponent? xformMover = xform;
|
||||||
|
|
||||||
if (mover.ToParent && relayQuery.HasComponent(xform.ParentUid))
|
if (mover.ToParent && relayQuery.HasComponent(xform.ParentUid))
|
||||||
{
|
{
|
||||||
if (!bodyQuery.TryGetComponent(xform.ParentUid, out body)) continue;
|
if (!bodyQuery.TryGetComponent(xform.ParentUid, out body) ||
|
||||||
|
!TryComp(xform.ParentUid, out xformMover))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TryComp<InputMoverComponent>(xform.ParentUid, out var parentMover))
|
||||||
|
{
|
||||||
|
mover.LastGridAngle = parentMover.LastGridAngle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!bodyQuery.TryGetComponent(mover.Owner, out body))
|
else if (!bodyQuery.TryGetComponent(mover.Owner, out body))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleMobMovement(mover, body, xform, frameTime);
|
HandleMobMovement(mover, body, xformMover, frameTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleShuttleMovement(frameTime);
|
HandleShuttleMovement(frameTime);
|
||||||
|
|||||||
@@ -114,7 +114,8 @@ public abstract class SharedJetpackSystem : EntitySystem
|
|||||||
|
|
||||||
private void OnJetpackToggle(EntityUid uid, JetpackComponent component, ToggleJetpackEvent args)
|
private void OnJetpackToggle(EntityUid uid, JetpackComponent component, ToggleJetpackEvent args)
|
||||||
{
|
{
|
||||||
if (args.Handled) return;
|
if (args.Handled)
|
||||||
|
return;
|
||||||
|
|
||||||
if (TryComp<TransformComponent>(uid, out var xform) && !CanEnableOnGrid(xform.GridUid))
|
if (TryComp<TransformComponent>(uid, out var xform) && !CanEnableOnGrid(xform.GridUid))
|
||||||
{
|
{
|
||||||
@@ -130,8 +131,7 @@ public abstract class SharedJetpackSystem : EntitySystem
|
|||||||
private bool CanEnableOnGrid(EntityUid? gridUid)
|
private bool CanEnableOnGrid(EntityUid? gridUid)
|
||||||
{
|
{
|
||||||
return gridUid == null ||
|
return gridUid == null ||
|
||||||
(TryComp<GravityComponent>(gridUid, out var gravity) &&
|
(!HasComp<GravityComponent>(gridUid));
|
||||||
!gravity.Enabled);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnJetpackGetAction(EntityUid uid, JetpackComponent component, GetItemActionsEvent args)
|
private void OnJetpackGetAction(EntityUid uid, JetpackComponent component, GetItemActionsEvent args)
|
||||||
|
|||||||
@@ -114,7 +114,8 @@ namespace Content.Shared.Movement.Systems
|
|||||||
}
|
}
|
||||||
|
|
||||||
UsedMobMovement[mover.Owner] = true;
|
UsedMobMovement[mover.Owner] = true;
|
||||||
var weightless = _gravity.IsWeightless(mover.Owner, physicsComponent, xform);
|
// Specifically don't use mover.Owner because that may be different to the actual physics body being moved.
|
||||||
|
var weightless = _gravity.IsWeightless(physicsComponent.Owner, physicsComponent, xform);
|
||||||
var (walkDir, sprintDir) = GetVelocityInput(mover);
|
var (walkDir, sprintDir) = GetVelocityInput(mover);
|
||||||
var touching = false;
|
var touching = false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user