예제 #1
0
파일: NodeEditor.cs 프로젝트: dudu502/AiFa
    void DrawNodeWindow(int id)
    {
        var node = GetNodeByID(id);

        if (node == null)
        {
            return;
        }
        EditorGUILayout.BeginVertical("box");

        EditorGUILayout.BeginVertical("box");
        node.FoldOutDes = EditorGUILayout.Foldout(node.FoldOutDes, "Name (Node Description)");
        if (node.FoldOutDes)
        {
            node.Name = EditorGUILayout.TextField("", node.Name);
        }
        EditorGUILayout.EndVertical();

        EditorGUILayout.BeginVertical("box");
        node.Type = (NodeGraph.NODETYPE)EditorGUILayout.EnumPopup("Type", node.Type);
        EditorGUILayout.EndVertical();

        EditorGUILayout.BeginVertical("box");
        node.FoldOutScriptName = EditorGUILayout.Foldout(node.FoldOutScriptName, "ScriptPath&Name");
        if (node.FoldOutScriptName)
        {
            node.ScriptName = EditorGUILayout.TextField("", node.ScriptName);
        }


        if (node.ScriptName != "")
        {
            string fullPath = Application.dataPath + AI.SCRIPT_OUTPUTPATH + node.ScriptName + ".txt";
            if (!File.Exists(fullPath))
            {
                if (GUILayout.Button("Create Script"))
                {
                    NodeScriptTemplate.NewEmptyScript(fullPath, node);
                }
            }
            else
            {
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("Delete Script"))
                {
                    NodeScriptTemplate.DeleteScript(fullPath);
                }
                if (GUILayout.Button("Edit Script"))
                {
                    System.Diagnostics.Process.Start(fullPath);
                }
                EditorGUILayout.EndHorizontal();
            }
        }
        EditorGUILayout.EndVertical();
        if (node.Parent != null)
        {
            if (node.Parent.Type == NodeGraph.NODETYPE.RANDOWSELECT)
            {
                node.Weight = EditorGUILayout.IntField("Weight *(Weight>0)", Mathf.Max(1, node.Weight));
            }
        }
        EditorGUILayout.EndVertical();

        EditorGUILayout.BeginVertical("box");
        node.ToolBarSelectIndex = GUILayout.Toolbar(node.ToolBarSelectIndex, NodeGraph.ToolBarNames);
        if (node.ToolBarSelectIndex == 0)
        {
            EditorGUILayout.BeginVertical("box");
            EditorGUILayout.HelpBox("Export Tree (Input Export Tree File Name)", MessageType.Info);
            node.OutPutPath = EditorGUILayout.TextField("", node.OutPutPath);
            if (node.OutPutPath != "")
            {
                if (!File.Exists(Application.dataPath + AI.TREE_OUTPUTPATH + node.OutPutPath + ".bytes"))
                {
                    if (GUILayout.Button("Export Tree"))
                    {
                        OnExportAllHandler(node);
                    }
                }
                else
                {
                    if (GUILayout.Button("Save Changes"))
                    {
                        OnExportAllHandler(node);
                    }
                }
            }
            EditorGUILayout.EndVertical();
        }
        else if (node.ToolBarSelectIndex == 1)
        {
            EditorGUILayout.BeginVertical("box");
            EditorGUILayout.HelpBox("Set SubTree (Drag In Tree Data)", MessageType.Info);
            node.SubTreeAsset = EditorGUILayout.ObjectField("SubTree TextAsset", node.SubTreeAsset, typeof(TextAsset)) as TextAsset;
            if (node.SubTreeAsset != null && GUILayout.Button("Add SubTree"))
            {
                node.AddNode(NodeGraph.CreateNodeGraph(JsonMapper.ToObject <JsonData>(node.SubTreeAsset.text)), new Vector2(200, 0));
            }
            EditorGUILayout.EndVertical();
        }
        EditorGUILayout.EndVertical();
        GUI.DragWindow(new Rect(0, 0, 1000, 20));
    }