using UnityEditor; using UnityEngine; namespace Unity.VisualScripting { [Editor(typeof(IMacro))] public class MacroEditor : Inspector { public MacroEditor(Metadata metadata) : base(metadata) { } protected override float GetHeight(float width, GUIContent label) { var height = 0f; height += EditorGUIUtility.standardVerticalSpacing; height += GetButtonHeight(width); height += EditorGUIUtility.standardVerticalSpacing; return height; } protected override void OnGUI(Rect position, GUIContent label) { position = BeginLabeledBlock(metadata, position, GUIContent.none); y += EditorGUIUtility.standardVerticalSpacing; var buttonPosition = new Rect ( position.x, y, position.width, GetButtonHeight(position.width) ); OnButtonGUI(buttonPosition); y += buttonPosition.height; EndBlock(metadata); } private float GetButtonHeight(float width) { return EditorGUIUtility.singleLineHeight + 3; } private void OnButtonGUI(Rect sourcePosition) { if (GUI.Button(sourcePosition, "Edit Graph")) { GraphWindow.OpenActive(GraphReference.New((IMacro)metadata.value, true)); } } } }