private float SideMenuRemoveNode(Rect square, Vector2 pos, GUIStyle defaultNodeStyle, float offset, string name)
        {
            float   heightOffset = offset + 15;
            Vector2 size         = new Vector2(15, 15);

            pos.x = square.x + (square.width / 2) + 55;
            pos.y = square.y + square.height - (square.height - heightOffset);
            Rect rect = new Rect(pos, size);

            if (GUI.Button(rect, "-", EditorStyles.miniButton))
            {
                SideMenuAssetToUpdate.RemoveNode(name);
            }
            return(heightOffset);
        }
Example #2
0
        public override void OnInspectorGUI()
        {
            myTarget  = (SO_Node)target;
            assetName = EditorGUILayout.TextField("New asset name: ", assetName);
            if (!string.IsNullOrEmpty(assetName) && !string.IsNullOrWhiteSpace(assetName) &&
                assetName != myTarget.name)
            {
                if (GUILayout.Button("Change Name"))
                {
                    myTarget.ChangeName(assetName);
                }
            }

            GUILayout.Space(20);

            //serializedObject.Update();
            // EditorList.Show(serializedObject.FindProperty("m_nodes"), EditorListOption.ElementLabels | EditorListOption.Buttons);
            //serializedObject.ApplyModifiedProperties();

            DrawDefaultInspector();

            GUILayout.Space(20);

            if (myTarget.SwapableNodes)
            {
                tab = GUILayout.Toolbar(tab, new string[] { "Add", "Swap", "Remove" });
                switch (tab)
                {
                case 0:
                    op = (NODEOPTIONS)EditorGUILayout.EnumPopup("Node to create:", op);
                    if (op != NODEOPTIONS.None)
                    {
                        name = EditorGUILayout.TextField("Node Name: ", name);
                        if (!string.IsNullOrEmpty(name) && !string.IsNullOrWhiteSpace(name) && !myTarget.ContainsName(name))
                        {
                            if (GUILayout.Button("Add Node"))
                            {
                                SO_Node node = GetNodeType(op, name);
                                if (node != null)
                                {
                                    myTarget.AddNode(node);
                                }
                            }
                        }
                    }
                    break;

                case 1:
                    if (!myTarget.NodeAdd)
                    {
                        return;
                    }
                    nodeAName = EditorGUILayout.TextField("Node A Name: ", nodeAName);
                    nodeBName = EditorGUILayout.TextField("Node B Name: ", nodeBName);
                    if ((!string.IsNullOrEmpty(nodeAName) && !string.IsNullOrWhiteSpace(nodeAName) && myTarget.ContainsName(nodeAName)) &&
                        (!string.IsNullOrEmpty(nodeBName) && !string.IsNullOrWhiteSpace(nodeBName) && myTarget.ContainsName(nodeBName)))
                    {
                        if (GUILayout.Button("Swap Nodes"))
                        {
                            myTarget.MoveNodePositions(nodeAName, nodeBName);
                        }
                    }
                    break;

                case 2:
                    name = EditorGUILayout.TextField("Node Name: ", name);
                    if (!string.IsNullOrEmpty(name) && !string.IsNullOrWhiteSpace(name) && myTarget.ContainsName(name))
                    {
                        if (GUILayout.Button("Remove Nodes"))
                        {
                            myTarget.RemoveNode(name);
                            //AssetDatabase.Refresh();
                            // AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(myTarget), ImportAssetOptions.ForceUpdate);
                        }
                    }
                    break;

                default:
                    break;
                }
            }
            else
            {
                if (!myTarget.NodeAdd)
                {
                    return;
                }

                tab = GUILayout.Toolbar(tab, new string[] { "Add", "Remove" });
                switch (tab)
                {
                case 0:
                    op = (NODEOPTIONS)EditorGUILayout.EnumPopup("Node to create:", op);
                    if (op != NODEOPTIONS.None)
                    {
                        name = EditorGUILayout.TextField("Node Name: ", name);
                        if (!string.IsNullOrEmpty(name) && !string.IsNullOrWhiteSpace(name) && !myTarget.ContainsName(name))
                        {
                            if (GUILayout.Button("Add Node"))
                            {
                                SO_Node node = GetNodeType(op, name);
                                if (node != null)
                                {
                                    myTarget.AddNode(node);
                                }
                            }
                        }
                    }
                    break;

                case 1:
                    name = EditorGUILayout.TextField("Node Name: ", name);
                    if (!string.IsNullOrEmpty(name) && !string.IsNullOrWhiteSpace(name) && myTarget.ContainsName(name))
                    {
                        if (GUILayout.Button("Remove Nodes"))
                        {
                            myTarget.RemoveNode(name);
                            AssetDatabase.Refresh();
                            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(myTarget), ImportAssetOptions.ForceUpdate);
                        }
                    }
                    break;

                default:
                    break;
                }
            }
        }