public partial class Player : CharacterBody3D
{
/// Returns whether is the local player.
public bool IsLocal => this.IsAuthority();
/// Gets the peer ID of this player.
public int PeerId => GetMultiplayerAuthority();
/// Gets the workshop owned by this player.
public Workshop OwnedWorkshop => Game.Workshops.ByPeerId(PeerId);
/// Gets the workshop the player is physically in, if any.
public Workshop EnteredWorkshop { get; private set; }
public MovementController Movement { get; private set; }
public CameraController Camera { get; private set; }
public AnimationController Animation { get; private set; }
public PickupController Pickup { get; private set; }
public override void _EnterTree()
{
Movement = GetNode(nameof(MovementController));
Camera = GetNode(nameof(CameraController));
Animation = GetNode(nameof(AnimationController));
Pickup = GetNode(nameof(PickupController));
}
public void OnWorkshopTrackerAreaEntered(Area3D area)
{
if (area is Workshop workshop)
EnteredWorkshop = workshop;
}
public void OnWorkshopTrackerAreaExited(Area3D area)
{
if (area is Workshop)
EnteredWorkshop = null;
}
}