/// <summary>
        ///     Returns the opposite <see cref="WalkDirection"/> from the given direction.
        /// </summary>
        /// <remarks><see cref="WalkDirection.None"/> is opposite to itself.</remarks>
        /// <param name="walkDirection">The direction to find the opposite of.</param>
        /// <returns>The opposite direction from the given direction.</returns>
        public static WalkDirection OppositeWalkDirection(WalkDirection walkDirection)
        {
            if (walkDirection == WalkDirection.Up)
            {
                return(WalkDirection.Down);
            }

            if (walkDirection == WalkDirection.Down)
            {
                return(WalkDirection.Up);
            }

            if (walkDirection == WalkDirection.Left)
            {
                return(WalkDirection.Right);
            }

            if (walkDirection == WalkDirection.Right)
            {
                return(WalkDirection.Left);
            }

            if (walkDirection == WalkDirection.UpLeft)
            {
                return(WalkDirection.DownRight);
            }

            if (walkDirection == WalkDirection.UpRight)
            {
                return(WalkDirection.DownLeft);
            }

            if (walkDirection == WalkDirection.DownLeft)
            {
                return(WalkDirection.UpRight);
            }

            if (walkDirection == WalkDirection.DownRight)
            {
                return(WalkDirection.UpLeft);
            }

            return(WalkDirection.None);
        }
 /// <summary>
 ///     Finds the facing direction when getting from a start point to a target point.
 /// </summary>
 /// <remarks>
 ///     This only works correctly if the int values used for the walk directions are in sync
 ///     with the values used for facing directions in game.
 /// </remarks>
 /// <param name="targetPosition">The target position.</param>
 /// <param name="startPosition">The start position.</param>
 /// <returns>The <see langword="int"/> representing the facing direction when going from start to target.</returns>
 public static int GetFacingDirection(Vector2 targetPosition, Vector2 startPosition)
 {
     return(WalkDirection.GetFacingWalkDirection(targetPosition, startPosition).Value);
 }