MovementState ManageRun(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //DebugLogLocal ("Run manage");
        //IDLE
        if (IsIdle(param))
        {
            DebugLogLocal("Run idle");
            newState = MovementState.Idle;
        }

        //JUMP
        if (param.jumpRequired)
        {
            DebugLogLocal("Run jump");
            newState = MovementState.Jump;
        }

        //FAll
        if (IsFalling(param))
        {
            DebugLogLocal("Run fall");
            newState = MovementState.Fall;
        }
        return(newState);
    }
    MovementState ManagePushUp(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //DebugLogLocal ("Fall manage");
        //IDLE
        if (IsIdle(param))
        {
            DebugLogLocal("pushup idle");
            newState = MovementState.Idle;
        }

        //RUN
        if (IsRunning(param))
        {
            DebugLogLocal("pushup run");
            newState = MovementState.Run;
        }

        //FALL
        if (IsFalling(param))
        {
            DebugLogLocal("pushup fall");
            newState = MovementState.Fall;
        }

        //JUMP

        /*if (IsGoingUp(param) && !param.inAirStream) {
         *  DebugLogLocal ("pushup jump");
         *  newState = MovementState.Jump;
         * }*/

        return(newState);
    }
    MovementState ManageDoubleJump(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //DebugLogLocal ("DoubleJump manage");
        //IDLE
        if (IsIdle(param))
        {
            DebugLogLocal("DoubleJump idle");
            newState = MovementState.Idle;
        }

        //RUN
        if (IsRunning(param))
        {
            DebugLogLocal("DoubleJump run");
            newState = MovementState.Run;
        }

        //FAll
        if (IsFalling(param))
        {
            DebugLogLocal("DoubleJump fall");
            newState = MovementState.Fall;
        }
        return(newState);
    }
    MovementState ManageJump(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //DebugLogLocal ("Jump manage");
        //IDLE
        if (IsIdle(param))
        {
            newState = MovementState.Idle;
        }

        // STILL MOVING UP
        if (param.jumpRequired)
        {
            //DebugLogLocal ("jump inside=" + param.jumpRequired);
            if (param.jumpRequired)
            {
                DebugLogLocal("Jump DoubleJump");
                newState = MovementState.DoubleJump;
            }
        }

        //FAll
        if (IsFalling(param))
        {
            newState = MovementState.Fall;
        }
        return(newState);
    }
Exemplo n.º 5
0
    public MovementState GetNewState(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        switch (previous)
        {
        case MovementState.Idle:
            newState = ManageIdle(previous, param);
            break;

        case MovementState.Run:
            newState = ManageRun(previous, param);
            break;

        case MovementState.Jump:
            newState = ManageJump(previous, param);
            break;


        case MovementState.DoubleJump:
            newState = ManageDoubleJump(previous, param);
            break;


        case MovementState.Fall:
            newState = ManageFall(previous, param);
            break;
        }

        return(newState);
    }
    MovementState ManageFall(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        DebugLogLocal("Fall manage");
        //IDLE
        if (IsIdle(param))
        {
            DebugLogLocal("fall idle");
            newState = MovementState.Idle;
        }

        //RUN
        if (IsRunning(param))
        {
            DebugLogLocal("fall run");
            newState = MovementState.Run;
        }

        //DOUBLEJUMP
        if (IsGoingUp(param) && !param.inAirStream)
        {
            DebugLogLocal("fall run");
            newState = MovementState.DoubleJump;
        }

        //PUSHUP
        if (IsGoingUp(param) && param.inAirStream)
        {
            DebugLogLocal("fall run");
            newState = MovementState.PushUp;
        }

        return(newState);
    }
    MovementState ManagePushUp(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //DebugLogLocal ("Fall manage");
        //IDLE
        if (IsIdle(param))
        {
            DebugLogLocal("fall idle");
            newState = MovementState.Idle;
        }

        //RUN
        if (IsRunning(param))
        {
            DebugLogLocal("fall run");
            newState = MovementState.Run;
        }

        //FALL
        if (IsFalling(param))
        {
            DebugLogLocal("fall run");
            newState = MovementState.Fall;
        }

        return(newState);
    }
Exemplo n.º 8
0
    MovementState ManageJump(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //IDLE
        if (IsIdle(param))
        {
            newState = MovementState.Idle;
        }

        // STILL MOVING UP
        if (IsGoingUp(param))
        {
            if (param.jumpRequired)
            {
                newState = MovementState.DoubleJump;
            }
            else
            {
                newState = MovementState.Jump;
            }
        }

        //FAll
        if (IsFalling(param))
        {
            newState = MovementState.Fall;
        }
        return(newState);
    }
    MovementState ManageIdle(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //DebugLogLocal ("Idle manage");
        //RUN
        if (IsRunning(param))
        {
            DebugLogLocal("Idle run");
            newState = MovementState.Run;
        }

        //JUMP
        if (param.jumpRequired)
        {
            DebugLogLocal("Idle jump");
            newState = MovementState.Jump;
        }

        //FAll
        if (IsFalling(param))
        {
            DebugLogLocal("Idle fall");
            newState = MovementState.Fall;
        }

        return(newState);
    }
    bool IsGoingUp(MovementStateParam param)
    {
        bool up =
            !param.grounded &&
            param.velocity.y > step_velocity &&
            (Mathf.Abs(param.position_before_fall.y - param.position.y) > step_position);

        return(up);
    }
    bool IsFalling(MovementStateParam param)
    {
        bool fall =
            !param.grounded &&
            param.velocity.y < step_velocity &&
            (Mathf.Abs(param.position_before_fall.y - param.position.y) > step_position);

        return(fall);
    }
Exemplo n.º 12
0
 private void Start()
 {
     movementState         = MovementState.Idle;
     previousMovementState = movementState;
     interactState         = InteractState.Nothing;
     previousInteractState = interactState;
     body                   = GetComponent <Rigidbody>();
     animBody               = GetComponent <AnimatorController>();
     moveStateParameters    = new MovementStateParam();
     moveStateCtrl          = new MovementStateController();
     interactStateParameter = new InteractStateParam();
     InteractStateCtrl      = new InteractStateController();
     inputController        = GetComponent <InputController>();
     interactBehaviorCtrl   = GetComponent <InteractBehavior>();
 }
Exemplo n.º 13
0
    MovementState ManageFall(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //IDLE
        if (IsIdle(param))
        {
            newState = MovementState.Idle;
        }

        if (IsRunning(param))
        {
            newState = MovementState.Run;
        }
        return(newState);
    }
    public MovementState GetNewState(MovementState previous, MovementStateParam param)
    {
        //DebugLogLocal ("Calling me is: " + new System.Diagnostics.StackFrame(1, true).GetMethod().Name);
        MovementState newState = previous;

        switch (previous)
        {
        case MovementState.Idle:
            //DebugLogLocal ("GetNewState mvt=Idle");
            newState = ManageIdle(previous, param);
            break;

        case MovementState.Run:
            //DebugLogLocal ("GetNewState mvt=Run");
            newState = ManageRun(previous, param);
            break;

        case MovementState.Jump:
            //DebugLogLocal ("GetNewState mvt=Jump");
            newState = ManageJump(previous, param);
            break;

        case MovementState.DoubleJump:
            //DebugLogLocal ("GetNewState mvt=DoubleJump");
            newState = ManageDoubleJump(previous, param);
            break;

        case MovementState.Fall:
            //DebugLogLocal ("GetNewState mvt=Fall");
            newState = ManageFall(previous, param);
            break;

        case MovementState.PushUp:
            //DebugLogLocal ("GetNewState mvt=Fall");
            newState = ManagePushUp(previous, param);
            break;

        default:
            //DebugLogLocal ("GetNewState mvt=Other");
            break;
        }

        return(newState);
    }
    MovementState ManageFall(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //DebugLogLocal ("Fall manage");
        //IDLE
        if (IsIdle(param))
        {
            DebugLogLocal("fall idle");
            newState = MovementState.Idle;
        }

        //RUN
        if (IsRunning(param))
        {
            DebugLogLocal("fall run");
            newState = MovementState.Run;
        }

        //DOUBLEJUMP -> on bumper
        if (IsGoingUp(param) && !param.inAirStream)
        {
            DebugLogLocal("fall doublejump 1");
            newState = MovementState.DoubleJump;
        }
        //PUSHUP -> in airstream
        else if (IsGoingUp(param) && param.inAirStream)
        {
            DebugLogLocal("fall pushup");
            newState = MovementState.PushUp;
        }
        // DOUBLEJUMP -> while in fall
        else if (IsFalling(param) && param.jumpRequired)
        {
            DebugLogLocal("fall doublejump 2");
            newState = MovementState.DoubleJump;
        }

        return(newState);
    }
Exemplo n.º 16
0
    MovementState ManageDoubleJump(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //IDLE
        if (IsIdle(param))
        {
            newState = MovementState.Idle;
        }

        //FAll
        if (IsFalling(param))
        {
            newState = MovementState.Fall;
        }

        if (IsGoingUp(param))
        {
            newState = MovementState.DoubleJump;
        }
        return(newState);
    }
Exemplo n.º 17
0
    MovementState ManageIdle(MovementState previous, MovementStateParam param)
    {
        MovementState newState = previous;

        //RUN
        if (IsRunning(param))
        {
            newState = MovementState.Run;
        }

        //JUMP
        if (IsGoingUp(param))
        {
            newState = MovementState.Jump;
        }

        //FAll
        if (IsFalling(param))
        {
            newState = MovementState.Fall;
        }

        return(newState);
    }
Exemplo n.º 18
0
    public bool IsFalling(MovementStateParam param)
    {
        bool fall = !param.grounded && (param.velocity.y < -hysteresis_step);

        return(fall);
    }
Exemplo n.º 19
0
 bool IsGoingUp(MovementStateParam param)
 {
     return(!param.grounded && param.velocity.y > 0);
 }
Exemplo n.º 20
0
    public bool IsGoingUp(MovementStateParam param)
    {
        bool up = !param.grounded && param.velocity.y > hysteresis_step;

        return(up);
    }
Exemplo n.º 21
0
 bool IsFalling(MovementStateParam param)
 {
     return(!param.grounded && param.velocity.y < 0);
 }
 bool IsIdle(MovementStateParam param)
 {
     return(param.grounded && ((Mathf.Abs(param.velocity.x) + Mathf.Abs(param.velocity.z) + Mathf.Abs(param.velocity.y)) < 0.01f));
 }
 bool IsRunning(MovementStateParam param)
 {
     return(param.grounded && ((Mathf.Abs(param.velocity.x) + Mathf.Abs(param.velocity.z)) >= 0.1f));
 }
 bool IsRunning(MovementStateParam param)
 {
     return(param.grounded && Mathf.Abs(param.moveX) + Mathf.Abs(param.moveZ) > 0.01f /* && ((Mathf.Abs(param.velocity.x) + Mathf.Abs(param.velocity.z)) >= 0.1f)*/);
 }
 bool IsIdle(MovementStateParam param)
 {
     return(param.grounded && Mathf.Abs(param.moveX) + Mathf.Abs(param.moveZ) <= 0.01f /*&& ((Mathf.Abs(param.velocity.x) + Mathf.Abs(param.velocity.z) + Mathf.Abs(param.velocity.y)) < 0.01f)*/);
 }