return;
}
+ var physicsUid = player;
PhysicsComponent? body;
- TransformComponent? xformMover = xform;
+ var xformMover = xform;
if (mover.ToParent && HasComp<RelayInputMoverComponent>(xform.ParentUid))
{
{
return;
}
+
+ physicsUid = xform.ParentUid;
}
else if (!TryComp(player, out body))
{
}
// Server-side should just be handled on its own so we'll just do this shizznit
- HandleMobMovement(player, mover, body, xformMover, frameTime, xformQuery, moverQuery, relayTargetQuery);
+ HandleMobMovement(player, mover, physicsUid, body, xformMover, frameTime, xformQuery, moverQuery, relayTargetQuery);
}
protected override bool CanSound()
foreach (var mover in EntityQuery<InputMoverComponent>(true))
{
var uid = mover.Owner;
+ EntityUid physicsUid = uid;
+
if (relayQuery.HasComponent(uid))
continue;
{
continue;
}
+
+ physicsUid = xform.ParentUid;
}
else if (!bodyQuery.TryGetComponent(uid, out body))
{
continue;
}
- HandleMobMovement(uid, mover, body, xformMover, frameTime, xformQuery, moverQuery, relayTargetQuery);
+ HandleMobMovement(uid, mover, physicsUid, body, xformMover, frameTime, xformQuery, moverQuery, relayTargetQuery);
}
HandleShuttleMovement(frameTime);
protected void HandleMobMovement(
EntityUid uid,
InputMoverComponent mover,
+ EntityUid physicsUid,
PhysicsComponent physicsComponent,
TransformComponent xform,
float frameTime,
UsedMobMovement[uid] = true;
// Specifically don't use mover.Owner because that may be different to the actual physics body being moved.
- var weightless = _gravity.IsWeightless(uid, physicsComponent, xform);
+ var weightless = _gravity.IsWeightless(physicsUid, physicsComponent, xform);
var (walkDir, sprintDir) = GetVelocityInput(mover);
var touching = false;
if (!weightless || touching)
Accelerate(ref velocity, in worldTotal, accel, frameTime);
- PhysicsSystem.SetLinearVelocity(uid, velocity, body: physicsComponent);
+ PhysicsSystem.SetLinearVelocity(physicsUid, velocity, body: physicsComponent);
// Ensures that players do not spiiiiiiin
- PhysicsSystem.SetAngularVelocity(uid, 0, body: physicsComponent);
+ PhysicsSystem.SetAngularVelocity(physicsUid, 0, body: physicsComponent);
}
private void Friction(float minimumFrictionSpeed, float frameTime, float friction, ref Vector2 velocity)