diff --git a/Examples/RuntimeMathGraph/Prefabs/NodeGraph.prefab b/Examples/RuntimeMathGraph/Prefabs/NodeGraph.prefab index fe4dd1b..50cf7b6 100644 Binary files a/Examples/RuntimeMathGraph/Prefabs/NodeGraph.prefab and b/Examples/RuntimeMathGraph/Prefabs/NodeGraph.prefab differ diff --git a/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs b/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs index 62c1893..96ba753 100644 --- a/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs +++ b/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs @@ -4,7 +4,7 @@ using UnityEngine; using UnityEngine.EventSystems; namespace XNode.Examples.RuntimeMathNodes { - public class NodeDrag : MonoBehaviour, IPointerDownHandler, IDragHandler, IEndDragHandler { + public class NodeDrag : MonoBehaviour, IPointerClickHandler, IBeginDragHandler, IDragHandler, IEndDragHandler { private Vector3 offset; private UGUIMathBaseNode node; @@ -16,7 +16,7 @@ namespace XNode.Examples.RuntimeMathNodes { node.transform.localPosition = node.graph.scrollRect.content.InverseTransformPoint(eventData.position) - offset; } - public void OnPointerDown(PointerEventData eventData) { + public void OnBeginDrag(PointerEventData eventData) { Vector2 pointer = node.graph.scrollRect.content.InverseTransformPoint(eventData.position); Vector2 pos = node.transform.localPosition; offset = pointer - pos; @@ -28,5 +28,13 @@ namespace XNode.Examples.RuntimeMathNodes { pos.y = -pos.y; node.node.position = pos; } + + public void OnPointerClick(PointerEventData eventData) { + if (eventData.button != PointerEventData.InputButton.Right) + return; + + node.graph.nodeContextMenu.selectedNode = node.node; + node.graph.nodeContextMenu.OpenAt(eventData.position); + } } } \ No newline at end of file diff --git a/Examples/RuntimeMathGraph/Scripts/RuntimeMathGraph.cs b/Examples/RuntimeMathGraph/Scripts/RuntimeMathGraph.cs index 114c6be..f1b39b9 100644 --- a/Examples/RuntimeMathGraph/Scripts/RuntimeMathGraph.cs +++ b/Examples/RuntimeMathGraph/Scripts/RuntimeMathGraph.cs @@ -16,7 +16,8 @@ namespace XNode.Examples.RuntimeMathNodes { public XNode.Examples.RuntimeMathNodes.UGUIDisplayValue runtimeDisplayValuePrefab; public XNode.Examples.RuntimeMathNodes.Connection runtimeConnectionPrefab; [Header("References")] - public UGUIContextMenu contextMenu; + public UGUIContextMenu graphContextMenu; + public UGUIContextMenu nodeContextMenu; public UGUITooltip tooltip; public ScrollRect scrollRect { get; private set; } @@ -26,8 +27,8 @@ namespace XNode.Examples.RuntimeMathNodes { // Create a clone so we don't modify the original asset graph = graph.Copy() as MathGraph; scrollRect = GetComponentInChildren(); - contextMenu.onClickSpawn -= SpawnNode; - contextMenu.onClickSpawn += SpawnNode; + graphContextMenu.onClickSpawn -= SpawnNode; + graphContextMenu.onClickSpawn += SpawnNode; } private void Start() { @@ -88,7 +89,7 @@ namespace XNode.Examples.RuntimeMathNodes { if (eventData.button != PointerEventData.InputButton.Right) return; - contextMenu.OpenAt(eventData.position); + graphContextMenu.OpenAt(eventData.position); } } } \ No newline at end of file diff --git a/Examples/RuntimeMathGraph/Scripts/UGUIContextMenu.cs b/Examples/RuntimeMathGraph/Scripts/UGUIContextMenu.cs index 7d8dd84..0d2e85c 100644 --- a/Examples/RuntimeMathGraph/Scripts/UGUIContextMenu.cs +++ b/Examples/RuntimeMathGraph/Scripts/UGUIContextMenu.cs @@ -9,7 +9,7 @@ namespace XNode.Examples.RuntimeMathNodes { public Action onClickSpawn; public CanvasGroup group; - + [HideInInspector] public Node selectedNode; private Vector2 pos; private void Start() { @@ -47,6 +47,13 @@ namespace XNode.Examples.RuntimeMathNodes { onClickSpawn(nodeType, pos); } + public void RemoveNode() { + RuntimeMathGraph runtimeMathGraph = GetComponentInParent(); + runtimeMathGraph.graph.RemoveNode(selectedNode); + runtimeMathGraph.Refresh(); + Close(); + } + public void OnPointerExit(PointerEventData eventData) { Close(); }