private void MarkIslandSegment(IslandTile tile, int id) { if (tile.IsWater || id == tile.islandId) { return; } if (tile.islandId == 99 || tile.islandId < id) { if (tile.islandId < id) { subIslands.Remove(id); id = tile.islandId; } tile.islandId = id; if (!subIslands.ContainsKey(id)) { subIslands[id] = new List <IslandTile>(); } subIslands[id].Add(tile); foreach (Vector v in tile.neighbors) { IslandTile nt = islandTiles[IslandTile.VToV3(v)]; MarkIslandSegment(nt, id); } } }
private void GenerateTiles() { islandTiles = new Dictionary <Vector3, IslandTile>(); foreach (Vector v in cellVectors) { if (VectorIsInfinite(v)) { continue; } IslandTile t = new IslandTile(v, vGraph, this); islandTiles.Add(IslandTile.VToV3(v), t); } }
void SetupGizmos() { vGridLineGizmos = new List <Vector3[]>(); foreach (VoronoiEdge e in vGraph.Edges) { Vector3[] edgeLine = new Vector3[2] { IslandTile.VToV3(e.VVertexA), IslandTile.VToV3(e.VVertexB) }; vGridLineGizmos.Add(edgeLine); } }
private static bool VectorIsInfinite(Vector v) { return(VectorIsInfinite(IslandTile.VToV3(v))); }
private static bool IsClockwise(Vector a, Vector b, Vector c) { return(IsClockwise(IslandTile.VToV3(a), IslandTile.VToV3(b), IslandTile.VToV3(c))); }