|
|
|
@ -1,5 +1,6 @@ |
|
|
|
|
using System; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using System.Linq; |
|
|
|
|
using TNodeCore.Editor.NodeGraphView; |
|
|
|
|
using TNodeCore.Editor.Tools.NodeCreator; |
|
|
|
|
using TNodeCore.Models; |
|
|
|
@ -9,7 +10,7 @@ using UnityEditor.Experimental.GraphView; |
|
|
|
|
using UnityEngine; |
|
|
|
|
using UnityEngine.UIElements; |
|
|
|
|
|
|
|
|
|
namespace TNode.Editor.Search{ |
|
|
|
|
namespace TNodeGraphViewImpl.Editor.Search{ |
|
|
|
|
public class NodeSearchWindowProvider:ScriptableObject,ISearchWindowProvider{ |
|
|
|
|
private Type _graphType; |
|
|
|
|
private GraphView _graphView; |
|
|
|
@ -21,20 +22,26 @@ namespace TNode.Editor.Search{ |
|
|
|
|
} |
|
|
|
|
public List<SearchTreeEntry> CreateSearchTree(SearchWindowContext context){ |
|
|
|
|
var nodeDataTypes = NodeEditorExtensions.GetGraphDataUsage(_graphType); |
|
|
|
|
var categories = NodeEditorExtensions.GetGraphCategories(_graphType); |
|
|
|
|
|
|
|
|
|
var list = new List<SearchTreeEntry>{ |
|
|
|
|
new SearchTreeGroupEntry(new GUIContent("Add New Node"), 0), |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
//TODO a node icon shall be given by some way |
|
|
|
|
var root = new SearchTreeGroupEntry(new GUIContent("Create"),0); |
|
|
|
|
list.Add(root); |
|
|
|
|
Texture2D icon = new Texture2D(2,2); |
|
|
|
|
foreach (var nodeDataType in nodeDataTypes){ |
|
|
|
|
Debug.Log(nodeDataType.Name); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
list.Add(new SearchTreeEntry(new GUIContent($" {nodeDataType.Name} ",icon)){ |
|
|
|
|
level = 1, |
|
|
|
|
userData = nodeDataType, |
|
|
|
|
foreach (var category in categories){ |
|
|
|
|
var categoryEntry = new SearchTreeGroupEntry(new GUIContent(category),1); |
|
|
|
|
list.Add(categoryEntry); |
|
|
|
|
nodeDataTypes.Where(x => NodeEditorExtensions.GetTypeCategory(x).Equals(category)).ToList().ForEach(x => { |
|
|
|
|
var nodeDataType = x; |
|
|
|
|
var nodeDataTypeEntry = new SearchTreeEntry(new GUIContent($" {nodeDataType.Name} ",icon)){ |
|
|
|
|
level = 2, |
|
|
|
|
userData = nodeDataType |
|
|
|
|
}; |
|
|
|
|
list.Add(nodeDataTypeEntry); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
return list; |
|
|
|
|
} |
|
|
|
@ -55,8 +62,5 @@ namespace TNode.Editor.Search{ |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public NodeSearchWindowProvider(){ |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |