public PlatformerCharacterState()
 {
     this.motorState     = new CharacterMotorState("platformer-character");
     this.gravityState   = new GravityForceState(motorState);
     this.jumpState      = new CurvedMotionForceState(jumpForce);
     jumpForce.direction = MotionDirection.Up;
     motorState.forces.AddFirst(jumpForce);
     motorState.forces.AddFirst(walkForce);
     motorState.forces.AddFirst(gravityState.force);
 }
    public static void Update(GravityForceState state)
    {
        var isBlocked  = state.motorState.blocked[MotionDirection.Down];
        var wasBlocked = state.motorState.wasBlocked[MotionDirection.Down];

        if (!isBlocked && wasBlocked)
        {
            state.curvedForceState.delta          = 0;
            state.curvedForceState.requestedState = MotionPlaybackState.Playing;
        }
        CurvedMotionForce.Update(instance.config, state.curvedForceState);
    }