/// <summary> /// Get block from position. /// </summary> /// <param name="pos">Block position</param> /// <returns>ID of block at position.</returns> private Atlas.ID Block(BlockPos pos) { int x = pos.x; int y = pos.y; int z = pos.z; if (pos.chunkPos == _chunkPos) { // In bounds, we have the data available to us return(_chunkData.GetBlock(pos)); } else if (isolateMesh) { return(Atlas.ID.Air); } else { return(World.GetBlock(pos)); //return Atlas.ID.Solid; // Don't generate a mesh } }
// Local block to world blocks private Atlas.ID Block(int x, int y, int z) { if (x >= 0 && x < _chunkSize && y >= 0 && y < _chunkSize && z >= 0 && z < _chunkSize) { // In bounds, we have the data available to us return(_chunkData.GetBlock(x, y, z)); } else if (isolateMesh) { return(Atlas.ID.Air); } else { x += _chunkPos.x * _chunkSize; y += _chunkPos.y * _chunkSize; z += _chunkPos.z * _chunkSize; Int3 pos = World.WhichChunk(new Int3(x, y, z)); DataColumn column = World.GetColumn(pos); return(World.GenerateBlock(column, x, y, z)); } }