Example #1
0
 public override void AddTransitions()
 {
     this.AddTransitionsTo(CharStates.BLOCK.ToS(), CharStates.IDLE.ToS(), CharStates.MOVE.ToS(), CharStates.FLY.ToS());
       //// RELEASE
       FSMTransition transition = null;
       transition = new FSMTransition(CharStates.BLOCK.ToS(), CharStates.BLOCK.ToS(Suffixes.Release));
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.FromInputMode(this.input), new InputCondition(CharVars.FromInputMode(this.input).ToS(), Operators.EQUAL, InputModes.RELEASE, InputModes.NONE))
     .Build()
       );
       this.controller.fsm.RegisterTransition(transition);
       transition = new FSMTransition(CharStates.BLOCK.ToS(Suffixes.Release), CharStates.FLY.ToS());
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.IS_FLYING, new BoolCondition(CharVars.IS_FLYING.ToS(), Operators.EQUAL, true))
     .Build()
       );
       transition.AddCondition(new AnimationEndCondition(this.targetObject.GetComponent<Animator>(), CharStates.BLOCK.ToS(Suffixes.Release)));
       this.controller.fsm.RegisterTransition(transition);
       transition = new FSMTransition(CharStates.BLOCK.ToS(Suffixes.Release), CharStates.IDLE.ToS());
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.IS_FLYING, new BoolCondition(CharVars.IS_FLYING.ToS(), Operators.EQUAL, false))
     .Build()
       );
       transition.AddCondition(new AnimationEndCondition(this.targetObject.GetComponent<Animator>(), CharStates.BLOCK.ToS(Suffixes.Release)));
       this.controller.fsm.RegisterTransition(transition);
 }
Example #2
0
 public override void AddTransitions()
 {
     FSMTransition transition = null;
     transition = new FSMTransition(CharStates.FALL.ToS(), CharStates.GLIDE.ToS());
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.JUMP_MODE, new InputCondition(CharVars.JUMP_MODE.ToS(), Operators.EQUAL, InputModes.HOLD))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
     transition = new FSMTransition(CharStates.GLIDE.ToS(), CharStates.FALL.ToS());
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.JUMP_MODE, new InputCondition(CharVars.JUMP_MODE.ToS(), Operators.EQUAL, InputModes.RELEASE, InputModes.NONE))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
     transition = new FSMTransition(CharStates.GLIDE.ToS(), CharStates.FALL.ToS());
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.HIT_GROUND, new BoolCondition(CharVars.HIT_GROUND.ToS(), Operators.EQUAL, true))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
 }
Example #3
0
 public override void AddTransitions()
 {
     this.AddTransitionsTo(CharStates.FALL.ToS(), CharStates.IDLE.ToS(), CharStates.MOVE.ToS(), CharStates.JUMP.ToS(), CharStates.AIR_JUMP.ToS(), CharStates.WALL_JUMP.ToS());
     FSMTransition transition = null;
     string landingState = CharStates.IDLE.ToS();
     if (this.softLanding) {
       landingState = CharStates.CROUCH.ToS();
     }
     transition = new FSMTransition(CharStates.FALL.ToS(), landingState);
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.HORIZONTAL_MODE, new InputCondition(CharVars.HORIZONTAL_MODE.ToS(), Operators.EQUAL, InputModes.RELEASE, InputModes.NONE))
       .WithVar(CharVars.HIT_GROUND, new BoolCondition(CharVars.HIT_GROUND.ToS(), Operators.EQUAL, true))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
     //TODO: Transition to Roll if SoftLanding is enabled?
     transition = new FSMTransition(CharStates.FALL.ToS(), CharStates.MOVE.ToS());
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.HORIZONTAL_MODE, new InputCondition(CharVars.HORIZONTAL_MODE.ToS(), Operators.EQUAL, InputModes.PRESS, InputModes.HOLD))
       .WithVar(CharVars.HIT_GROUND, new BoolCondition(CharVars.HIT_GROUND.ToS(), Operators.EQUAL, true))
       // .WithVar(CharVars.SPEED_MULTIPLIER, new FloatCondition(CharVars.SPEED_MULTIPLIER.ToS(), Operators.EQUAL, 1f))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
 }
 public override void AddTransitions()
 {
     FSMTransition transition = null;
     transition = new FSMTransition(EffectStates.CREATE.ToS(), EffectStates.DESTROY.ToS());
     transition.AddCondition(new TimeCondition(this.timeToLive));
     this.controller.fsm.RegisterTransition(transition);
 }
Example #5
0
    public void ChangeState(FSMTransition stateTransition) {
        Enum nextStateId = stateTransition.NextStateId;

        FSMState prevState = CurrentState;

        if(nextStateId == null) {
            CurrentState = _stateStack.Pop();
        } else {
            FSMState nextState = GetState(nextStateId);

            if(nextState == null)
                throw new Exception("State " + nextStateId.ToString() + " has not been defined.");

            if(stateTransition.PushCurrentState)
                _stateStack.Push(CurrentState);

            CurrentState = nextState;

            CurrentState.InitState(stateTransition);
        }

        Debug.Log("Changed state to: " + CurrentState.StateId.ToString());

        CurrentState.EnterState(stateTransition);

        if(prevState != null && !stateTransition.PushCurrentState)
            prevState.Dispose();
    }
 private StateWrapper BuildCharge()
 {
     StateWrapper stateWrapper = new StateWrapper();
       FSMState state = new ActionState(this.chargeStateName);
       state.WithDefaultBehaviours(this.gameObject);
       if (this.animationBehaviour != null) {
     state.AddStartBehaviour(this.animationBehaviour);
       }
       state.AddStartBehaviour(new SetAnimationSpeedBehaviour(this.gameObject, 0f));
       state.AddStartBehaviour(new SetVariableBehaviour(this.gameObject, this.chargeVariable, this.initialChargeMultiplier));
       foreach (FSMBehaviour behaviour in this.customStartBehaviours) {
     state.AddStartBehaviour(behaviour);
       }
       state.AddUpdateBehaviour(new ChargeBehaviour(this.gameObject, this.chargeVariable, this.maxChargeMultiplier, this.maxChargeSeconds));
       state.AddExitBehaviour(new SetAnimationSpeedBehaviour(this.gameObject, 1f));
       stateWrapper.state = state;
       FSMTransition transition = null;
       foreach (string startingState in this.startingStates) {
     transition = new FSMTransition(startingState, this.chargeStateName);
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.FromInputMode(this.input), new InputCondition(CharVars.FromInputMode(this.input).ToS(), Operators.EQUAL, InputModes.PRESS, InputModes.DOUBLE_TAP))
       .Build()
     );
     stateWrapper.transitions.Add(transition);
       }
       return stateWrapper;
 }
 public override void AddTransitions()
 {
     FSMTransition transition = null;
       // // KNOCKBACK RECOVER
       //
       transition = new FSMTransition(CharStates.GET_HIT.ToS(Suffixes.Knockback), CharStates.GET_HIT.ToS(Suffixes.Knockback, Suffixes.Recover));
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.HIT_GROUND, new BoolCondition(CharVars.HIT_GROUND.ToS(), Operators.EQUAL, false))
     .WithVar(CharVars.GENERIC_COUNTER, new IntCondition(CharVars.GENERIC_COUNTER.ToS(), Operators.EQUAL, this.knockbackRecoverCount))
     .Build()
       );
       this.controller.fsm.RegisterTransition(transition);
       transition = new FSMTransition(CharStates.GET_HIT.ToS(Suffixes.Knockback, Suffixes.Recover), CharStates.FLY.ToS());
       transition.AddCondition(new TimeCondition(this.knockbackRecoverDuration));
       this.controller.fsm.RegisterTransition(transition);
       // // DOWN RECOVER
       //
       transition = new FSMTransition(CharStates.GET_HIT.ToS(Suffixes.Knockback), CharStates.GET_HIT.ToS(Suffixes.Down, Suffixes.Recover));
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.HIT_GROUND, new BoolCondition(CharVars.HIT_GROUND.ToS(), Operators.EQUAL, true))
     .WithVar(CharVars.GENERIC_COUNTER, new IntCondition(CharVars.GENERIC_COUNTER.ToS(), Operators.EQUAL, this.knockbackRecoverCount))
     .Build()
       );
       this.controller.fsm.RegisterTransition(transition);
       transition = new FSMTransition(CharStates.GET_HIT.ToS(Suffixes.Down, Suffixes.Recover), CharStates.CROUCH.ToS());
       transition.AddCondition(new TimeCondition(this.downRecoverDuration));
       this.controller.fsm.RegisterTransition(transition);
 }
Example #8
0
 public override void AddTransitions()
 {
     FSMTransition transition = null;
     transition = new FSMTransition(CharStates.FLY.ToS(), CharStates.FLY_FAST.ToS());
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.HORIZONTAL_MODE, new InputCondition(CharVars.HORIZONTAL_MODE.ToS(), Operators.EQUAL, InputModes.DOUBLE_TAP))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
     transition = new FSMTransition(CharStates.FLY.ToS(), CharStates.FLY_FAST.ToS());
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.VERTICAL_MODE, new InputCondition(CharVars.VERTICAL_MODE.ToS(), Operators.EQUAL, InputModes.DOUBLE_TAP))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
     transition = new FSMTransition(CharStates.FLY_FAST.ToS(), CharStates.FLY.ToS());
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.HORIZONTAL_MODE, new InputCondition(CharVars.HORIZONTAL_MODE.ToS(), Operators.EQUAL, InputModes.RELEASE, InputModes.NONE))
       .WithVar(CharVars.VERTICAL_MODE, new InputCondition(CharVars.VERTICAL_MODE.ToS(), Operators.EQUAL, InputModes.RELEASE, InputModes.NONE))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
 }
Example #9
0
	public override void EnterState(FSMTransition transition) {
		base.EnterState(transition);

		GameData.Player = PlacePlayer();
		GameData.Monks = PlaceMonks();

		ExitState(new FSMTransition(GameState.GameReset));
	}
Example #10
0
    public virtual void ExitState(FSMTransition nextStateTransition) {
        //OnStateExit(nextStateId);

        if(nextStateTransition == null)
            throw new Exception("State transition can not be null.");

        NextStateTransition = nextStateTransition;
    }
Example #11
0
    public override void InitState(FSMTransition transition)
    {
        base.InitState(transition);

        _worldScreenManager = GameObject.Find("WorldScreenManager").
            GetComponent<WorldScreenManager>();

        _camera = Camera.main.GetComponent<BoundedTargetCamera>();
    }
Example #12
0
    public override void EnterState(FSMTransition transition) {
        base.EnterState(transition);

		_player = GameData.Player.GetComponent<CharacterController>();
		_playerSource = _player.GetComponent<AudioSource>();

		_moved = false;

		_bounds = GetMovementBounds();
    }
Example #13
0
    public override void ExitState(FSMTransition nextStateTransition)
    {
        // set up camera transition response
        _cameraMover.OnMoveBegin -= OnCameraMoveBegin;
        _cameraMover.OnMoveEnd -= OnCameraMoveEnd;

        DisableInput();

        base.ExitState(nextStateTransition);
    }
Example #14
0
	public override void ExitState(FSMTransition transition) {
		_followCam.Distance = _originalDistance;

		_source = null;

		_light.intensity = _originalLightIntensity;
		_light = null;

		base.ExitState(transition);
	}
Example #15
0
	public override void ExitState(FSMTransition transition) {
		SetPlayerVisible(true);

		GameObject.Destroy(_smoke);
		_smoke = null;

		_idol.GetComponent<AudioSource>().Stop();
		_idol = null;

		base.ExitState(transition);
	}
Example #16
0
    public override void ExitState(FSMTransition nextStateTransition)
    {
        _camMover.OnMoveBegin -= OnCameraMoveBegin;
        _camMover.OnMoveEnd -= OnCameraMoveEnd;

        _player.GetComponent<RigidBodyMover>().OnMove -= OnPlayerMove;

        DisableInput();

        base.ExitState(nextStateTransition);
    }
Example #17
0
    public override void EnterState(FSMTransition transition)
    {
        base.EnterState(transition);

        if(_player == null)
            _player = GameObject.Find("Player");

        XY screenCoord = GameData.CurrentScreenCoord;

        _navBounds = _worldScreenManager.GetScreenBounds(screenCoord);
        _camera.Bounds = _worldScreenManager.GetScreenCameraBounds(screenCoord);
    }
Example #18
0
 public override void AddTransitions()
 {
     FSMTransition transition = null;
       transition = new FSMTransition(CharStates.GET_HIT.ToS(Suffixes.Fall), CharStates.GET_HIT.ToS(Suffixes.Down));
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.HIT_GROUND, new BoolCondition(CharVars.HIT_GROUND.ToS(), Operators.EQUAL, true))
     .Build()
       );
       this.controller.fsm.RegisterTransition(transition);
 }
Example #19
0
	public override void EnterState(FSMTransition transition) {
		base.EnterState(transition);

		_followCam = Camera.main.GetComponent<FollowCamera>();
		_originalDistance = _followCam.Distance;

		_light = (Light)GameObject.Find("Directional Light").GetComponent<Light>();
		_originalLightIntensity = _light.intensity;

		SilenceMonks();
		SilenceMusic();
	}
Example #20
0
    public void DeleteTransition(FSMTransition trans)
    {
        if (trans == FSMTransition.NullTransition)
        {
            return;
        }

        if (map.ContainsKey(trans))
        {
            map.Remove(trans);
            return;
        }
    }
Example #21
0
	public override void ExitState(FSMTransition transition) {
		Camera.main.GetComponent<FollowCamera>().Target = GameData.Player.transform;

		GameObject.Destroy(_camTarget);

		_idol.transform.position = _originalIdolPosition;

		foreach(GameObject monk in GameData.Monks) {
			Vector3 monkPos = monk.transform.position;
			monk.transform.position = new Vector3(monkPos.x, 0, monkPos.z);
		}

		base.ExitState(transition);
	}
Example #22
0
 void AddTransitionsTo(string toState, params string[] fromStates)
 {
     FSMTransition transition = null;
       foreach (string fromState in fromStates) {
     transition = new FSMTransition(fromState, toState);
     transition.AddConditions(
       new VarConditionsBuilder()
       .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
       .WithVar(CharVars.FromInputMode(this.input), new InputCondition(CharVars.FromInputMode(this.input).ToS(), Operators.EQUAL, InputModes.HOLD))
       .Build()
     );
     this.controller.fsm.RegisterTransition(transition);
       }
 }
Example #23
0
	public override void EnterState(FSMTransition transition) {
		base.EnterState(transition);

		SetPixelAlpha(0);

		PlayEndMusic(_loseMusic, 0.7f);

		_idol.GetComponent<AudioSource>().clip = _godChant;
		_idol.GetComponent<AudioSource>().Play();

		_flashFrameDelay = 60;
		_flashFrameDuration = 5;
		_flashStarted = false;
	}
Example #24
0
	public override void EnterState(FSMTransition transition) {
		base.EnterState(transition);

		_camTarget = new GameObject();
		_camTarget.transform.position = GameData.Player.transform.position;

		_idol = GameObject.Find("Idol");
		_originalIdolPosition = _idol.transform.position;
		_idol.GetComponent<AudioSource>().Play();

		Camera.main.GetComponent<FollowCamera>().Target = _camTarget.transform;

		PlayEndMusic(_winMusic);
	}
Example #25
0
 public override void AddTransitions()
 {
     FSMTransition transition = null;
       transition = new FSMTransition(CharStates.BLOCK.ToS(), CharStates.BLOCK.ToS(Suffixes.Hit));
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.DAMAGE_EFFECT, new IntCondition(CharVars.DAMAGE_EFFECT.ToS(), Operators.EQUAL, (int)AttackEffects.HIT))
     .Build()
       );
       this.controller.fsm.RegisterTransition(transition);
       transition = new FSMTransition(CharStates.BLOCK.ToS(Suffixes.Hit), CharStates.BLOCK.ToS());
       transition.AddCondition(new AnimationEndCondition(this.targetObject.GetComponent<Animator>(), CharStates.BLOCK.ToS()));
       this.controller.fsm.RegisterTransition(transition);
 }
Example #26
0
 void AddTransitionsTo(string toState, params string[] fromStates)
 {
     FSMTransition transition = null;
     foreach (string fromState in fromStates) {
       transition = new FSMTransition(fromState, toState);
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.VERTICAL_SPEED, new FloatCondition(CharVars.VERTICAL_SPEED.ToS(), Operators.LESS_THAN, 0f))
     .WithVar(CharVars.HIT_GROUND, new BoolCondition(CharVars.HIT_GROUND.ToS(), Operators.EQUAL, false))
     .Build()
       );
       this.controller.fsm.RegisterTransition(transition);
     }
 }
Example #27
0
 void AddTransitionsTo(string toState, params string[] fromStates)
 {
     FSMTransition transition = null;
     foreach (string fromState in fromStates) {
       transition = new FSMTransition(fromState, toState);
       transition.AddConditions(
     new VarConditionsBuilder()
     .IgnoringInputs().IgnoringAttributes().IgnoringDirections().IgnoringPositions().IgnoringFlags().IgnoringCombat()
     .WithVar(CharVars.JUMP_MODE, new InputCondition(CharVars.JUMP_MODE.ToS(), Operators.EQUAL, InputModes.PRESS, InputModes.DOUBLE_TAP))
     .WithVar(CharVars.HIT_WALL, new BoolCondition(CharVars.HIT_WALL.ToS(), Operators.EQUAL, true))
     .Build()
       );
       this.controller.fsm.RegisterTransition(transition);
     }
 }
Example #28
0
	public override void InitState(FSMTransition transition) {
		base.InitState(transition);

		_loseMusic = Resources.Load("Music/Death Bolt") as AudioClip;
		_godChant = Resources.Load("Music/God Chant") as AudioClip;
		_smokePrototype = Resources.Load("Prefabs/Smoke") as GameObject;

		_idol = GameObject.Find("Idol");

		_flashColor = Color.white;

		_flashPixel = new Texture2D(1, 1);
		_flashPixel.SetPixel(0, 0, _flashColor);
		_flashPixel.Apply();
	}
Example #29
0
 public void AddTransition(FSMTransition trans, FSMStateId id)
 {
     if (trans == FSMTransition.NullTransition)
     {
         return;
     }
     if (id == FSMStateId.NullState)
     {
         return;
     }
     if (map.ContainsKey(trans))
     {
         return;
     }
     map.Add(trans, id);
 }
Example #30
0
    /// This method deletes a pair transition-state from this state´s map.
    /// If the transition was not inside the state´s map, an ERROR message is printed.
    public void DeleteTransition(FSMTransition trans)
    {
        // Check for NullTransition
        if (trans == FSMTransition.None)
        {
            Debug.LogError("FSMState ERROR: NullTransition is not allowed");
            return;
        }

        // Check if the pair is inside the map before deleting
        if (map.ContainsKey(trans))
        {
            map.Remove(trans);
            return;
        }
        Debug.LogError("FSMState ERROR: FSMTransition passed was not on this State´s List");
    }
Example #31
0
 public FSMEdgeView(FSMTransition transition) : base() => Initialize(transition);
Example #32
0
 public void Initialize(FSMTransition transition) => _transition = transition;
Example #33
0
 public virtual void EnterState(FSMState prevState)
 {
     NextStateTransition = null;
 }
Example #34
0
    public virtual void ExitState(FSMTransition nextStateTransition)
    {
        //OnStateExit(nextStateId);

        NextStateTransition = nextStateTransition;
    }
Example #35
0
 //meber operation
 public void SetTransition(FSMTransition transition)
 {
     m_fsm.PerformTransition(transition);
 }
Example #36
0
File: FSM.cs Project: rierv/Walls
 public void AddTransition(FSMTransition transition, FSMState target)
 {
     links [transition] = target;
 }
Example #37
0
 /// <summary>
 /// 增加转换条件
 /// </summary>
 /// <param name="fsmTransition"></param>
 /// <param name="stateID"></param>
 public void AddTransition(FSMTransition fsmTransition, FSMStateID stateID)
 {
 }
Example #38
0
 /// <summary>
 /// 删除转换条件
 /// </summary>
 /// <param name="fsmTransition"></param>
 /// <param name="stateID"></param>
 public void DeleteTransition(FSMTransition fsmTransition, FSMStateID stateID)
 {
 }
Example #39
0
 /// <summary>
 /// 根据转换条件获得状态ID
 /// </summary>
 /// <param name="fsmTransition"></param>
 /// <returns></returns>
 public FSMStateID GetStateIdByTransition(FSMTransition fsmTransition)
 {
 }
Example #40
0
 public void AddTransition(FSMTransition transition)
 {
     transitions.Add(transition);
 }
Example #41
0
 public override void ExitState(FSMTransition nextStateTransition)
 {
     base.ExitState(nextStateTransition);
 }
Example #42
0
    void Start()
    {
        formation = GetComponent <EnemyFormationManager>();

        //States
        FSMState patrol = new FSMState();

        patrol.enterActions.Add(SetGoal);
        patrol.stayActions.Add(Walk);
        patrol.exitActions.Add(StopPatrol);

        FSMState chase = new FSMState();

        chase.enterActions.Add(StartChase);
        chase.stayActions.Add(Chase);
        chase.exitActions.Add(StopChase);

        FSMState attack = new FSMState();

        attack.enterActions.Add(StartAttack);
        attack.stayActions.Add(Fight);
        attack.exitActions.Add(StopAttack);

        FSMState dead = new FSMState();

        dead.enterActions.Add(Dead);

        FSMState flee = new FSMState();

        flee.enterActions.Add(StartFleeing);
        flee.stayActions.Add(Flee);

        FSMState recoverHP = new FSMState();

        recoverHP.enterActions.Add(StartRecovery);
        recoverHP.stayActions.Add(RechargeHP);
        recoverHP.exitActions.Add(StopRecovery);

        //Transitions
        FSMTransition t1  = new FSMTransition(ScanField);
        FSMTransition t2  = new FSMTransition(ScanFieldMoreNear);
        FSMTransition t3  = new FSMTransition(OutOfLargeRange);
        FSMTransition t4  = new FSMTransition(OutOfRange);
        FSMTransition t5  = new FSMTransition(CompletedBattle);
        FSMTransition t6  = new FSMTransition(LowHp);
        FSMTransition t7  = new FSMTransition(IsDead);
        FSMTransition t8  = new FSMTransition(DeadDuringEscape);
        FSMTransition t9  = new FSMTransition(DistanceFromRecovery);
        FSMTransition t10 = new FSMTransition(CompletedRecharge);
        FSMTransition t11 = new FSMTransition(ChaseDuringRecharge);

        // Link states with transitions
        patrol.AddTransition(t1, chase);
        chase.AddTransition(t2, attack);
        chase.AddTransition(t3, patrol);
        attack.AddTransition(t4, chase);
        attack.AddTransition(t5, patrol);
        attack.AddTransition(t6, flee);
        attack.AddTransition(t7, dead);
        flee.AddTransition(t8, dead);
        flee.AddTransition(t9, recoverHP);
        recoverHP.AddTransition(t10, patrol);
        recoverHP.AddTransition(t11, chase);

        // Setup a FSA at initial state
        fsm = new FSM(patrol);

        // Start monitoring
        StartCoroutine(Patrol());
    }
Example #43
0
    public override void ExitState(FSMTransition nextStateTransition)
    {
        DisableInput();

        base.ExitState(nextStateTransition);
    }
Example #44
0
 public FSMState NextState(FSMTransition t)
 {
     return(links[t]);
 }