diff --git a/Content.Server/Physics/Controllers/MoverController.cs b/Content.Server/Physics/Controllers/MoverController.cs index 87b883412d..b2f905ed95 100644 --- a/Content.Server/Physics/Controllers/MoverController.cs +++ b/Content.Server/Physics/Controllers/MoverController.cs @@ -46,7 +46,7 @@ namespace Content.Server.Physics.Controllers } HandleShuttleMovement(frameTime); - HandleVehicleMovement(frameTime); + HandleVehicleMovement(); foreach (var (mover, physics) in EntityManager.EntityQuery(true)) { @@ -263,12 +263,21 @@ namespace Content.Server.Physics.Controllers /// Add mobs riding vehicles to the list of mobs whose input /// should be ignored. /// - private void HandleVehicleMovement(float frameTime) + private void HandleVehicleMovement() { - foreach (var (rider, mover, xform) in EntityManager.EntityQuery()) + // TODO: Nuke this code. It's on my list. + foreach (var (rider, mover) in EntityQuery()) { if (rider.Vehicle == null) continue; _excludedMobs.Add(mover.Owner); + + if (!_excludedMobs.Add(rider.Vehicle.Owner)) continue; + + if (!TryComp(rider.Vehicle.Owner, out var vehicleMover) || + !TryComp(rider.Vehicle.Owner, out var vehicleBody) || + rider.Vehicle.Owner.IsWeightless(vehicleBody, mapManager: _mapManager, entityManager: EntityManager)) continue; + + HandleKinematicMovement(vehicleMover, vehicleBody); } } } diff --git a/Content.Shared/Vehicle/Components/RiderComponent.cs b/Content.Shared/Vehicle/Components/RiderComponent.cs index 846b566063..ad46596856 100644 --- a/Content.Shared/Vehicle/Components/RiderComponent.cs +++ b/Content.Shared/Vehicle/Components/RiderComponent.cs @@ -10,7 +10,6 @@ namespace Content.Shared.Vehicle.Components /// /// The vehicle this rider is currently riding. /// - [ViewVariables] - public VehicleComponent Vehicle = default!; + [ViewVariables] public VehicleComponent? Vehicle; } }