Exemplo n.º 1
0
        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();
                }
            }
        }
Exemplo n.º 2
0
        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();
                }
            }
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        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();
                }
            }
        }
Exemplo n.º 5
0
 /// <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();
        }
Exemplo n.º 7
0
        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();
            }
        }
Exemplo n.º 8
0
 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();
 }
Exemplo n.º 9
0
        /// <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();
        }
Exemplo n.º 10
0
 /// <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();
 }
Exemplo n.º 11
0
 /// <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();
 }
Exemplo n.º 12
0
 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();
 }
Exemplo n.º 13
0
 /// <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();
 }
Exemplo n.º 14
0
        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();
        }
Exemplo n.º 15
0
        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();
        }
Exemplo n.º 16
0
        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();
        }
Exemplo n.º 17
0
        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;
        }
Exemplo n.º 18
0
        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();
        }