/// <summary> /// Displays a context menu to add variables to a blackboard. /// <param name="blackboard">The target blackboard to add a new variable.</param> /// </summary> public static void OnAddContextMenu(InternalBlackboard blackboard) { GUIUtility.hotControl = 0; GUIUtility.keyboardControl = 0; var menu = new GenericMenu(); menu.AddItem(new GUIContent("Float"), false, delegate() { BlackboardUtility.AddFloatVar(blackboard); }); menu.AddItem(new GUIContent("Int"), false, delegate() { BlackboardUtility.AddIntVar(blackboard); }); menu.AddItem(new GUIContent("Bool"), false, delegate() { BlackboardUtility.AddBoolVar(blackboard); }); menu.AddItem(new GUIContent("String"), false, delegate() { BlackboardUtility.AddStringVar(blackboard); }); menu.AddItem(new GUIContent("Vector3"), false, delegate() { BlackboardUtility.AddVector3Var(blackboard); }); menu.AddItem(new GUIContent("Rect"), false, delegate() { BlackboardUtility.AddRectVar(blackboard); }); menu.AddItem(new GUIContent("Color"), false, delegate() { BlackboardUtility.AddColorVar(blackboard); }); menu.AddItem(new GUIContent("Quaternion"), false, delegate() { BlackboardUtility.AddQuaternionVar(blackboard); }); menu.AddItem(new GUIContent("GameObject"), false, delegate() { BlackboardUtility.AddGameObjectVar(blackboard); }); menu.AddItem(new GUIContent("Texture"), false, delegate() { BlackboardUtility.AddTextureVar(blackboard); }); menu.AddItem(new GUIContent("Material"), false, delegate() { BlackboardUtility.AddMaterialVar(blackboard); }); menu.AddItem(new GUIContent("Object"), false, delegate() { BlackboardUtility.AddObjectVar(blackboard); }); menu.AddItem(new GUIContent("DynamicList"), false, delegate() { BlackboardUtility.AddDynamicList(blackboard); }); menu.AddItem(new GUIContent("FsmEvent"), false, delegate() { BlackboardUtility.AddFsmEvent(blackboard); }); if (!(blackboard is InternalGlobalBlackboard)) { menu.AddSeparator(""); menu.AddItem(new GUIContent("Global Blackboard"), false, delegate() { EditorApplication.ExecuteMenuItem("Tools/BehaviourMachine/Global Blackboard"); }); } menu.ShowAsContext(); }
/// <summary> /// Adds a new bool var to the supplied blackboard. /// Automatically handles undo. /// <param name="blackboard">The blackboard to add a new BoolVar.</param> /// <returns>The new variable.</returns> /// </summary> public static BoolVar AddBoolVar(InternalBlackboard blackboard) { BlackboardUtility.RegisterVariableUndo(blackboard, "Add Bool Variable"); var newVariable = blackboard.AddBoolVar(); EditorUtility.SetDirty(blackboard); return(newVariable); }
/// <summary> /// Adds a new FsmEvent var to the supplied blackboard. /// Automatically handles undo. /// <param name="blackboard">The blackboard to add a new FsmEventVar.</param> /// <returns>The new variable.</returns> /// </summary> public static FsmEvent AddFsmEvent(InternalBlackboard blackboard) { BlackboardUtility.RegisterVariableUndo(blackboard, "Add FsmEvent"); var newVariable = blackboard.AddFsmEvent(); EditorUtility.SetDirty(blackboard); return(newVariable); }
/// <summary> /// Draw the variables of a blackboard in the GUI. /// <param name="position">The position in the GUI to draw the variables.</param> /// <param name="blackboard">The blackboard to be drawn.</param> /// </summary> public static void DrawVariables(Rect position, InternalBlackboard blackboard) { if (blackboard == null) { return; } // Create styles if (s_Styles == null) { s_Styles = new BlackboardGUIUtility.Styles(); } // Update variable to remove s_VariableToRemove = null; // Is asset? bool isAsset = AssetDatabase.Contains(blackboard.gameObject); // Save GUI.changed EditorGUI.BeginChangeCheck(); // FloatVar position.height = c_OneLineHeight; foreach (var floatVar in blackboard.floatVars) { DrawFloatVar(position, floatVar); position.y += position.height; } // IntVar foreach (var intVar in blackboard.intVars) { DrawIntVar(position, intVar); position.y += position.height; } // BoolVar foreach (var boolVar in blackboard.boolVars) { DrawBoolVar(position, boolVar); position.y += position.height; } // StringVar foreach (var stringVar in blackboard.stringVars) { DrawStringVar(position, stringVar); position.y += position.height; } // Vector3Var foreach (var vector3Var in blackboard.vector3Vars) { DrawVector3Var(position, vector3Var); position.y += position.height; } // positionVar position.height = c_TwoLinesHeight; foreach (var rectVar in blackboard.rectVars) { DrawRectVar(position, rectVar); position.y += position.height; } // ColorVar position.height = c_OneLineHeight; foreach (var colorVar in blackboard.colorVars) { DrawColorVar(position, colorVar); position.y += position.height; } // QuaternionVar foreach (var quaternionVar in blackboard.quaternionVars) { DrawQuaternionVar(position, quaternionVar); position.y += position.height; } // GameObjectVar foreach (var gameObjectVar in blackboard.gameObjectVars) { DrawGameObjectVar(position, gameObjectVar, isAsset); position.y += position.height; } // TextureVar foreach (var textureVar in blackboard.textureVars) { DrawTextureVar(position, textureVar); position.y += position.height; } // MaterialVar foreach (var materialVar in blackboard.materialVars) { DrawMaterialVar(position, materialVar); position.y += position.height; } // ObjectVar position.height = c_TwoLinesHeight; foreach (var objectVar in blackboard.objectVars) { DrawObjectVar(position, objectVar, isAsset); position.y += position.height; } // DynamicList position.height = c_OneLineHeight; foreach (var dynamicList in blackboard.dynamicLists) { DrawDynamicList(position, dynamicList); position.y += position.height; } // FsmEvent foreach (var fsmEvent in blackboard.fsmEvents) { DrawFsmEvent(position, fsmEvent); position.y += position.height; } // Restore old GUI.changed EditorGUI.EndChangeCheck(); // Delete variable? if (s_VariableToRemove != null) { GUIUtility.hotControl = 0; GUIUtility.keyboardControl = 0; BlackboardUtility.RemoveVariable(s_VariableToRemove); s_VariableToRemove = null; } }