我有一个std::vector<Chunk*> m_vpChunks
对象,它包含一个块的向量。
我也有一个世界和X,Y,Z坐标。
我用:
创建块// Go through all chunks
for(int x = 0; x < m_iSize; x+=CHUNK_SIZE_X)
{
for(int y = 0; y < m_iSize; y+=CHUNK_SIZE_Y)
{
for(int z = 0; z < m_iSize; z+=CHUNK_SIZE_Z)
{
// Create new chunk
CChunk *pChunk = NULL;
pChunk = new CChunk(CVector3(x,y,z));
assert(pChunk);
// Add it to our list
m_vpChunks.push_back(pChunk);
}
}
}
想要使用X,Y,Z索引到一个块矢量,如:
CChunk *GetChunk(int X, int Y, int Z)
{
return m_vpChunks[ *** ];
}
有什么想法吗?
答案 0 :(得分:2)
我认为是:
return m_vpChunks[
x/CHUNK_SIZE_X * (m_iSize/CHUNK_SIZE_Y * m_iSize/CHUNK_SIZE_Z) +
y/CHUNK_SIZE_Y * (m_iSize/CHUNK_SIZE_Z) +
z/CHUNK_SIZE_Z ];
<小时/> 但严重的是,使用不同的数据结构。我想到嵌套的向量,在这种情况下你会返回:
return m_vpChunks[x][y][z];
或者
return m_vpChunks[x/CHUNK_SIZE_X][y/CHUNK_SIZE_Y][z/CHUNK_SIZE_Z];