diff --git a/Scripts/Editor/NodeEditor.cs b/Scripts/Editor/NodeEditor.cs index 84e1c08..9940901 100644 --- a/Scripts/Editor/NodeEditor.cs +++ b/Scripts/Editor/NodeEditor.cs @@ -13,16 +13,40 @@ public class NodeEditor { public virtual void OnNodeGUI() { portRects.Clear(); - DrawNodePortsGUI(); + DrawDefaultNodePortsGUI(); DrawDefaultNodeBody(); } + /// Draws standard editors for all fields marked with or + protected void DrawDefaultNodePortsGUI() { + + Event e = Event.current; + + GUILayout.BeginHorizontal(); + + //Inputs + GUILayout.BeginVertical(); + for (int i = 0; i < target.InputCount; i++) { + DrawNodePortGUI(target.GetInput(i)); + } + GUILayout.EndVertical(); + + //Outputs + GUILayout.BeginVertical(); + for (int i = 0; i < target.OutputCount; i++) { + DrawNodePortGUI(target.GetOutput(i)); + } + GUILayout.EndVertical(); + + GUILayout.EndHorizontal(); + } + /// Draws standard field editors for all public fields protected void DrawDefaultNodeBody() { FieldInfo[] fields = GetInspectorFields(target); for (int i = 0; i < fields.Length; i++) { Type fieldType = fields[i].FieldType; - string fieldName = fields[i].Name; + string fieldName = fields[i].Name.PrettifyCamelCase(); object fieldValue = fields[i].GetValue(target); object[] fieldAttribs = fields[i].GetCustomAttributes(false); @@ -90,48 +114,15 @@ public class NodeEditor { EditorGUILayout.Space(); } - protected void DrawNodePortsGUI() { - - Event e = Event.current; - - GUILayout.BeginHorizontal(); - - //Inputs - GUILayout.BeginVertical(); - for (int i = 0; i < target.InputCount; i++) { - DrawNodePortGUI(target.GetInput(i)); - //NodePort input = target.GetInput(i); - //Rect r = GUILayoutUtility.GetRect(new GUIContent(input.name), NodeEditorResources.styles.GetInputStyle(input.type)); - //GUI.Label(r, input.name, NodeEditorResources.styles.GetInputStyle(input.type)); - //if (e.type == EventType.Repaint) portRects.Add(input, r); - //portConnectionPoints.Add(input, new Vector2(r.xMin, r.yMin + (r.height * 0.5f)) + target.position.position); - } - GUILayout.EndVertical(); - - //Outputs - GUILayout.BeginVertical(); - for (int i = 0; i < target.OutputCount; i++) { - DrawNodePortGUI(target.GetOutput(i)); - //NodePort output = target.GetOutput(i); - //Rect r = GUILayoutUtility.GetRect(new GUIContent(output.name), NodeEditorResources.styles.GetOutputStyle(output.type)); - //GUI.Label(r, output.name, NodeEditorResources.styles.GetOutputStyle(output.type)); - //if (e.type == EventType.Repaint) portRects.Add(output, r); - //portConnectionPoints.Add(output, new Vector2(r.xMax, r.yMin + (r.height * 0.5f)) + target.position.position); - } - GUILayout.EndVertical(); - - GUILayout.EndHorizontal(); - } - protected void DrawNodePortGUI(NodePort port) { GUIStyle style = port.direction == NodePort.IO.Input ? NodeEditorResources.styles.inputStyle : NodeEditorResources.styles.outputStyle; - Rect rect = GUILayoutUtility.GetRect(new GUIContent(port.name), style); + Rect rect = GUILayoutUtility.GetRect(new GUIContent(port.name.PrettifyCamelCase()), style); DrawNodePortGUI(rect, port); } protected void DrawNodePortGUI(Rect rect, NodePort port) { GUIStyle style = port.direction == NodePort.IO.Input ? NodeEditorResources.styles.inputStyle : NodeEditorResources.styles.outputStyle; - GUI.Label(rect, new GUIContent(port.name), style); + GUI.Label(rect, new GUIContent(port.name.PrettifyCamelCase()), style); Rect handleRect = new Rect(0, 0, 16, 16); switch (port.direction) { case NodePort.IO.Input: diff --git a/Scripts/Editor/NodeEditorUtilities.cs b/Scripts/Editor/NodeEditorUtilities.cs index 4b26bc3..9d683bd 100644 --- a/Scripts/Editor/NodeEditorUtilities.cs +++ b/Scripts/Editor/NodeEditorUtilities.cs @@ -5,6 +5,7 @@ using System.Reflection; using System.Linq; using System; +/// A set of editor-only utilities and extensions for UnityNodeEditorBase public static class NodeEditorUtilities { public static bool GetAttrib(Type classType, out T attribOut) where T : Attribute { @@ -32,6 +33,12 @@ public static class NodeEditorUtilities { return false; } + /// Turns camelCaseString into Camel Case String + public static string PrettifyCamelCase(this string camelCase) { + string s = System.Text.RegularExpressions.Regex.Replace(camelCase, "([A-Z])", " $1", System.Text.RegularExpressions.RegexOptions.Compiled).Trim(); + return char.ToUpper(s[0]) + s.Substring(1); + } + /// Return color based on type public static Color GetTypeColor(Type type) { UnityEngine.Random.InitState(type.Name.GetHashCode());