void OnEnable() { BonsaiPreferences.Instance = BonsaiPreferences.LoadDefaultPreferences(); BonsaiEditor.FetchBehaviourNodes(); Editor = new BonsaiEditor(); Viewer = new BonsaiViewer(); Saver = new BonsaiSaver(); Saver.SaveMessage += (sender, message) => ShowNotification(new GUIContent(message)); Editor.Viewer = Viewer; Editor.Input.SaveRequest += (s, e) => Save(); Editor.CanvasChanged += (s, e) => Repaint(); Editor.Input.MouseDown += (s, e) => Repaint(); Editor.Input.MouseUp += (s, e) => Repaint(); Editor.EditorMode.ValueChanged += (s, mode) => { EditorMode = mode; }; EditorApplication.playModeStateChanged += PlayModeStateChanged; BuildCanvas(); // Always start in edit mode. // // The only way it can be in view mode is if the window is // already opened and the user selects a game object with a // behaviour tree component. Editor.EditorMode.Value = BonsaiEditor.Mode.Edit; }
/// <summary> /// Opens the tree in a Bonsai Window. /// </summary> /// <param name="tree">The tree to open</param> /// <returns> /// The window that opens the tree. Null if already opened. /// </returns> public static BonsaiWindow OpenTree(BehaviourTree tree, BonsaiEditor.Mode mode = BonsaiEditor.Mode.Edit) { if (!tree) { return(null); } // Try to find an editor window without a canvas... var windows = Resources.FindObjectsOfTypeAll <BonsaiWindow>(); bool isAlreadyOpened = windows.Any(w => w.Tree == tree); if (isAlreadyOpened) { return(null); } // Find a window without any tree. BonsaiWindow window = windows.FirstOrDefault(w => w.Tree == null); // No windows available, make a new one. if (!window) { window = CreateInstance <BonsaiWindow>(); window.Show(); } window.SetTree(tree, mode); return(window); }
void OnEnable() { BonsaiPreferences.Instance = BonsaiPreferences.LoadDefaultPreferences(); BonsaiEditor.FetchBehaviourNodes(); Editor = new BonsaiEditor(); Viewer = new BonsaiViewer(); Saver = new BonsaiSaver(); Saver.SaveMessage += (sender, message) => ShowNotification(new GUIContent(message)); Editor.Viewer = Viewer; Editor.Input.SaveRequest += (s, e) => Save(); Editor.CanvasChanged += (s, e) => Repaint(); Editor.Input.MouseDown += (s, e) => Repaint(); Editor.Input.MouseUp += (s, e) => Repaint(); Editor.EditorMode.ValueChanged += (s, mode) => { EditorMode = mode; }; EditorApplication.playModeStateChanged += PlayModeStateChanged; AssemblyReloadEvents.beforeAssemblyReload += BeforeAssemblyReload; Selection.selectionChanged += SelectionChanged; BuildCanvas(); Editor.EditorMode.Value = BonsaiEditor.Mode.Edit; SwitchToViewModeIfRequired(); }
public void SetEditorMode(BonsaiEditor.Mode status) { editorMode = status; if (Canvas == null || Canvas.Tree == null) { editorModeLabel = "No Tree Set"; } else { editorModeLabel = status == BonsaiEditor.Mode.Edit ? "Edit" : "View"; } }
public void SetTree(BehaviourTree bt, BonsaiEditor.Mode mode = BonsaiEditor.Mode.Edit) { behaviourTree = bt; BuildCanvas(); Editor.EditorMode.Value = mode; }