/// <summary>
    /// Retrieve set of tiles in range of the specified tile using radius as a parameter.
    /// </summary>
    /// <param name="tile">Target tile.</param>
    /// <param name="radius">Radius of the range.</param>
    /// <returns></returns>
    public static HashSet <Tile> GetRange(Tile tile, int radius)
    {
        HashSet <Tile> setA = new HashSet <Tile>();
        HashSet <Tile> setB = new HashSet <Tile>();

        Hex hex = WorldManager.Hex;

        foreach (Tile t in WorldManager.World.Tiles)
        {
            if (Hex.AxisDistance(hex, tile, t, Hex.Axis.X) >= -radius && Hex.AxisDistance(hex, tile, t, Hex.Axis.X) <= radius)
            {
                setA.Add(t);
            }
        }

        foreach (Tile t in setA)
        {
            if (Hex.AxisDistance(hex, tile, t, Hex.Axis.Y) >= -radius && Hex.AxisDistance(hex, tile, t, Hex.Axis.Y) <= radius)
            {
                setB.Add(t);
            }
        }

        setA.Clear();

        foreach (Tile t in setB)
        {
            if (Hex.AxisDistance(hex, tile, t, Hex.Axis.Z) >= -radius && Hex.AxisDistance(hex, tile, t, Hex.Axis.Z) <= radius)
            {
                setA.Add(t);
            }
        }

        setA.Remove(tile);
        return(setA);
    }