コード例 #1
0
        protected override void SaveDataToAINode(AI.BehaviorTree tree, SaveTreeGraphNodeAsset nodeAssetSaver)
        {
            if (!IsValid())
            {
                return;
            }

            if (!UnityEditor.AssetDatabase.Contains(sourceNode))
            {
                AI.Node aiNode = tree.CreateNode(sourceNode);
                nodeAssetSaver.Invoke(this, aiNode.name);
            }

            List <NodeInfo> nextNodes   = GetNextNodes();
            List <AI.Node>  nextAINodes = new List <AI.Node>();

            foreach (NodeInfo bn in nextNodes)
            {
                nextAINodes.Add(bn.node.GetAINode());
            }

            sourceNode.sequenceNodes = nextAINodes.ToArray();

            UnityEditor.EditorUtility.SetDirty(this);
            UnityEditor.EditorUtility.SetDirty(sourceNode);
        }
コード例 #2
0
    protected BehaviourTreeUI.TreeGraph GetNewTree(AI.BehaviorTree sourceTree)
    {
        //Initialize tree scriptable object
        BehaviourTreeUI.TreeGraph uiTree = ScriptableObject.CreateInstance <BehaviourTreeUI.TreeGraph>();

        //Save scriptable object
        //
        string treePath = editorPath + "/" + treeFolder;

        if (!AssetDatabase.IsValidFolder(treePath))
        {
            AssetDatabase.CreateFolder(editorPath, treeFolder);
        }

        string fileName = sourceTree.name + fileNameSuffix;

        AssetDatabase.CreateAsset(uiTree, treePath + "/" + fileName + ".asset");
        AssetDatabase.CreateFolder(treePath, fileName);
        AssetDatabase.SaveAssets();
        //

        //Generate tree
        //
        uiTree.Tree = target as AI.BehaviorTree;
        uiTree.graphNodeFolderPath = treePath + "/" + fileName;
        uiTree.CreateTree();
        //

        return(uiTree);
    }
コード例 #3
0
    protected void ResetGraph(AI.BehaviorTree sourceTree)
    {
        string treePath     = editorPath + "/" + treeFolder;
        string treeFileName = sourceTree.name + fileNameSuffix;

        AssetDatabase.DeleteAsset(treePath + "/" + treeFileName);
        AssetDatabase.DeleteAsset(treePath + "/" + treeFileName + ".asset");
    }
コード例 #4
0
        protected override void SaveDataToAINode(AI.BehaviorTree tree, SaveTreeGraphNodeAsset nodeAssetSaver)
        {
            if (!IsValid())
            {
                return;
            }

            List <NodeInfo> nextNodes = GetNextNodes();

            sourceNode.NextNode = nextNodes[0].node.GetAINode();

            UnityEditor.EditorUtility.SetDirty(this);
            UnityEditor.EditorUtility.SetDirty(sourceNode);
        }
コード例 #5
0
    protected BehaviourTreeUI.TreeGraph GetTree(AI.BehaviorTree sourceTree)
    {
        string treePath = editorPath + "/" + treeFolder;
        string fileName = sourceTree.name + fileNameSuffix + ".asset";

        BehaviourTreeUI.TreeGraph treeAsset = AssetDatabase.LoadAssetAtPath <BehaviourTreeUI.TreeGraph>(treePath + "/" + fileName);

        if (treeAsset)
        {
            return(treeAsset);
        }
        else
        {
            return(GetNewTree(sourceTree));
        }
    }
コード例 #6
0
        protected override void SaveDataToAINode(AI.BehaviorTree tree, SaveTreeGraphNodeAsset nodeAssetSaver)
        {
            if (!IsValid())
            {
                return;
            }

            if (!UnityEditor.AssetDatabase.Contains(sourceNode))
            {
                AI.Node aiNode = tree.CreateNode(sourceNode);
                nodeAssetSaver.Invoke(this, aiNode.name);
            }

            //Confirms that the nodeBehavior is saved to AssetDatabase
            sourceNode.NodeBehavior = sourceNode.NodeBehavior;

            UnityEditor.EditorUtility.SetDirty(this);
            UnityEditor.EditorUtility.SetDirty(sourceNode);
        }
コード例 #7
0
        protected override void SaveDataToAINode(AI.BehaviorTree tree, SaveTreeGraphNodeAsset nodeAssetSaver)
        {
            if (!IsValid())
            {
                return;
            }

            if (!UnityEditor.AssetDatabase.Contains(sourceNode))
            {
                AI.Node aiNode = tree.CreateNode(sourceNode);
                nodeAssetSaver.Invoke(this, aiNode.name);
            }

            List <NodeInfo> nextNodes = GetNextNodes();

            foreach (NodeInfo bn in nextNodes)
            {
                if (bn.inSlot.name == "true:")
                {
                    sourceNode.nodeOnTrue = bn.node.GetAINode();
                }
                if (bn.inSlot.name == "false:")
                {
                    sourceNode.nodeOnFalse = bn.node.GetAINode();
                }
            }

            if (sourceNode.Logic == null)
            {
                sourceNode.Logic = new SelectorLogic();
            }
            sourceNode.Logic.PropertyOneToEvaluate = PropertyOneToEvaluate;
            sourceNode.Logic.Mode = Mode;

            switch (PropertyTwoType)
            {
            case PropertyType.BLACKBOARD:
            {
                sourceNode.Logic.PropertyTwoToEvaluate = PropertyTwoToEvaluate;
                break;
            }

            case PropertyType.BOOL:
            {
                sourceNode.Logic.PropertyTwoToEvaluate = "(bool)" + PropertyTwoToEvaluate;
                break;
            }

            case PropertyType.FLOAT:
            {
                sourceNode.Logic.PropertyTwoToEvaluate = "(float)" + PropertyTwoToEvaluate;
                break;
            }

            case PropertyType.INT:
            {
                sourceNode.Logic.PropertyTwoToEvaluate = "(int)" + PropertyTwoToEvaluate;
                break;
            }
            }

            UnityEditor.EditorUtility.SetDirty(this);
            UnityEditor.EditorUtility.SetDirty(sourceNode);
        }