示例#1
0
    public HexTile[] GetNeighborsInRange(int radius)
    {
        HashSet <HexTile> tiles = new HashSet <HexTile>();

        for (int dx = -radius; dx <= radius; ++dx)
        {
            for (int dy = Mathf.Max(-radius, -dx - radius); dy <= Mathf.Min(radius, -dx + radius); ++dy)
            {
                int dz = -dx - dy;

                var     center     = new OffsetCoordinate(this.x, this.y);
                var     offsetCube = new CubeCoordinate(dx, dy, dz);
                HexTile neighbor   = HexTile.FindByOffset(center, HexUtils.CubeCoordToOffsetCoord(offsetCube, center.IsEven()));
                if (neighbor != null)
                {
                    tiles.Add(neighbor);
                }
            }
        }

        HexTile[] results = new HexTile[tiles.Count];
        tiles.CopyTo(results);
        return(results);
    }