2 #include "BlockCoordinate.h" 10 BlockIndex(
BlockChunk* pChunk, uint16 nChunkBlockIndex) :m_pChunk(pChunk), m_nChunkBlockIndex(nChunkBlockIndex){};
12 uint16 m_nChunkBlockIndex;
22 inline uint16 PackChunkIndex(uint16 rx, uint16 ry, uint16 rz)
24 return rx + (rz << 5) + (ry << 10);
28 inline void UnpackChunkIndex(uint16 index, uint16& ox, uint16& oy, uint16& oz)
37 inline uint16 CalcPackedBlockID(uint16 rx, uint16 ry, uint16 rz)
42 return cx + (cz << 4) + (cy << 8);
45 inline uint16 CalcPackedBlockID(
Uint16x3& blockID_r)
47 uint16 cx = blockID_r.x & 0xf;
48 uint16 cy = blockID_r.y & 0xf;
49 uint16 cz = blockID_r.z & 0xf;
50 return cx + (cz << 4) + (cy << 8);
54 inline uint16 PackBlockId(uint16 cx, uint16 cy, uint16 cz)
56 return cx + (cz << 4) + (cy << 8);
60 inline uint16_t PackBlockIndex(uint16_t cx, uint16_t cy, uint16_t cz)
62 return cx + (cz << 4) + (cy << 8);
66 inline void UnpackBlockIndex(uint16 index, uint16& cx, uint16& cy, uint16& cz)
74 inline uint16 CalcPackedChunkID(uint16 blockRX, uint16 blockRY, uint16 blockRZ)
76 uint16 chunkIndexX = blockRX >> 4;
77 uint16 chunkIndexY = blockRY >> 4;
78 uint16 chunkIndexZ = blockRZ >> 4;
79 return chunkIndexX + (chunkIndexZ << 5) + (chunkIndexY << 10);
82 inline uint16 CalcPackedChunkID(
Uint16x3& blockId_r)
84 return (blockId_r.x >> 4) + ((blockId_r.z >> 4) << 5) + ((blockId_r.y >> 4) << 10);
88 inline uint16 PackChunkIndex(
Uint16x3& chunkId_r)
90 return chunkId_r.x + (chunkId_r.z << 5) + (chunkId_r.y << 10);
94 inline uint16 PackChunkColumnIndex(uint16 x, uint16 z)
different physics engine has different winding order.
Definition: EventBinding.h:32
basic block world coordinate
Definition: BlockCoordinate.h:72
Chunk is a 16*16*16 inside a region.
Definition: BlockChunk.h:138
Definition: BlockIndex.h:7