From 49b25e755b70ec412feaaf0b898d6f7e09d2bea6 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 28 Jun 2022 09:40:37 +0800 Subject: +node example --- .../Examples/RuntimeMathGraph/Scripts/NodeDrag.cs | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Other/NodeEditorExamples/Assets/xNode-examples/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs (limited to 'Other/NodeEditorExamples/Assets/xNode-examples/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs') diff --git a/Other/NodeEditorExamples/Assets/xNode-examples/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs b/Other/NodeEditorExamples/Assets/xNode-examples/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs new file mode 100644 index 00000000..96ba753d --- /dev/null +++ b/Other/NodeEditorExamples/Assets/xNode-examples/Examples/RuntimeMathGraph/Scripts/NodeDrag.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; + +namespace XNode.Examples.RuntimeMathNodes { + public class NodeDrag : MonoBehaviour, IPointerClickHandler, IBeginDragHandler, IDragHandler, IEndDragHandler { + private Vector3 offset; + private UGUIMathBaseNode node; + + private void Awake() { + node = GetComponentInParent(); + } + + public void OnDrag(PointerEventData eventData) { + node.transform.localPosition = node.graph.scrollRect.content.InverseTransformPoint(eventData.position) - offset; + } + + public void OnBeginDrag(PointerEventData eventData) { + Vector2 pointer = node.graph.scrollRect.content.InverseTransformPoint(eventData.position); + Vector2 pos = node.transform.localPosition; + offset = pointer - pos; + } + + public void OnEndDrag(PointerEventData eventData) { + node.transform.localPosition = node.graph.scrollRect.content.InverseTransformPoint(eventData.position) - offset; + Vector2 pos = node.transform.localPosition; + 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 -- cgit v1.1-26-g67d0