public void ConnectChunksEdges() { for (int i = 0; i < terrain.ChunksCount; i++) { for (int j = 0; j < terrain.ChunksCount; j++) { TerrainChunk this_chunk = terrain.GetChunk(i, j); if (this_chunk != null) { TerrainChunk chunk_up = terrain.GetChunk(i, j + 1); if (chunk_up != null) { for (int k = 0; k < TerrainChunk.ChunkSize; k++) { this_chunk.SetHeight(k, TerrainChunk.ChunkSize, chunk_up.GetHeight(k, 0)); } } TerrainChunk chunk_down = terrain.GetChunk(i, j - 1); if (chunk_down != null) { for (int k = 0; k < TerrainChunk.ChunkSize; k++) { this_chunk.SetHeight(k, 0, chunk_down.GetHeight(k, TerrainChunk.ChunkSize)); } } TerrainChunk chunk_left = terrain.GetChunk(i - 1, j); if (chunk_left != null) { for (int k = 0; k < TerrainChunk.ChunkSize; k++) { this_chunk.SetHeight(0, k, chunk_left.GetHeight(TerrainChunk.ChunkSize, k)); } } TerrainChunk chunk_right = terrain.GetChunk(i + 1, j); if (chunk_right != null) { for (int k = 0; k < TerrainChunk.ChunkSize; k++) { this_chunk.SetHeight(TerrainChunk.ChunkSize, k, chunk_right.GetHeight(0, k)); } } } this_chunk.GenerateAndUpdateMesh(); } } }