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); }
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); }
protected void ResetGraph(AI.BehaviorTree sourceTree) { string treePath = editorPath + "/" + treeFolder; string treeFileName = sourceTree.name + fileNameSuffix; AssetDatabase.DeleteAsset(treePath + "/" + treeFileName); AssetDatabase.DeleteAsset(treePath + "/" + treeFileName + ".asset"); }
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); }
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)); } }
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); }
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); }