using UnityEditor; using UnityEngine; namespace Unity.VisualScripting { [Widget(typeof(FlowStateTransition))] public sealed class FlowStateTransitionWidget : NesterStateTransitionWidget, IDragAndDropHandler { public FlowStateTransitionWidget(StateCanvas canvas, FlowStateTransition transition) : base(canvas, transition) { } #region Drag & Drop public DragAndDropVisualMode dragAndDropVisualMode => DragAndDropVisualMode.Generic; public bool AcceptsDragAndDrop() { return DragAndDropUtility.Is(); } public void PerformDragAndDrop() { UndoUtility.RecordEditedObject("Drag & Drop Macro"); transition.nest.source = GraphSource.Macro; transition.nest.macro = DragAndDropUtility.Get(); transition.nest.embed = null; GUI.changed = true; } public void UpdateDragAndDrop() { } public void DrawDragAndDropPreview() { GraphGUI.DrawDragAndDropPreviewLabel(new Vector2(edgePosition.x, outerPosition.yMax), "Replace with: " + DragAndDropUtility.Get().name, typeof(ScriptGraphAsset).Icon()); } public void ExitDragAndDrop() { } #endregion } }