1.Create node view to corresponding region

main
taoria 3 years ago
parent a8b5020e69
commit 03193fc2f6
  1. 2
      TNode/Editor/GraphEditor.cs
  2. 13
      TNode/Editor/SearchWindowProvider.cs

@ -53,7 +53,7 @@ namespace TNode.Editor{
var dmaPos = dma.eventInfo.mousePosition+editorPosition; var dmaPos = dma.eventInfo.mousePosition+editorPosition;
SearchWindowContext searchWindowContext = new SearchWindowContext(dmaPos,200,200); SearchWindowContext searchWindowContext = new SearchWindowContext(dmaPos,200,200);
var searchWindow = CreateInstance<SearchWindowProvider>(); var searchWindow = CreateInstance<SearchWindowProvider>();
searchWindow.Setup(typeof(T),_graphView); searchWindow.Setup(typeof(T),_graphView,this);
Debug.Log(searchWindow); Debug.Log(searchWindow);
SearchWindow.Open(searchWindowContext, searchWindow); SearchWindow.Open(searchWindowContext, searchWindow);
}); });

@ -1,8 +1,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using TNode.BaseViews; using TNode.BaseViews;
using TNode.Cache; using TNode.Cache;
using TNode.Models; using TNode.Models;
using UnityEditor;
using UnityEditor.Experimental.GraphView; using UnityEditor.Experimental.GraphView;
using UnityEngine; using UnityEngine;
using UnityEngine.UIElements; using UnityEngine.UIElements;
@ -11,9 +13,11 @@ namespace TNode.Editor{
public class SearchWindowProvider:ScriptableObject,ISearchWindowProvider{ public class SearchWindowProvider:ScriptableObject,ISearchWindowProvider{
private Type _graphType; private Type _graphType;
private GraphView _graphView; private GraphView _graphView;
public void Setup(Type graph,GraphView graphView){ private EditorWindow _editor;
public void Setup(Type graph,GraphView graphView,EditorWindow editor){
_graphType = graph; _graphType = graph;
_graphView = graphView; _graphView = graphView;
_editor = editor;
} }
public List<SearchTreeEntry> CreateSearchTree(SearchWindowContext context){ public List<SearchTreeEntry> CreateSearchTree(SearchWindowContext context){
var nodeDataTypes = NodeEditorExtensions.GetGraphDataUsage(_graphType); var nodeDataTypes = NodeEditorExtensions.GetGraphDataUsage(_graphType);
@ -36,9 +40,14 @@ namespace TNode.Editor{
} }
public bool OnSelectEntry(SearchTreeEntry SearchTreeEntry, SearchWindowContext context){ public bool OnSelectEntry(SearchTreeEntry SearchTreeEntry, SearchWindowContext context){
var userData = SearchTreeEntry.userData; var userData = SearchTreeEntry.userData;
var relativePos = context.screenMousePosition - _editor.position.position;
var localPos = _graphView.WorldToLocal(relativePos);
if (userData is Type type){ if (userData is Type type){
var nodeView = NodeEditorExtensions.CreateNodeViewFromNodeType(type) as GraphElement; if (NodeEditorExtensions.CreateNodeViewFromNodeType(type) is GraphElement nodeView){
nodeView.SetPosition(
new Rect(localPos.x, localPos.y, nodeView.layout.width, nodeView.layout.height));
_graphView.AddElement(nodeView); _graphView.AddElement(nodeView);
}
return true; return true;
} }
return false; return false;

Loading…
Cancel
Save