void UpdateVisibleChunks() { // Reset visible chunks from the previous update for (int i = 0; i < terrainChunksVisibleLastUpdate.Count; i++) { terrainChunksVisibleLastUpdate[i].SetVisible(false); } terrainChunksVisibleLastUpdate.Clear(); // Get coordinate of chunk that the viewer is standing on int currentChunkCoordX = Mathf.RoundToInt(viewerPosition.x / chunkSize); int currentChunkCoordY = Mathf.RoundToInt(viewerPosition.y / chunkSize); // loop through surrounding chunks for (int yOffset = -chunksVisibleInViewDst; yOffset <= chunksVisibleInViewDst; yOffset++) { for (int xOffset = -chunksVisibleInViewDst; xOffset <= chunksVisibleInViewDst; xOffset++) { Vector2 viewedChunkCoord = new Vector2(currentChunkCoordX + xOffset, currentChunkCoordY + yOffset); if (terrainChunkDictionary.ContainsKey(viewedChunkCoord)) { TerrainChunk currentChunk = terrainChunkDictionary[viewedChunkCoord]; currentChunk.UpdateTerrainChunk(); } else { terrainChunkDictionary.Add(viewedChunkCoord, new TerrainChunk(viewedChunkCoord, chunkSize, detailLevels, transform, mapMaterial)); } } } }
public void SetNeighbour(TerrainChunk neighbour, (int index, CubeSide value) side)