void InitStateMachine() { BoolCondition startDrawingCon = new BoolCondition(GetIsDrawing); NotCondition endDrawingCon = new NotCondition(startDrawingCon); Transition start = new Transition("Start Drawing", startDrawingCon, new List <Action> { EnableTrail }); Transition end = new Transition("Finish Drawing", endDrawingCon, new List <Action> { Snapshot }); State idle = new State("Idle", new List <Transition> { start }, new List <Action> { }, new List <Action> { }, new List <Action> { }); State drawing = new State("Drawing", new List <Transition> { end }, new List <Action> { }, new List <Action> { }, new List <Action> { }); start.SetTargetState(drawing); end.SetTargetState(idle); SM = new StateMachine(idle, new List <State> { idle, drawing }); SM.InitMachine(); }
private int ShowVarGUI(List <InvVar> attributes, int ID, bool changeID) { if (attributes.Count > 0) { if (changeID) { ID = ShowAttributeSelectorGUI(attributes, ID); } attributeNumber = Mathf.Min(attributeNumber, attributes.Count - 1); EditorGUILayout.BeginHorizontal(); if (attributes [attributeNumber].type == VariableType.Boolean) { boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition); EditorGUILayout.LabelField("Boolean:", GUILayout.MaxWidth(60f)); boolValue = (BoolValue)EditorGUILayout.EnumPopup(boolValue); } else if (attributes [attributeNumber].type == VariableType.Integer) { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); EditorGUILayout.LabelField("Integer:", GUILayout.MaxWidth(60f)); intValue = EditorGUILayout.IntField(intValue); } else if (attributes [attributeNumber].type == VariableType.PopUp) { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); EditorGUILayout.LabelField("Value:", GUILayout.MaxWidth(60f)); intValue = EditorGUILayout.Popup(intValue, attributes [attributeNumber].popUps); } else if (attributes [attributeNumber].type == VariableType.Float) { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); EditorGUILayout.LabelField("Float:", GUILayout.MaxWidth(60f)); floatValue = EditorGUILayout.FloatField(floatValue); } else if (attributes [attributeNumber].type == VariableType.String) { boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition); EditorGUILayout.LabelField("String:", GUILayout.MaxWidth(60f)); stringValue = EditorGUILayout.TextField(stringValue); } EditorGUILayout.EndHorizontal(); if (attributes [attributeNumber].type == VariableType.String) { checkCase = EditorGUILayout.Toggle("Case-senstive?", checkCase); } } else { EditorGUILayout.HelpBox("No variables exist!", MessageType.Info); ID = -1; attributeNumber = -1; } return(ID); }
// Constructor public FlowCommand(FlowCallback flowCallback, string label, GameObject boxPreFab, int indentLevel, bool IsLoop) { isLoop = IsLoop; this.label = label; this.commandBoxPreFab = boxPreFab; this.flowCallback = flowCallback; this.indentLevel = indentLevel; repetitionCounter = 0; repetitionMax = 1; condition = KFunctionRepeat; }
void SetupStateMachine() { // conditions. BoolCondition IsGamePausedCond = new BoolCondition(IsGamePaused); NotCondition IsGameNotPausedCond = new NotCondition(IsGamePausedCond); // transisiton. Transition PauseGame = new Transition("Pause Game", IsGamePausedCond, PauseGameFunc); Transition ResumeGame = new Transition("Resume Game", IsGameNotPausedCond, UnPauseGameFunc); // states. State UnPaused = new State("UnPaused", new List <Transition>() { PauseGame }, new List <Action>() { }, new List <Action>() { PausedUpdate }, new List <Action>() { }); State Paused = new State("Paused", new List <Transition>() { ResumeGame }, new List <Action>() { }, new List <Action>() { PausedUpdate }, new List <Action>() { }); // set target states. PauseGame.SetTargetState(Paused); ResumeGame.SetTargetState(UnPaused); // setup machine. PausedMachine = new StateMachine(null, UnPaused, Paused); PausedMachine.InitMachine(); }
private int ShowVarGUI(List <ActionParameter> parameters, List <GVar> vars, int ID, bool changeID) { if (vars.Count > 0) { if (changeID) { ID = ShowVarSelectorGUI(vars, ID); } variableNumber = Mathf.Min(variableNumber, vars.Count - 1); getVarMethod = (GetVarMethod)EditorGUILayout.EnumPopup("Compare with:", getVarMethod); if (parameters == null || parameters.Count == 0) { EditorGUILayout.BeginHorizontal(); } if (vars [variableNumber].type == VariableType.Boolean) { boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("Boolean:", parameters, checkParameterID, ParameterType.Boolean); if (checkParameterID < 0) { boolValue = (BoolValue)EditorGUILayout.EnumPopup("Boolean:", boolValue); } } } else if (vars [variableNumber].type == VariableType.Integer) { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("Integer:", parameters, checkParameterID, ParameterType.Integer); if (checkParameterID < 0) { intValue = EditorGUILayout.IntField("Integer:", intValue); } } } else if (vars [variableNumber].type == VariableType.PopUp) { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("Value:", parameters, checkParameterID, ParameterType.Integer); if (checkParameterID < 0) { intValue = EditorGUILayout.Popup("Value:", intValue, vars [variableNumber].popUps); } } } else if (vars [variableNumber].type == VariableType.Float) { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("Float:", parameters, checkParameterID, ParameterType.Float); if (checkParameterID < 0) { floatValue = EditorGUILayout.FloatField("Float:", floatValue); } } } else if (vars [variableNumber].type == VariableType.String) { boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("String:", parameters, checkParameterID, ParameterType.String); if (checkParameterID < 0) { stringValue = EditorGUILayout.TextField("String:", stringValue); } } } if (getVarMethod == GetVarMethod.GlobalVariable) { if (AdvGame.GetReferences().variablesManager == null || AdvGame.GetReferences().variablesManager.vars == null || AdvGame.GetReferences().variablesManager.vars.Count == 0) { EditorGUILayout.HelpBox("No Global variables exist!", MessageType.Info); } else { checkParameterID = Action.ChooseParameterGUI("Global variable:", parameters, checkParameterID, ParameterType.GlobalVariable); if (checkParameterID < 0) { compareVariableID = ShowVarSelectorGUI(AdvGame.GetReferences().variablesManager.vars, compareVariableID); } } } else if (getVarMethod == GetVarMethod.LocalVariable) { if (KickStarter.localVariables == null || KickStarter.localVariables.localVars == null || KickStarter.localVariables.localVars.Count == 0) { EditorGUILayout.HelpBox("No Local variables exist!", MessageType.Info); } else { checkParameterID = Action.ChooseParameterGUI("Local variable:", parameters, checkParameterID, ParameterType.LocalVariable); if (checkParameterID < 0) { compareVariableID = ShowVarSelectorGUI(KickStarter.localVariables.localVars, compareVariableID); } } } if (parameters == null || parameters.Count == 0) { EditorGUILayout.EndHorizontal(); } } else { EditorGUILayout.HelpBox("No variables exist!", MessageType.Info); ID = -1; variableNumber = -1; } return(ID); }
private void ShowVarGUI(List <ActionParameter> parameters, ActionParameter parameter) { if (parameters == null || parameters.Count == 0 || parameter == null) { EditorGUILayout.HelpBox("No parameters exist! Please define one in the Inspector.", MessageType.Warning); parameterLabel = ""; return; } parameterLabel = parameter.label; EditorGUILayout.BeginHorizontal(); if (parameter.parameterType == ParameterType.Boolean) { boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition); boolValue = (BoolValue)EditorGUILayout.EnumPopup(boolValue); } else if (parameter.parameterType == ParameterType.Integer) { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); intValue = EditorGUILayout.IntField(intValue); } else if (parameter.parameterType == ParameterType.Float) { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); floatValue = EditorGUILayout.FloatField(floatValue); } else if (parameter.parameterType == ParameterType.String) { boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition); stringValue = EditorGUILayout.TextField(stringValue); } else if (parameter.parameterType == ParameterType.GameObject) { compareObject = (GameObject)EditorGUILayout.ObjectField("Is equal to:", compareObject, typeof(GameObject), true); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); compareObjectConstantID = FieldToID(compareObject, compareObjectConstantID); compareObject = IDToField(compareObject, compareObjectConstantID, false); } else if (parameter.parameterType == ParameterType.UnityObject) { compareUnityObject = (Object)EditorGUILayout.ObjectField("Is equal to:", compareUnityObject, typeof(Object), true); } else if (parameter.parameterType == ParameterType.GlobalVariable) { if (AdvGame.GetReferences().variablesManager == null || AdvGame.GetReferences().variablesManager.vars == null || AdvGame.GetReferences().variablesManager.vars.Count == 0) { EditorGUILayout.HelpBox("No Global variables exist!", MessageType.Info); } else { compareVariableID = ShowVarSelectorGUI(AdvGame.GetReferences().variablesManager.vars, compareVariableID); } } else if (parameter.parameterType == ParameterType.InventoryItem) { ShowInvSelectorGUI(compareVariableID); } else if (parameter.parameterType == ParameterType.LocalVariable) { if (isAssetFile) { EditorGUILayout.HelpBox("Cannot compare local variables in an asset file.", MessageType.Warning); } else if (KickStarter.localVariables == null || KickStarter.localVariables.localVars == null || KickStarter.localVariables.localVars.Count == 0) { EditorGUILayout.HelpBox("No Local variables exist!", MessageType.Info); } else { compareVariableID = ShowVarSelectorGUI(KickStarter.localVariables.localVars, compareVariableID); } } else if (parameter.parameterType == ParameterType.Vector3) { vectorCondition = (VectorCondition)EditorGUILayout.EnumPopup("Condition:", vectorCondition); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (vectorCondition == VectorCondition.MagnitudeGreaterThan) { floatValue = EditorGUILayout.FloatField("Float:", floatValue); } else if (vectorCondition == VectorCondition.EqualTo) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Vector3:", GUILayout.MaxWidth(60f)); vector3Value = EditorGUILayout.Vector3Field("", vector3Value); EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndHorizontal(); }
private int ShowVarGUI(List <ActionParameter> parameters, List <GVar> _vars, int ID, bool changeID) { VariableType showType = VariableType.Boolean; if (changeID) { if (_vars != null && _vars.Count > 0) { ID = ShowVarSelectorGUI(_vars, ID, "Variable:"); variableNumber = Mathf.Min(variableNumber, _vars.Count - 1); getVarMethod = (GetVarMethod)EditorGUILayout.EnumPopup("Compare with:", getVarMethod); showType = _vars[variableNumber].type; } else { EditorGUILayout.HelpBox("No variables exist!", MessageType.Info); ID = -1; variableNumber = -1; return(ID); } placeholderType = showType; } else { showType = placeholderType; } switch (showType) { case VariableType.Boolean: boolCondition = (BoolCondition)EditorGUILayout.EnumPopup("Condition:", boolCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("Boolean:", parameters, checkParameterID, ParameterType.Boolean); if (checkParameterID < 0) { boolValue = (BoolValue)EditorGUILayout.EnumPopup("Boolean:", boolValue); } } break; case VariableType.Integer: intCondition = (IntCondition)EditorGUILayout.EnumPopup("Condition:", intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("Integer:", parameters, checkParameterID, ParameterType.Integer); if (checkParameterID < 0) { intValue = EditorGUILayout.IntField("Integer:", intValue); } } break; case VariableType.Float: intCondition = (IntCondition)EditorGUILayout.EnumPopup("Condition:", intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("Float:", parameters, checkParameterID, ParameterType.Float); if (checkParameterID < 0) { floatValue = EditorGUILayout.FloatField("Float:", floatValue); } } break; case VariableType.PopUp: intCondition = (IntCondition)EditorGUILayout.EnumPopup("Condition:", intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("Value:", parameters, checkParameterID, ParameterType.Integer); if (checkParameterID < 0) { if (changeID && _vars != null && _vars.Count > variableNumber) { string[] popUpLabels = _vars[variableNumber].GenerateEditorPopUpLabels(); intValue = EditorGUILayout.Popup("Value:", intValue, popUpLabels); placeholderPopUpLabelDataID = _vars[variableNumber].popUpID; } else if (!changeID && AdvGame.GetReferences().variablesManager != null) { // Parameter override placeholderPopUpLabelDataID = AdvGame.GetReferences().variablesManager.ShowPlaceholderPresetData(placeholderPopUpLabelDataID); PopUpLabelData popUpLabelData = AdvGame.GetReferences().variablesManager.GetPopUpLabelData(placeholderPopUpLabelDataID); if (popUpLabelData != null && placeholderPopUpLabelDataID > 0) { // Show placeholder labels intValue = EditorGUILayout.Popup("Index value:", intValue, popUpLabelData.GenerateEditorPopUpLabels()); } else { intValue = EditorGUILayout.IntField("Index value:", intValue); } } else { intValue = EditorGUILayout.IntField("Index value:", intValue); } } } break; case VariableType.String: boolCondition = (BoolCondition)EditorGUILayout.EnumPopup("Condition:", boolCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI("String:", parameters, checkParameterID, ParameterType.String); if (checkParameterID < 0) { stringValue = EditorGUILayout.TextField("String:", stringValue); } } checkCase = EditorGUILayout.Toggle("Case-sensitive?", checkCase); break; case VariableType.Vector3: vectorCondition = (VectorCondition)EditorGUILayout.EnumPopup("Condition:", vectorCondition); if (getVarMethod == GetVarMethod.EnteredValue) { if (vectorCondition == VectorCondition.MagnitudeGreaterThan) { checkParameterID = Action.ChooseParameterGUI("Float:", parameters, checkParameterID, ParameterType.Float); if (checkParameterID < 0) { floatValue = EditorGUILayout.FloatField("Float:", floatValue); } } else if (vectorCondition == VectorCondition.EqualTo) { checkParameterID = Action.ChooseParameterGUI("Vector3:", parameters, checkParameterID, ParameterType.Vector3); if (checkParameterID < 0) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Vector3:", GUILayout.MaxWidth(60f)); vector3Value = EditorGUILayout.Vector3Field("", vector3Value); EditorGUILayout.EndHorizontal(); } } } break; default: break; } if (getVarMethod == GetVarMethod.GlobalVariable) { if (AdvGame.GetReferences().variablesManager == null || AdvGame.GetReferences().variablesManager.vars == null || AdvGame.GetReferences().variablesManager.vars.Count == 0) { EditorGUILayout.HelpBox("No Global variables exist!", MessageType.Info); } else { checkParameterID = Action.ChooseParameterGUI("Global variable:", parameters, checkParameterID, ParameterType.GlobalVariable); if (checkParameterID < 0) { compareVariableID = ShowVarSelectorGUI(AdvGame.GetReferences().variablesManager.vars, compareVariableID, "Global variable:"); } } } else if (getVarMethod == GetVarMethod.LocalVariable) { if (localVariables == null || localVariables.localVars == null || localVariables.localVars.Count == 0) { EditorGUILayout.HelpBox("No Local variables exist!", MessageType.Info); } else { checkParameterID = Action.ChooseParameterGUI("Local variable:", parameters, checkParameterID, ParameterType.LocalVariable); if (checkParameterID < 0) { compareVariableID = ShowVarSelectorGUI(localVariables.localVars, compareVariableID, "Local variable:"); } } } else if (getVarMethod == GetVarMethod.ComponentVariable) { checkParameterID = Action.ChooseParameterGUI("Component variable:", parameters, checkParameterID, ParameterType.ComponentVariable); if (checkParameterID < 0) { compareVariables = (Variables)EditorGUILayout.ObjectField("Component", compareVariables, typeof(Variables), true); compareVariablesConstantID = FieldToID <Variables> (compareVariables, compareVariablesConstantID); compareVariables = IDToField <Variables> (compareVariables, compareVariablesConstantID, false); if (compareVariables != null) { compareVariableID = ShowVarSelectorGUI(compareVariables.vars, compareVariableID, "Component variable:"); } } } return(ID); }
private int ShowVarGUI (List<ActionParameter> parameters, List<GVar> vars, int ID, bool changeID) { if (vars.Count > 0) { if (changeID) { ID = ShowVarSelectorGUI (vars, ID); } variableNumber = Mathf.Min (variableNumber, vars.Count-1); getVarMethod = (GetVarMethod) EditorGUILayout.EnumPopup ("Compare with:", getVarMethod); if (parameters == null || parameters.Count == 0) { EditorGUILayout.BeginHorizontal (); } if (vars [variableNumber].type == VariableType.Boolean) { boolCondition = (BoolCondition) EditorGUILayout.EnumPopup (boolCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI ("Boolean:", parameters, checkParameterID, ParameterType.Boolean); if (checkParameterID < 0) { boolValue = (BoolValue) EditorGUILayout.EnumPopup ("Boolean:", boolValue); } } } else if (vars [variableNumber].type == VariableType.Integer) { intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI ("Integer:", parameters, checkParameterID, ParameterType.Integer); if (checkParameterID < 0) { intValue = EditorGUILayout.IntField ("Integer:", intValue); } } } else if (vars [variableNumber].type == VariableType.PopUp) { intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI ("Value:", parameters, checkParameterID, ParameterType.Integer); if (checkParameterID < 0) { intValue = EditorGUILayout.Popup ("Value:", intValue, vars [variableNumber].popUps); } } } else if (vars [variableNumber].type == VariableType.Float) { intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI ("Float:", parameters, checkParameterID, ParameterType.Float); if (checkParameterID < 0) { floatValue = EditorGUILayout.FloatField ("Float:", floatValue); } } } else if (vars [variableNumber].type == VariableType.String) { boolCondition = (BoolCondition) EditorGUILayout.EnumPopup (boolCondition); if (getVarMethod == GetVarMethod.EnteredValue) { checkParameterID = Action.ChooseParameterGUI ("String:", parameters, checkParameterID, ParameterType.String); if (checkParameterID < 0) { stringValue = EditorGUILayout.TextField ("String:", stringValue); } } } if (getVarMethod == GetVarMethod.GlobalVariable) { if (!variablesManager) { variablesManager = AdvGame.GetReferences ().variablesManager; } if (variablesManager == null || variablesManager.vars == null || variablesManager.vars.Count == 0) { EditorGUILayout.HelpBox ("No Global variables exist!", MessageType.Info); } else { checkParameterID = Action.ChooseParameterGUI ("Global variable:", parameters, checkParameterID, ParameterType.GlobalVariable); if (checkParameterID < 0) { compareVariableID = ShowVarSelectorGUI (variablesManager.vars, compareVariableID); } } } else if (getVarMethod == GetVarMethod.LocalVariable) { if (!localVariables && GameObject.FindWithTag (Tags.gameEngine) && GameObject.FindWithTag (Tags.gameEngine).GetComponent<LocalVariables>()) { localVariables = GameObject.FindWithTag (Tags.gameEngine).GetComponent <LocalVariables>(); } if (localVariables == null || localVariables.localVars == null || localVariables.localVars.Count == 0) { EditorGUILayout.HelpBox ("No Local variables exist!", MessageType.Info); } else { checkParameterID = Action.ChooseParameterGUI ("Local variable:", parameters, checkParameterID, ParameterType.LocalVariable); if (checkParameterID < 0) { compareVariableID = ShowVarSelectorGUI (localVariables.localVars, compareVariableID); } } } if (parameters == null || parameters.Count == 0) { EditorGUILayout.EndHorizontal (); } } else { EditorGUILayout.HelpBox ("No variables exist!", MessageType.Info); ID = -1; variableNumber = -1; } return ID; }
private void ShowVarGUI(List<ActionParameter> parameters, ActionParameter parameter) { if (parameters == null || parameters.Count == 0 || parameter == null) { EditorGUILayout.HelpBox ("No parameters exist! Please define one in the Inspector.", MessageType.Warning); parameterLabel = ""; return; } parameterLabel = parameter.label; EditorGUILayout.BeginHorizontal (); if (parameter.parameterType == ParameterType.Boolean) { boolCondition = (BoolCondition) EditorGUILayout.EnumPopup (boolCondition); boolValue = (BoolValue) EditorGUILayout.EnumPopup (boolValue); } else if (parameter.parameterType == ParameterType.Integer) { intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition); intValue = EditorGUILayout.IntField (intValue); } else if (parameter.parameterType == ParameterType.Float) { intCondition = (IntCondition) EditorGUILayout.EnumPopup (intCondition); floatValue = EditorGUILayout.FloatField (floatValue); } else if (parameter.parameterType == ParameterType.String) { boolCondition = (BoolCondition) EditorGUILayout.EnumPopup (boolCondition); stringValue = EditorGUILayout.TextField (stringValue); } else if (parameter.parameterType == ParameterType.GameObject) { compareObject = (GameObject) EditorGUILayout.ObjectField ("Is equal to:", compareObject, typeof (GameObject), true); compareObjectConstantID = FieldToID (compareObject, compareObjectConstantID); compareObject = IDToField (compareObject, compareObjectConstantID, false); } else if (parameter.parameterType == ParameterType.GlobalVariable) { if (AdvGame.GetReferences ().variablesManager == null || AdvGame.GetReferences ().variablesManager.vars == null || AdvGame.GetReferences ().variablesManager.vars.Count == 0) { EditorGUILayout.HelpBox ("No Global variables exist!", MessageType.Info); } else { compareVariableID = ShowVarSelectorGUI (AdvGame.GetReferences ().variablesManager.vars, compareVariableID); } } else if (parameter.parameterType == ParameterType.InventoryItem) { ShowInvSelectorGUI (compareVariableID); } else if (parameter.parameterType == ParameterType.LocalVariable) { if (isAssetFile) { EditorGUILayout.HelpBox ("Cannot compare local variables in an asset file.", MessageType.Warning); } else if (KickStarter.localVariables == null || KickStarter.localVariables.localVars == null || KickStarter.localVariables.localVars.Count == 0) { EditorGUILayout.HelpBox ("No Local variables exist!", MessageType.Info); } else { compareVariableID = ShowVarSelectorGUI (KickStarter.localVariables.localVars, compareVariableID); } } EditorGUILayout.EndHorizontal (); }
void SetupStateMachine() { // Conditions BoolCondition IsDeadCond = new BoolCondition(IsDead); BoolCondition IsAlertedCond = new BoolCondition(IsAlerted); NotCondition IsNotAlertedCond = new NotCondition(IsAlertedCond); // Transitions Transition Dying = new Transition("Dying", IsDeadCond, DyingFunc); Transition AlertedTrans = new Transition("Alerted", IsAlertedCond); Transition UnAlerted = new Transition("UnAlerted", IsNotAlertedCond); // States State Alive = new State("Alive", new List <Transition>() { Dying, AlertedTrans }, new List <Action>() { }, new List <Action>() { AliveUpdate }, new List <Action>() { EndAlive }); State Alerted = new State("Alerted", new List <Transition>() { Dying, UnAlerted }, new List <Action>() { BeginAlerted }, new List <Action>() { AlertedUpdate, AliveUpdate }, new List <Action>() { EndAlerted }); State Dead = new State("Dead", null, new List <Action>() { }, new List <Action>() { }, null); // Target States Dying.SetTargetState(Dead); AlertedTrans.SetTargetState(Alerted); UnAlerted.SetTargetState(Alive); // init machine myStateMachine = new StateMachine(null, Alive, Dead, Alerted); myStateMachine.InitMachine(); }
void SetupPlayerStateMachine() { // Conditions BoolCondition IsDeadCond = new BoolCondition(IsPlayerDead); NotCondition IsNotDeadCond = new NotCondition(IsDeadCond); BoolCondition IsAimingCond = new BoolCondition(IsPlayerAiming); NotCondition IsNotAimingCond = new NotCondition(IsAimingCond); // Transitions Transition Death = new Transition("Death", IsDeadCond, Dying); Transition Resurection = new Transition("Resurect", IsNotDeadCond); Transition StartAiming = new Transition("Begin Aim", IsAimingCond, BeginAim); Transition EndAiming = new Transition("End Aim", IsNotAimingCond, EndAim); // States State Alive = new State("Alive", new List <Transition>() { Death }, new List <Action>() { BeginAlive }, new List <Action>() { AliveUpdate }, new List <Action>() { EndAlive }); State Dead = new State("Dead", new List <Transition>() { Resurection }, null, null, null); State NotAiming = new State("Not Aiming", new List <Transition>() { StartAiming }, null, new List <Action>() { AimUpdate }, null); State Aiming = new State("Aiming", new List <Transition>() { EndAiming }, null, new List <Action>() { AimUpdate }, null); // Transition Target States Death.SetTargetState(Dead); Resurection.SetTargetState(Alive); StartAiming.SetTargetState(Aiming); EndAiming.SetTargetState(NotAiming); // Create Machine PSM = new StateMachine(null, Alive, Dead); PSM.InitMachine(); AimStateMachine = new StateMachine(null, Aiming, NotAiming); AimStateMachine.InitMachine(); }
private bool KFlowFunctionTrue(BoolCondition cond, ref int programCounter) { return true; }
public void setTypeOfComparison(VariableForComparison type) { variableForComparison = type; condition = KFunctionCompare; }
public void ShowGUI(int lowerValue, int upperValue) { if (!variablesManager) { variablesManager = AdvGame.GetReferences().variablesManager; } if (variablesManager) { // Create a string List of the field's names (for the PopUp box) List <string> labelList = new List <string>(); int i = 0; variableNumber = -1; if (variablesManager.vars.Count > 0) { foreach (GVar _var in variablesManager.vars) { labelList.Add(_var.label); // If a GlobalVar variable has been removed, make sure selected variable is still valid if (_var.id == variableID) { variableNumber = i; } i++; } if (variableNumber == -1) { // Wasn't found (variable was deleted?), so revert to zero Debug.LogWarning("Previously chosen variable no longer exists!"); variableNumber = 0; variableID = 0; } EditorGUILayout.BeginHorizontal(); variableNumber = EditorGUILayout.Popup(variableNumber, labelList.ToArray()); variableID = variablesManager.vars[variableNumber].id; if (variablesManager.vars[variableNumber].type == VariableType.Boolean) { boolCondition = (BoolCondition)EditorGUILayout.EnumPopup(boolCondition); boolValue = (BoolValue)EditorGUILayout.EnumPopup(boolValue); } else { intCondition = (IntCondition)EditorGUILayout.EnumPopup(intCondition); intValue = EditorGUILayout.IntField(intValue); } EditorGUILayout.EndHorizontal(); if (lowerValue > upperValue || lowerValue == upperValue) { lowerValue = upperValue; } resultActionTrue = (Action.ResultAction)EditorGUILayout.EnumPopup("If condition is met:", (Action.ResultAction)resultActionTrue); if (resultActionTrue == Action.ResultAction.RunCutscene) { linkedCutsceneTrue = (Cutscene)EditorGUILayout.ObjectField("Cutscene to run:", linkedCutsceneTrue, typeof(Cutscene), true); } else if (resultActionTrue == Action.ResultAction.Skip) { skipActionTrue = EditorGUILayout.IntSlider("Action # to skip to:", skipActionTrue, lowerValue, upperValue); } resultActionFail = (Action.ResultAction)EditorGUILayout.EnumPopup("If condition is not met:", (Action.ResultAction)resultActionFail); if (resultActionFail == Action.ResultAction.RunCutscene) { linkedCutsceneFail = (Cutscene)EditorGUILayout.ObjectField("Cutscene to run:", linkedCutsceneFail, typeof(Cutscene), true); } else if (resultActionFail == Action.ResultAction.Skip) { skipActionFail = EditorGUILayout.IntSlider("Action # to skip to:", skipActionFail, lowerValue, upperValue); } } else { EditorGUILayout.LabelField("No global variables exist!"); variableID = -1; variableNumber = -1; } } }
public bool ForCommand(BoolCondition condition, ref int programCounter) { if (condition() == false) programCounter = getEndForFromIndex(programCounter) + 1; return true; }
public bool EndForCommand(BoolCondition condition, ref int programCounter) { // Subtract 2 to jump the endFor programCounter = getBeginForFromIndex(programCounter - 2); return true; }