// Updates our clipmap region. Has to be set from the outside! private void UpdateRanges() { // Make sure horizontal ranges are always correct HorizontalChunkLoadRadius = Mathf.Max(HorizontalMinRange, HorizontalChunkLoadRadius); HorizontalChunkLoadRadius = Mathf.Min(HorizontalMaxRange, HorizontalChunkLoadRadius); // Make sure vertical ranges are always correct VerticalChunkLoadRadius = Mathf.Max(VerticalMinRange, VerticalChunkLoadRadius); VerticalChunkLoadRadius = Mathf.Min(VerticalMaxRange, VerticalChunkLoadRadius); bool isDifferenceXZ = HorizontalChunkLoadRadius != m_chunkHorizontalLoadRadiusPrev || m_chunkPositions == null; bool isDifferenceY = VerticalChunkLoadRadius != m_chunkVerticalLoadRadiusPrev; m_chunkHorizontalLoadRadiusPrev = HorizontalChunkLoadRadius; m_chunkVerticalLoadRadiusPrev = VerticalChunkLoadRadius; // Rebuild precomputed chunk positions if (isDifferenceXZ) { m_chunkPositions = ChunkLoadOrder.ChunkPositions(HorizontalChunkLoadRadius); } // Invalidate prev pos so that updated ranges can take effect right away if (isDifferenceXZ || isDifferenceY || HorizontalChunkLoadRadius != m_chunkHorizontalLoadRadiusPrev || VerticalChunkLoadRadius != m_chunkVerticalLoadRadiusPrev) { OnUpdateRanges(); m_viewerPosPrev = m_viewerPos + Vector3Int.one; // Invalidate prev pos so that updated ranges can take effect right away } }
void Start() { chunks = vm.components.chunks; chunkSize = chunks.chunkSize; chunkPositions = ChunkLoadOrder.ChunkPositions(chunkLoadRadius); distanceToDeleteInUnitsSquared = (int)(DistanceToDeleteChunks * chunkSize * chunks.blockSize); distanceToDeleteInUnitsSquared *= distanceToDeleteInUnitsSquared; }