public void SetBlock(int x, int y, int z, Block block) { _voxelData.SetData(x, y, z, (ushort)block); QueueMeshGeneration(); Region region; IntVec3 dataPosition = _voxelData.GetDataPosition(); if (x == 0) { if (dataPosition.x > 0) { region = _regionCollection.GetRegion(dataPosition.x - 1, dataPosition.y, dataPosition.z); if (region != null) { region.QueueMeshGeneration(); } else { region = _regionCollection.CreateRegion(dataPosition.x - 1, dataPosition.y, dataPosition.z); region.QueueMeshGeneration(); } } } else if (x == VoxelData.SIZE - 1 && dataPosition.x < _regionCollection.GetDimensions().x - 1) { region = _regionCollection.GetRegion(dataPosition.x + 1, dataPosition.y, dataPosition.z); if (region != null) { region.QueueMeshGeneration(); } else { region = _regionCollection.CreateRegion(dataPosition.x + 1, dataPosition.y, dataPosition.z); region.QueueMeshGeneration(); } } if (y == 0) { if (dataPosition.y > 0) { region = _regionCollection.GetRegion(dataPosition.x, dataPosition.y - 1, dataPosition.z); if (region != null) { region.QueueMeshGeneration(); } else { region = _regionCollection.CreateRegion(dataPosition.x, dataPosition.y - 1, dataPosition.z); region.QueueMeshGeneration(); } } } else if (y == VoxelData.SIZE - 1 && dataPosition.y < _regionCollection.GetDimensions().y - 1) { region = _regionCollection.GetRegion(dataPosition.x, dataPosition.y + 1, dataPosition.z); if (region != null) { region.QueueMeshGeneration(); } else { region = _regionCollection.CreateRegion(dataPosition.x, dataPosition.y + 1, dataPosition.z); region.QueueMeshGeneration(); } } if (z == 0) { if (dataPosition.z > 0) { region = _regionCollection.GetRegion(dataPosition.x, dataPosition.y, dataPosition.z - 1); if (region != null) { region.QueueMeshGeneration(); } else { region = _regionCollection.CreateRegion(dataPosition.x, dataPosition.y, dataPosition.z - 1); region.QueueMeshGeneration(); } } } else if (z == VoxelData.SIZE - 1 && dataPosition.z < _regionCollection.GetDimensions().z - 1) { region = _regionCollection.GetRegion(dataPosition.x, dataPosition.y, dataPosition.z + 1); if (region != null) { region.QueueMeshGeneration(); } else { region = _regionCollection.CreateRegion(dataPosition.x, dataPosition.y, dataPosition.z + 1); region.QueueMeshGeneration(); } } }