1
0
mirror of https://github.com/Siccity/xNode.git synced 2026-02-15 11:31:37 +08:00

Added 'remove node'

This commit is contained in:
Thor Brigsted 2018-05-12 15:15:12 +02:00
parent 42bb9a927a
commit eec282f4bc
4 changed files with 23 additions and 7 deletions

View File

@ -4,7 +4,7 @@ using UnityEngine;
using UnityEngine.EventSystems; using UnityEngine.EventSystems;
namespace XNode.Examples.RuntimeMathNodes { namespace XNode.Examples.RuntimeMathNodes {
public class NodeDrag : MonoBehaviour, IPointerDownHandler, IDragHandler, IEndDragHandler { public class NodeDrag : MonoBehaviour, IPointerClickHandler, IBeginDragHandler, IDragHandler, IEndDragHandler {
private Vector3 offset; private Vector3 offset;
private UGUIMathBaseNode node; private UGUIMathBaseNode node;
@ -16,7 +16,7 @@ namespace XNode.Examples.RuntimeMathNodes {
node.transform.localPosition = node.graph.scrollRect.content.InverseTransformPoint(eventData.position) - offset; 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 pointer = node.graph.scrollRect.content.InverseTransformPoint(eventData.position);
Vector2 pos = node.transform.localPosition; Vector2 pos = node.transform.localPosition;
offset = pointer - pos; offset = pointer - pos;
@ -28,5 +28,13 @@ namespace XNode.Examples.RuntimeMathNodes {
pos.y = -pos.y; pos.y = -pos.y;
node.node.position = pos; 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);
}
} }
} }

View File

@ -16,7 +16,8 @@ namespace XNode.Examples.RuntimeMathNodes {
public XNode.Examples.RuntimeMathNodes.UGUIDisplayValue runtimeDisplayValuePrefab; public XNode.Examples.RuntimeMathNodes.UGUIDisplayValue runtimeDisplayValuePrefab;
public XNode.Examples.RuntimeMathNodes.Connection runtimeConnectionPrefab; public XNode.Examples.RuntimeMathNodes.Connection runtimeConnectionPrefab;
[Header("References")] [Header("References")]
public UGUIContextMenu contextMenu; public UGUIContextMenu graphContextMenu;
public UGUIContextMenu nodeContextMenu;
public UGUITooltip tooltip; public UGUITooltip tooltip;
public ScrollRect scrollRect { get; private set; } 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 // Create a clone so we don't modify the original asset
graph = graph.Copy() as MathGraph; graph = graph.Copy() as MathGraph;
scrollRect = GetComponentInChildren<ScrollRect>(); scrollRect = GetComponentInChildren<ScrollRect>();
contextMenu.onClickSpawn -= SpawnNode; graphContextMenu.onClickSpawn -= SpawnNode;
contextMenu.onClickSpawn += SpawnNode; graphContextMenu.onClickSpawn += SpawnNode;
} }
private void Start() { private void Start() {
@ -88,7 +89,7 @@ namespace XNode.Examples.RuntimeMathNodes {
if (eventData.button != PointerEventData.InputButton.Right) if (eventData.button != PointerEventData.InputButton.Right)
return; return;
contextMenu.OpenAt(eventData.position); graphContextMenu.OpenAt(eventData.position);
} }
} }
} }

View File

@ -9,7 +9,7 @@ namespace XNode.Examples.RuntimeMathNodes {
public Action<Type, Vector2> onClickSpawn; public Action<Type, Vector2> onClickSpawn;
public CanvasGroup group; public CanvasGroup group;
[HideInInspector] public Node selectedNode;
private Vector2 pos; private Vector2 pos;
private void Start() { private void Start() {
@ -47,6 +47,13 @@ namespace XNode.Examples.RuntimeMathNodes {
onClickSpawn(nodeType, pos); onClickSpawn(nodeType, pos);
} }
public void RemoveNode() {
RuntimeMathGraph runtimeMathGraph = GetComponentInParent<RuntimeMathGraph>();
runtimeMathGraph.graph.RemoveNode(selectedNode);
runtimeMathGraph.Refresh();
Close();
}
public void OnPointerExit(PointerEventData eventData) { public void OnPointerExit(PointerEventData eventData) {
Close(); Close();
} }