private void ReplaceChunkPrefabs(Index index) { if (CacheChunkIndexes.Exists(p => p.IsEqual(index)) == true) { return; } Chunk chunk = ChunkManager.GetChunkComponent(index); if (chunk != null) { int SideLength = Engine.ChunkSideLength; for (int x = 0; x < SideLength; x++) { for (int y = 0; y < SideLength; y++) ///高度 { for (int z = 0; z < SideLength; z++) { // 循环创建chunk中每一个Voxel ushort data = chunk.GetVoxelSimple(x, y, z); if (data > 100 && data <= 200) { ushort span = 100; chunk.SetVoxel(x, y, z, (ushort)(data + span), true); } } } } CacheChunkIndexes.Add(index); } }
private void ReplaceChunkDatas(Index index) { Chunk chunk = ChunkManager.GetChunkComponent(index); if (chunk != null) { for (int i = 0; i < chunk.transform.childCount; i++) { DestroyObject(chunk.transform.GetChild(i).gameObject); } int SideLength = Engine.ChunkSideLength; for (int x = 0; x < SideLength; x++) { for (int y = 0; y < SideLength; y++) ///高度 { for (int z = 0; z < SideLength; z++) { // 循环创建chunk中每一个Voxel ushort data = chunk.GetVoxelSimple(x, y, z); if (data > 200) { ushort span = 100; chunk.SetVoxel(x, y, z, (ushort)(data - span), true); } } } } if (CacheChunkIndexes.Exists(p => p.IsEqual(index)) == true) { CacheChunkIndexes.Remove(index); } } }
void SetVoxelForNeighbor(Direction dir, int x, int y, int z, ushort data, bool updateMesh) { Chunk n = neighborChunks[(int)dir]; if (n != null) { n.SetVoxel(x, y, z, data, updateMesh); } }
public void SetVoxel(ushort data, bool updateMesh) { chunk.SetVoxel(index, data, updateMesh); }