XtreemNodes/include/MapBlock.h

84 lines
1.4 KiB
C++

#ifndef MAPBLOCK_H
#define MAPBLOCK_H
#include "Base.h"
#include <math.h>
class MapBlock
{
public:
int mapBlock[65536];
MapBlock()
{
}
void addNode(int id, int meta, int x, int y, int z)
{
mapBlock[256 * y + z * 16 + x] = id;
}
};
class BlockUtilities
{
public:
BlockUtilities()
{
}
static Position2D getBlockFromNodeCoordinates(int x, int z)
{
Position2D pos2d;
pos2d.x = floor(x / 16);
pos2d.z = floor(z / 16);
return pos2d;
}
};
class BlockManager
{
public:
MapBlock mapBlocks[16][16]; // 16 x 16 blocks
BlockManager()
{
}
int getNodeAt(int x, int y, int z)
{
//if(x < 16 && x >= 0 && z < 16 && z >= 0)
//{
Position2D block = BlockUtilities::getBlockFromNodeCoordinates(x, z);
return mapBlocks[block.x][block.z].mapBlock[256 * y + z * 16 + x];
// else
// {
//return mapBlocks[BlockUtilities::getBlockFromNodeCoordinates(x, z).x][BlockUtilities::getBlockFromNodeCoordinates(x, z).z];
//return 0;
//}
}
bool isAir(int x, int y, int z)
{
return getNodeAt(x, y, z) == 0;
}
private:
};
#endif