WorldBuilder/WorldEntrance.cs
using Clover.Player;
using Clover.WorldBuilder;

namespace Clover;

[Category( "Clover/World" )]
[Icon( "world" )]
public class WorldEntrance : Component
{
	[RequireComponent] public WorldLayerObject WorldLayerObject { get; set; }
	[Property] public string EntranceId { get; set; }

	[Property] public Door ExitDoor { get; set; }

	protected override void DrawGizmos()
	{
		base.DrawGizmos();

		Gizmo.Draw.Arrow( Vector3.Up * 16f, Vector3.Up * 16 + Vector3.Forward * 32f );
		Gizmo.Draw.Model( "models/player/placeholder.vmdl" );
		Gizmo.Hitbox.BBox( BBox.FromPositionAndSize( Vector3.Up * 25, new Vector3( 16, 16, 50 ) ) );
		Gizmo.Draw.Text( EntranceId, new Transform( Vector3.Up * 50 ) );
	}

	[Rpc.Owner]
	public void OnTeleportTo( PlayerCharacter player )
	{
		if ( ExitDoor.IsValid() )
		{
			ExitDoor.CloseAfter( 1f );
		}
	}
}