void UpdateIfEqual(int value1, int value2, WorldPos pos) { if (value1 == value2) { Chunk chunk = GetChunk(pos.x, pos.y, pos.z); if (chunk != null) { chunk.AddToUpdateList(); } } }
public void SetBlock(int x, int y, int z, BlockBase block) { Chunk chunk = GetChunk(x, y, z); if (chunk != null) { chunk.SetBlock(x - chunk.pos.x, y - chunk.pos.y, z - chunk.pos.z, block); chunk.AddToUpdateList(); UpdateIfEqual(x - chunk.pos.x, 0, new WorldPos(x - 1, y, z)); UpdateIfEqual(x - chunk.pos.x, Chunk.chunkSize - 1, new WorldPos(x + 1, y, z)); UpdateIfEqual(y - chunk.pos.y, 0, new WorldPos(x, y - 1, z)); UpdateIfEqual(y - chunk.pos.y, Chunk.chunkSize - 1, new WorldPos(x, y + 1, z)); UpdateIfEqual(z - chunk.pos.z, 0, new WorldPos(x, y, z - 1)); UpdateIfEqual(z - chunk.pos.z, Chunk.chunkSize - 1, new WorldPos(x, y, z + 1)); } }