private static void TypeColorsGUI(string key, Settings settings) { //Label EditorGUILayout.LabelField("Types", EditorStyles.boldLabel); //Display type colors. Save them if they are edited by the user foreach (var typeColor in typeColors) { Type type = typeColor.Key; string typeColorKey = NodeEditorUtilities.PrettyName(type); Color col = typeColor.Value; EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); col = EditorGUILayout.ColorField(typeColorKey, col); EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { typeColors[type] = col; if (settings.typeColors.ContainsKey(typeColorKey)) { settings.typeColors[typeColorKey] = col; } else { settings.typeColors.Add(typeColorKey, col); } SavePrefs(typeColorKey, settings); NodeEditorWindow.RepaintAll(); } } }
private static void TypeColorsGUI(string key, Settings settings) { //Label EditorGUILayout.LabelField("Types", EditorStyles.boldLabel); //Display type colors. Save them if they are edited by the user List <string> typeColorKeys = new List <string>(typeColors.Keys); foreach (string typeColorKey in typeColorKeys) { Color col = typeColors[typeColorKey]; EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); col = EditorGUILayout.ColorField(typeColorKey, col); EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { typeColors[typeColorKey] = col; if (settings.typeColors.ContainsKey(typeColorKey)) { settings.typeColors[typeColorKey] = col; } else { settings.typeColors.Add(typeColorKey, col); } SavePrefs(typeColorKey, settings); NodeEditorWindow.RepaintAll(); } } }
/// <summary> Create a node and save it in the graph asset </summary> public virtual Node CreateNode(Type type, Vector2 position) { XNode.Node node = target.AddNode(type); node.position = position; if (string.IsNullOrEmpty(node.name)) { // Automatically remove redundant 'Node' postfix string typeName = type.Name; if (typeName.EndsWith("Node")) { typeName = typeName.Substring(0, typeName.LastIndexOf("Node")); } node.name = UnityEditor.ObjectNames.NicifyVariableName(typeName); } AssetDatabase.AddObjectToAsset(node, target); if (NodeEditorPreferences.GetSettings().autoSave) { AssetDatabase.SaveAssets(); } NodeEditorWindow.RepaintAll(); return(node); }
private static void TypeColorsGUI(string key, Settings settings) { //Label EditorGUILayout.LabelField("Types", EditorStyles.boldLabel); //Clone keys so we can enumerate the dictionary and make changes. var typeColorKeys = new List <Type>(typeColors.Keys); //Display type colors. Save them if they are edited by the user foreach (var type in typeColorKeys) { string typeColorKey = NodeEditorUtilities.PrettyName(type); Color col = typeColors[type]; EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); col = EditorGUILayout.ColorField(typeColorKey, col); EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { typeColors[type] = col; if (settings.typeColors.ContainsKey(typeColorKey)) { settings.typeColors[typeColorKey] = col; } else { settings.typeColors.Add(typeColorKey, col); } SavePrefs(key, settings); NodeEditorWindow.RepaintAll(); } } }
/// <summary> Create a node and save it in the graph asset </summary> public virtual XNode.Node CreateNode(Type type, Vector2 position) { Undo.RecordObject(target, "Create Node"); XNode.Node node = target.AddNode(type); Undo.RegisterCreatedObjectUndo(node, "Create Node"); node.position = position; if (node.name == null || node.name.Trim() == "") node.name = NodeEditorUtilities.NodeDefaultName(type); if (!string.IsNullOrEmpty(AssetDatabase.GetAssetPath(target))) AssetDatabase.AddObjectToAsset(node, target); if (NodeEditorPreferences.GetSettings().autoSave) AssetDatabase.SaveAssets(); NodeEditorWindow.RepaintAll(); return node; }
/// <summary> Create a node and save it in the graph asset </summary> public virtual void CreateNode(Type type, Vector2 position) { INode node = Target.AddNode(type); node.Position = position; node.Name = UnityEditor.ObjectNames.NicifyVariableName(type.Name); if (NodeEditorPreferences.GetSettings().autoSave) { AssetDatabase.SaveAssets(); } NodeEditorWindow.RepaintAll(); }
private static void TypeColorsGUI() { //Label EditorGUILayout.LabelField("Type colors", EditorStyles.boldLabel); //Get saved type keys string[] typeKeys = new string[typeColors.Count]; typeColors.Keys.CopyTo(typeKeys, 0); //Display saved type colors foreach (var key in typeKeys) { EditorGUILayout.BeginHorizontal(); if (!EditorGUILayout.Toggle(new GUIContent(key, key), true)) { typeColors.Remove(key); SavePrefs(); EditorGUILayout.EndHorizontal(); continue; } Color col = typeColors[key]; col = EditorGUILayout.ColorField(col); typeColors[key] = col; EditorGUILayout.EndHorizontal(); } if (GUI.changed) { SavePrefs(); NodeEditorWindow.RepaintAll(); } //Get generated type keys string[] generatedTypeKeys = new string[generatedTypeColors.Count]; generatedTypeColors.Keys.CopyTo(generatedTypeKeys, 0); //Display generated type colors foreach (var key in generatedTypeKeys) { EditorGUILayout.BeginHorizontal(); if (EditorGUILayout.Toggle(new GUIContent(key, key), false)) { typeColors.Add(key, generatedTypeColors[key]); generatedTypeColors.Remove(key); SavePrefs(); EditorGUILayout.EndHorizontal(); continue; } Color col = generatedTypeColors[key]; EditorGUI.BeginDisabledGroup(true); col = EditorGUILayout.ColorField(col); EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); } }
private static void NodeSettingsGUI(string key, Settings settings) { //Label EditorGUILayout.LabelField("Node", EditorStyles.boldLabel); settings.highlightColor = EditorGUILayout.ColorField("Selection", settings.highlightColor); settings.noodleType = (NoodleType)EditorGUILayout.EnumPopup("Noodle type", (Enum)settings.noodleType); if (GUI.changed) { SavePrefs(key, settings); NodeEditorWindow.RepaintAll(); } EditorGUILayout.Space(); }
/// <summary> Delete all prefs </summary> public static void ResetPrefs() { if (EditorPrefs.HasKey("xNode.Settings")) { EditorPrefs.DeleteKey("xNode.Settings"); } settings = LoadPrefs(); typeColors = new Dictionary <string, Color>(); _gridTexture = NodeEditorResources.GenerateGridTexture(settings.gridLineColor, settings.gridBgColor); _crossTexture = NodeEditorResources.GenerateCrossTexture(settings.gridLineColor); NodeEditorWindow.RepaintAll(); }
/// <summary> Delete all prefs </summary> public static void ResetPrefs() { if (EditorPrefs.HasKey(lastKey)) { EditorPrefs.DeleteKey(lastKey); } if (settings.ContainsKey(lastKey)) { settings.Remove(lastKey); } typeColors = new Dictionary <Type, Color>(); VerifyLoaded(); NodeEditorWindow.RepaintAll(); }
/// <summary> Create a node and save it in the graph asset </summary> public virtual void CreateNode(Type type, Vector2 position) { XNode.Node node = target.AddNode(type); node.position = position; if (node.name == null || node.name.Trim() == "") { node.name = NodeEditorUtilities.NodeDefaultName(type); } AssetDatabase.AddObjectToAsset(node, target); if (NodeEditorPreferences.GetSettings().autoSave) { AssetDatabase.SaveAssets(); } NodeEditorWindow.RepaintAll(); }
private static void NodeSettingsGUI(string key, Settings settings) { //Label EditorGUILayout.LabelField("Node", EditorStyles.boldLabel); settings.highlightColor = EditorGUILayout.ColorField("Selection", settings.highlightColor); settings.noodleType = (NoodleType)EditorGUILayout.EnumPopup("Noodle type", (Enum)settings.noodleType); settings.portTooltips = EditorGUILayout.Toggle("Port Tooltips", settings.portTooltips); settings.dragToCreate = EditorGUILayout.Toggle(new GUIContent("Drag to Create", "Drag a port connection anywhere on the grid to create and connect a node"), settings.dragToCreate); if (GUI.changed) { SavePrefs(key, settings); NodeEditorWindow.RepaintAll(); } EditorGUILayout.Space(); }
/// <summary> Create a node and save it in the graph asset </summary> public virtual void CreateNode(Type type, Vector2 position) { XNode.Node node = target.AddNode(type); node.position = position; if (string.IsNullOrEmpty(node.name)) { node.name = UnityEditor.ObjectNames.NicifyVariableName(type.Name); } AssetDatabase.AddObjectToAsset(node, target); if (NodeEditorPreferences.GetSettings().autoSave) { AssetDatabase.SaveAssets(); } NodeEditorWindow.RepaintAll(); }
private static void GridSettingsGUI(string key, Settings settings) { //Label EditorGUILayout.LabelField("Grid", EditorStyles.boldLabel); settings.gridSnap = EditorGUILayout.Toggle("Snap", settings.gridSnap); settings.gridLineColor = EditorGUILayout.ColorField("Color", settings.gridLineColor); settings.gridBgColor = EditorGUILayout.ColorField(" ", settings.gridBgColor); if (GUI.changed) { SavePrefs(key, settings); NodeEditorWindow.RepaintAll(); } EditorGUILayout.Space(); }
private static void GridSettingsGUI(string key, Settings settings) { //Label EditorGUILayout.LabelField("Grid", EditorStyles.boldLabel); settings.gridSnap = EditorGUILayout.Toggle(new GUIContent("Snap", "Hold CTRL in editor to invert"), settings.gridSnap); settings.zoomToMouse = EditorGUILayout.Toggle(new GUIContent("Zoom to Mouse", "Zooms towards mouse position"), settings.zoomToMouse); settings.zoomOutLimit = EditorGUILayout.FloatField(new GUIContent("Zoom out Limit", "Upper limit to zoom"), settings.zoomOutLimit); settings.gridLineColor = EditorGUILayout.ColorField("Color", settings.gridLineColor); settings.gridBgColor = EditorGUILayout.ColorField(" ", settings.gridBgColor); if (GUI.changed) { SavePrefs(key, settings); NodeEditorWindow.RepaintAll(); } EditorGUILayout.Space(); }
private static void GridSettingsGUI() { //Label EditorGUILayout.LabelField("Grid", EditorStyles.boldLabel); settings.gridSnap = EditorGUILayout.Toggle("Snap", settings.gridSnap); settings.gridLineColor = EditorGUILayout.ColorField("Color", settings.gridLineColor); settings.gridBgColor = EditorGUILayout.ColorField(" ", settings.gridBgColor); if (GUI.changed) { SavePrefs(); _gridTexture = NodeEditorResources.GenerateGridTexture(settings.gridLineColor, settings.gridBgColor); _crossTexture = NodeEditorResources.GenerateCrossTexture(settings.gridLineColor); NodeEditorWindow.RepaintAll(); } EditorGUILayout.Space(); }
private static void LoadPrefs() { //Load type colors generatedTypeColors = new Dictionary <string, Color>(); if (!EditorPrefs.HasKey("unec_typecolors")) { EditorPrefs.SetString("unec_typecolors", ""); } string[] data = EditorPrefs.GetString("unec_typecolors").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); typeColors = new Dictionary <string, Color>(); for (int i = 0; i < data.Length; i += 2) { Color col; if (ColorUtility.TryParseHtmlString("#" + data[i + 1], out col)) { typeColors.Add(data[i], col); } } //Load grid colors if (!EditorPrefs.HasKey("unec_gridcolor0")) { EditorPrefs.SetString("unec_gridcolor0", ColorUtility.ToHtmlStringRGB(new Color(0.45f, 0.45f, 0.45f))); } ColorUtility.TryParseHtmlString("#" + EditorPrefs.GetString("unec_gridcolor0"), out _gridLineColor); if (!EditorPrefs.HasKey("unec_gridcolor1")) { EditorPrefs.SetString("unec_gridcolor1", ColorUtility.ToHtmlStringRGB(new Color(0.18f, 0.18f, 0.18f))); } ColorUtility.TryParseHtmlString("#" + EditorPrefs.GetString("unec_gridcolor1"), out _gridBgColor); //Load snap option if (EditorPrefs.HasKey("unec_gridsnap")) { _gridSnap = EditorPrefs.GetBool("unec_gridsnap"); } _gridTexture = NodeEditorResources.GenerateGridTexture(_gridLineColor, _gridBgColor); _crossTexture = NodeEditorResources.GenerateCrossTexture(_gridLineColor); NodeEditorWindow.RepaintAll(); prefsLoaded = true; }
private static void NodeSettingsGUI(string key, Settings settings) { //Label EditorGUILayout.LabelField("Node", EditorStyles.boldLabel); settings.tintColor = EditorGUILayout.ColorField("Tint", settings.tintColor); settings.highlightColor = EditorGUILayout.ColorField("Selection", settings.highlightColor); settings.noodlePath = (NoodlePath)EditorGUILayout.EnumPopup("Noodle path", (Enum)settings.noodlePath); settings.noodleThickness = EditorGUILayout.FloatField(new GUIContent("Noodle thickness", "Noodle Thickness of the node connections"), settings.noodleThickness); settings.noodleStroke = (NoodleStroke)EditorGUILayout.EnumPopup("Noodle stroke", (Enum)settings.noodleStroke); settings.portTooltips = EditorGUILayout.Toggle("Port Tooltips", settings.portTooltips); settings.dragToCreate = EditorGUILayout.Toggle(new GUIContent("Drag to Create", "Drag a port connection anywhere on the grid to create and connect a node"), settings.dragToCreate); settings.createFilter = EditorGUILayout.Toggle(new GUIContent("Create Filter", "Only show nodes that are compatible with the selected port"), settings.createFilter); //END if (GUI.changed) { SavePrefs(key, settings); NodeEditorWindow.RepaintAll(); } EditorGUILayout.Space(); }