Пример #1
0
    /// <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
        }
    }
Пример #2
0
    // 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));
        }
    }