0

我有一个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[ *** ];

}

有任何想法吗?

4

1 回答 1

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];
于 2012-07-13T17:31:36.827 回答