private void SprintDisableTest(ICharacterState state, IAdaptiveContainer <IFsmInputCommand> commands)
        {
            int slowDown     = NoLimit;
            int prevSlowDown = state.GetSteepSlowDown();

            if (IsLimitRun(state.GetSteepAngle(), prevSlowDown))
            {
                for (int i = 0; i < commands.Length; ++i)
                {
                    var v = commands[i];
                    if (v.Type == FsmInput.Sprint || v.Type == FsmInput.Run)
                    {
                        v.Type = FsmInput.Walk;
                        _logger.DebugFormat("sprint to Walk due to move in water or is steep slope!, angle:{0}", state.GetSteepAngle());
                        slowDown = LimitRun;
                    }
                }
            }
            else if (state.IsMoveInWater() || IsLimitSprint(state.GetSteepAngle(), prevSlowDown))
            {
                for (int i = 0; i < commands.Length; ++i)
                {
                    var v = commands[i];
                    if (v.Type == FsmInput.Sprint)
                    {
                        v.Type = FsmInput.Run;
                        _logger.DebugFormat("sprint to run due to move in water or is steep slope!, angle:{0}", state.GetSteepAngle());
                        slowDown = LimitSprint;
                    }
                }
            }
            state.SetSteepSlowDown(slowDown);
        }
        private void SprintDisableTest(ICharacterState state, IAdaptiveContainer <IFsmInputCommand> commands)
        {
            bool slowDown = false;

            if (state.IsMoveInWater() || state.IsSteepSlope())
            {
                for (int i = 0; i < commands.Length; ++i)
                {
                    var v = commands[i];
                    if (v.Type == FsmInput.Sprint)
                    {
                        v.Type   = FsmInput.Run;
                        slowDown = true;
                    }
                }
            }
            state.SetBeenSlowDown(slowDown);
        }
Пример #3
0
        private void SprintDisableTest(ICharacterState state, IAdaptiveContainer <IFsmInputCommand> commands)
        {
            bool slowDown = false;

            if (state.IsMoveInWater() || state.IsSteepSlope())
            {
                for (int i = 0; i < commands.Length; ++i)
                {
                    var v = commands[i];
                    if (v.Type == FsmInput.Sprint)
                    {
                        v.Type = FsmInput.Run;
                        _logger.DebugFormat("sprint to run due to move in water or is steep slope!");
                        slowDown = true;
                    }
                }
            }

            state.SetBeenSlowDown(slowDown);
        }