Editor/StateMachineComponentWidget.cs
using System.Linq;
using Editor;
using Sandbox.UI;
using Button = Editor.Button;

namespace Sandbox.States.Editor;

[CustomEditor( typeof(StateMachineComponent)) ]
public sealed class StateMachineComponentWidget : ComponentEditorWidget
{
	public StateMachineComponentWidget( SerializedObject obj ) : base( obj )
	{
		Layout = Layout.Column();
		Layout.Margin = new Margin( 30f, 20f );

		RebuildUI();
	}

	public void RebuildUI()
	{
		Layout.Add( new Button( "Open in Editor", "edit" )
		{
			Clicked = OnOpenEditor
		} );
	}

	private void OnOpenEditor()
	{
		StateMachineView.Open( SerializedObject.Targets.OfType<StateMachineComponent>().First() );
	}
}