// Use this for initialization void Start() { agent = BehaviourTreeUtils.LoadBehaviourTree(xmlBehaviourTree); if (agent == null) { Debug.LogError("Unable to parse XML file " + xmlBehaviourTree.name); } }
void OnGUI() { //reset gui variables scrollHeight = 0; scrollWidth = 0; lastPos = new Vector2(5, 5); //start code if (DeserializedNode == null) { if (btFile == null) { newFileCreatedName = GUI.TextField(new Rect(lastPos, defaultSize + new Vector2(30, 0)), newFileCreatedName); Tab(200); if (GUI.Button(new Rect(lastPos, defaultSize + new Vector2(30, 10)), new GUIContent("New Tree"))) { CreateNewXmlFile(); } AddLine(80); Rect pos = new Rect(new Vector2((position.width / 2) - (position.width / 2) / 2, lastPos.y), new Vector2(position.width / 2, position.height * 0.05f)); btFile = EditorGUI.ObjectField(pos, btFile, typeof(UnityEngine.Object), false); } if (btFile == null) { return; } filepath = AssetDatabase.GetAssetPath(btFile); DeserializedNode = BehaviourTreeUtils.LoadBehaviourTree((TextAsset)btFile); if (DeserializedNode != null) { SetParentToNodes(DeserializedNode); } } if (DeserializedNode == null) { GenericMenu toolsMenu = new GenericMenu(); foreach (var item in BehaviourTreeUtils.GetEnumerableOfType <Node>()) { //node.type = item; toolsMenu.AddItem(new GUIContent(item.Name), false, CreateRoot, item); } toolsMenu.DropDown(new Rect(lastPos + new Vector2(30, 0), new Vector2(150, 25))); return; } scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, true, true, GUILayout.Width(this.position.width), GUILayout.Height(this.position.height)); GUILayout.BeginHorizontal(); AddLine(); GUILayout.Label(new GUIContent(btFile.name)); if (ModifiedTreeLastFrame) { SetParentToNodes(DeserializedNode); } PrintNode(DeserializedNode); //printing tree AddLine(); AddLine(); //utilities buttons if (GUI.Button(new Rect(lastPos, defaultSize * 2f), new GUIContent("Change Tree (don't save changes)"))) //change tree button { btFile = null; DeserializedNode = null; } Tab(defaultSize.x * 2); if (GUI.Button(new Rect(lastPos, defaultSize * 2f), new GUIContent("Reset Tree (write on file)"))) //reset tree button { ResetTree(); } Tab(defaultSize.x * 2); if (GUI.Button(new Rect(lastPos, defaultSize * 2f), new GUIContent("Save Tree (write on file)"))) //save tree button { Save(); } GUILayout.Label("", GUILayout.Width(scrollWidth), GUILayout.Height(scrollHeight)); GUILayout.EndHorizontal(); EditorGUILayout.EndScrollView(); }