protected override void OnProcessControll()
        {
            if (!Pawn)
            {
                return;
            }

            Vector3 direction = Vector3.zero;

            if (Enabled)
            {
                CurrentInput.x = Input.GetAxis(MoveX);
                CurrentInput.y = Input.GetAxis(MoveY);

                if (Input.GetButton(ReviveButton))
                {
                    DoRevive();
                }
                else
                {
                    if (CurrentState == State.Revive && !RevivedPawn)
                    {
                        CurrentState = State.Idle;
                    }
                }

                if (Input.GetButtonDown(TakeButton))
                {
                    DoTake();
                }
                else if (CanThrow && TakenPawn)
                {
                    TakenPawn.ResetBody();
                    TakenPawn.transform.localPosition = Vector3.zero;
                }

                if (CurrentTarget)
                {
                    var rawDistance = transform.position - CurrentTarget.position;
                    Pawn.DesiredForward = -Vector3.Normalize(rawDistance);
                }

                var flatVelocity = new Vector3(CurrentInput.x, 0, CurrentInput.y);
                direction = Quaternion.LookRotation(Vector3.Normalize(Pawn.DesiredForward)) * flatVelocity;

                direction.Normalize();
            }

            Pawn.ProcessMovement(direction);
            Pawn.Tick();
        }