Components/VehicleRider.cs
using Clover.Player;
using Clover.Vehicles;
namespace Clover.Components;
/// <summary>
/// Helper component for getting players/NPCs to ride vehicles.
/// </summary>
[Category( "Clover/Components" )]
[Icon( "car" )]
public class VehicleRider : Component
{
public BaseVehicle Vehicle { get; set; }
public SittableNode Seat { get; set; }
[Rpc.Owner]
public void OnEnterVehicle( BaseVehicle baseVehicle, SittableNode seat, int seatIndex )
{
Vehicle = baseVehicle;
Seat = seat;
Seat.Occupant = GameObject;
}
[Rpc.Owner]
public void OnExitVehicle()
{
Vehicle = null;
Seat.Occupant = null;
Seat = null;
}
protected override void OnFixedUpdate()
{
base.OnFixedUpdate();
if ( Seat.IsValid() )
{
WorldPosition = Seat.WorldPosition;
if ( Components.TryGet<PlayerCharacter>( out var player ) )
{
player.ModelLook( Seat.WorldRotation );
}
}
}
}