/// <summary> /// Saves a scriptable object behavior tree and sets the active asset back to the behavior manager /// </summary> /// <param name="behaviorManager"></param> /// <param name="filePath"></param> /// <param name="asset"></param> public static void SaveBehaviorAsset(this BehaviorManager behaviorManager, string filePath, BehaviorTreeManagerAsset asset, Merge root = null) { if (asset == null) { asset = ScriptableObject.CreateInstance <BehaviorTreeManagerAsset>(); } var runnerElementList = new List <BehaviorTreeElement>(); Debug.Log("Attempting save at path: " + filePath); int indexS = filePath.LastIndexOf("/") + 1; int indexD = filePath.LastIndexOf(".") - indexS; asset.name = filePath.Substring(indexS, indexD); var json = asset.RunnerElementsJSON; if (behaviorManager != null) { behaviorManager.Reinitialize(); asset.MilliSecondsBetweenTicks = behaviorManager.MilliSecondsBetweenTicks; asset.TimesToTick = behaviorManager.TimesToTick; TreeElementUtility.TreeToList(behaviorManager.Runner, runnerElementList); } if (root != null) { TreeElementUtility.TreeToList(root, runnerElementList); } if (json == "" || runnerElementList.Count == 0) { var runner = new Merge("Extension Root", -1, -1); runnerElementList.Add(runner); json = JsonConvert.SerializeObject(runnerElementList, Formatting.Indented); } json = JsonConvert.SerializeObject(runnerElementList, Formatting.Indented); asset.RunnerElementsJSON = json; Debug.Log("JSON Saved: " + asset.RunnerElementsJSON); var curPath = AssetDatabase.GetAssetPath(asset); if (curPath == null || curPath == "") { Debug.Log("Creating asset: " + filePath); AssetDatabase.CreateAsset(asset, filePath); } //AssetDatabase.Refresh(); EditorUtility.SetDirty(asset); AssetDatabase.SaveAssets(); }
public void SetTreeAsset(BehaviorTreeManagerAsset BehaviorTreeAsset) { if (BehaviorTreeAsset == null || BehaviorTreeAsset.RunnerElementsJSON == "") { CreateNewTree(); } _BehaviorTreeManagerAsset = BehaviorTreeAsset; _Initialized = false; }
void CreateNewTree() { CustomAssetUtility.CreateAsset <BehaviorTreeManagerAsset>(); _BehaviorTreeManagerAsset = (BehaviorTreeManagerAsset)Selection.activeObject; var root = new Merge("root", -1, -1); BehaviorExtensions.SaveBehaviorAsset(null, AssetDatabase.GetAssetPath(_BehaviorTreeManagerAsset), _BehaviorTreeManagerAsset, (Merge)root); }
void OnSelectionChange() { if (!_Initialized) { return; } var BehaviorTreeAsset = Selection.activeObject as BehaviorTreeManagerAsset; if (BehaviorTreeAsset != null && BehaviorTreeAsset != _BehaviorTreeManagerAsset) { _BehaviorTreeManagerAsset = BehaviorTreeAsset; _TreeView.treeModel.SetData(GetData()); _TreeView.Reload(); } }