diff --git a/Scripts/Editor/NodeEditorGUILayout.cs b/Scripts/Editor/NodeEditorGUILayout.cs
index 1751d78..82f5fe2 100644
--- a/Scripts/Editor/NodeEditorGUILayout.cs
+++ b/Scripts/Editor/NodeEditorGUILayout.cs
@@ -1,5 +1,6 @@
using System;
using System.Reflection;
+using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
@@ -136,5 +137,29 @@ namespace XNodeEditor {
GUI.DrawTexture(rect, NodeEditorResources.dot);
GUI.color = col;
}
+
+ /// Make a popup with all variable ids.
+ public static string VariablePopup(XNode.NodeGraph graph, string variableId, params GUILayoutOption[] options)
+ {
+ if (graph == null) return variableId;
+
+ List variablesStrings = new List();
+
+ foreach (var item in graph.variables)
+ variablesStrings.Add(item.id);
+
+ int originalIdx = variablesStrings.IndexOf(variableId);
+ int newIdx = EditorGUILayout.Popup(originalIdx, variablesStrings.ToArray(), options);
+
+ if (originalIdx == -1 && newIdx == -1)
+ {
+ EditorGUILayout.HelpBox("Looks like the variable that used to be here, doesn't exist anymore. \n id:" + variableId, MessageType.Error);
+ return variableId;
+ }
+
+ if (newIdx >= variablesStrings.Count)
+ return variableId;
+ return variablesStrings[newIdx];
+ }
}
}
\ No newline at end of file
diff --git a/Scripts/Editor/NodeGraphInspector.cs b/Scripts/Editor/NodeGraphInspector.cs
index 025d79b..32a5b24 100644
--- a/Scripts/Editor/NodeGraphInspector.cs
+++ b/Scripts/Editor/NodeGraphInspector.cs
@@ -13,13 +13,22 @@ namespace XNodeEditor
[CustomEditor(typeof(XNode.NodeGraph), true)]
public class NodeGraphInspector : Editor
{
- SerializedProperty nodesProp;
SerializedProperty variablesProp;
+ List _knownTypes = new List();
void OnEnable()
{
- nodesProp = serializedObject.FindProperty("nodes");
variablesProp = serializedObject.FindProperty("variables");
+ NodeGraph graph = target as NodeGraph;
+
+ foreach (var node in graph.nodes)
+ {
+ foreach (var port in node.Ports)
+ {
+ if (!_knownTypes.Contains(port.ValueType))
+ _knownTypes.Add(port.ValueType);
+ }
+ }
}
public override void OnInspectorGUI()
@@ -74,20 +83,12 @@ namespace XNodeEditor
additionalTypes.Add(typeof(string).AssemblyQualifiedName);
additionalTypes.Add(typeof(Vector3).AssemblyQualifiedName);
- /*
- Assembly asm = typeof(Vector3).Assembly;
- foreach (var colorPair in NodeEditorPreferences.typeColors)
+ foreach (var type in _knownTypes)
{
- var type = asm.GetType(colorPair.Key, false);
- Debug.Log(colorPair.Key + " " + type);
-
- if (type == null)
- continue;
if (additionalTypes.Contains(type.AssemblyQualifiedName))
continue;
- additionalTypes.Add(colorPair.Key);
+ additionalTypes.Add(type.AssemblyQualifiedName);
}
- */
foreach (var addType in additionalTypes)
{