/// <summary>
    /// Updates the Animator's moving and facing values.
    /// </summary>
    public void UpdateFacing()
    {
        m_Animator.SetFloat("Moving", moving ? 1 : 0);

        switch (direction)
        {
        case Constants.Direction.Right:
            m_Animator.SetFloat("FaceX", 1); m_Animator.SetFloat("FaceY", 0);
            m_Sword.SetFacing(1, 0);
            break;

        case Constants.Direction.Up:
            m_Animator.SetFloat("FaceX", 0); m_Animator.SetFloat("FaceY", 1);
            m_Sword.SetFacing(0, 1);
            break;

        case Constants.Direction.Left:
            m_Animator.SetFloat("FaceX", -1); m_Animator.SetFloat("FaceY", 0);
            m_Sword.SetFacing(-1, 0);
            break;

        default:
            m_Animator.SetFloat("FaceX", 0); m_Animator.SetFloat("FaceY", -1);
            m_Sword.SetFacing(0, -1);
            break;
        }

        // Flip if facing right.
        transform.localScale = new Vector2(
            direction == Constants.Direction.Right ? -1 : 1,
            transform.localScale.y
            );
    }