public void SetDensity(float density, int worldPosX, int worldPosY, int worldPosZ, bool setReadyForUpdate, Chunk[] initChunks) { Vector3Int dp = new Vector3Int(worldPosX, worldPosY, worldPosZ); Vector3Int lastChunkPos = dp.FloorToNearestX(chunkSize); for (int i = 0; i < 8; i++) { Vector3Int chunkPos = (dp - MarchingCubes.CubePoints[i]).FloorToNearestX(chunkSize); if (i != 0 && chunkPos == lastChunkPos) { continue; } Chunk chunk = GetChunk(chunkPos); lastChunkPos = chunk.position; Vector3Int localPos = (dp - chunk.position).Mod(chunkSize + 1); chunk.SetDensity(density, localPos); if (setReadyForUpdate) { chunk.readyForUpdate = true; } } }