Interactable/Sittable.cs
using Clover.Components;
using Clover.Player;
namespace Clover.Interactable;
[Category( "Clover/Interactable" )]
[Icon( "chair" )]
public class Sittable : Component, IInteract
{
[Property] public List<SittableNode> Seats { get; set; } = new();
protected override void OnAwake()
{
base.OnAwake();
foreach ( var seat in Seats )
{
seat.Sittable = this;
}
}
public void StartInteract( PlayerCharacter player )
{
SitDown( player );
}
public void FinishInteract( PlayerCharacter player )
{
}
public string GetInteractName()
{
return "Sit down";
}
public void SitDown( PlayerCharacter player )
{
var seat = Seats.FirstOrDefault( x => !x.IsOccupied );
if ( seat == null ) return;
seat.Occupant = player.GameObject;
player.Seat = seat;
player.EnterPosition = player.WorldPosition;
player.WorldPosition = seat.WorldPosition;
player.PlayerController.Yaw = seat.WorldRotation.Yaw();
Input.Clear( "use" );
}
}