当前位置: 首页>>代码示例>>C++>>正文


C++ Chunk::GetGridX方法代码示例

本文整理汇总了C++中Chunk::GetGridX方法的典型用法代码示例。如果您正苦于以下问题:C++ Chunk::GetGridX方法的具体用法?C++ Chunk::GetGridX怎么用?C++ Chunk::GetGridX使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Chunk的用法示例。


在下文中一共展示了Chunk::GetGridX方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: abs

bool Chunk::operator<(const Chunk &w) const
{
    glm::vec3 cameraPos = m_renderer->GetCamera().GetPosition();
    int cameraX = cameraPos.x / (Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE);
    int cameraY = cameraPos.y / (Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE);
    int cameraZ = cameraPos.z / (Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE);
    
    int distance = abs(cameraX - m_grid.x) + abs(cameraY - m_grid.y) + abs(cameraZ - m_grid.z);
    int wDistance = abs(cameraX - w.GetGridX()) + abs(cameraY - w.GetGridY()) + abs(cameraZ - w.GetGridZ());

    return(distance < wDistance);
}
开发者ID:ggtucker,项目名称:SugoiEngine,代码行数:12,代码来源:Chunk.cpp

示例2: abs

// < Operator (Used for chunk sorting, closest to camera)
bool Chunk::operator<(const Chunk &w) const
{
    int playerX = 0;
    int playerY = 0;
    int playerZ = 0;
    if (m_pPlayer != NULL)
    {
        playerX = m_pPlayer->GetGridX();
        playerY = m_pPlayer->GetGridY();
        playerZ = m_pPlayer->GetGridZ();
    }

    int distance = abs(playerX - m_gridX) + abs(playerY - m_gridY) + abs(playerZ - m_gridZ);
    int wDistance = abs(playerX - w.GetGridX()) + abs(playerY - w.GetGridY()) + abs(playerZ - w.GetGridZ());

    return(distance < wDistance);
}
开发者ID:CodeMason,项目名称:Vox,代码行数:18,代码来源:Chunk.cpp

示例3: UpdatingChunksThread

void ChunkManager::UpdatingChunksThread()
{
    while (m_updateThreadActive)
    {
        while (m_pPlayer == NULL)
        {
#ifdef _WIN32
            Sleep(100);
#else
            usleep(100000);
#endif
        }

        while (m_stepLockEnabled == true && m_updateStepLock == true)
        {
#ifdef _WIN32
            Sleep(100);
#else
            usleep(100000);
#endif
        }

        ChunkList updateChunkList;
        ChunkCoordKeysList addChunkList;
        ChunkList rebuildChunkList;
        ChunkList unloadChunkList;

        m_ChunkMapMutexLock.lock();
        typedef map<ChunkCoordKeys, Chunk*>::iterator it_type;
        for (it_type iterator = m_chunksMap.begin(); iterator != m_chunksMap.end(); iterator++)
        {
            Chunk* pChunk = iterator->second;

            updateChunkList.push_back(pChunk);
        }
        m_ChunkMapMutexLock.unlock();

        // Updating chunks
        int numAddedChunks = 0;
        int MAX_NUM_CHUNKS_ADD = 10;
        sort(updateChunkList.begin(), updateChunkList.end(), Chunk::ClosestToCamera);
        for (unsigned int i = 0; i < (int)updateChunkList.size(); i++)
        {
            Chunk* pChunk = updateChunkList[i];

            if (pChunk != NULL)
            {
                pChunk->Update(0.01f);

                int gridX = pChunk->GetGridX();
                int gridY = pChunk->GetGridY();
                int gridZ = pChunk->GetGridZ();

                float xPos = gridX * Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f;
                float yPos = gridY * Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f;
                float zPos = gridZ * Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f;

                vec3 chunkCenter = vec3(xPos, yPos, zPos) + vec3(Chunk::CHUNK_SIZE*Chunk::BLOCK_RENDER_SIZE, Chunk::CHUNK_SIZE*Chunk::BLOCK_RENDER_SIZE, Chunk::CHUNK_SIZE*Chunk::BLOCK_RENDER_SIZE);
                vec3 distanceVec = chunkCenter - m_pPlayer->GetCenter();
                float lengthValue = length(distanceVec);

                if (lengthValue > m_loaderRadius)
                {
                    unloadChunkList.push_back(pChunk);
                }
                else
                {
                    if (numAddedChunks < MAX_NUM_CHUNKS_ADD)
                    {
                        // Check neighbours
                        if (pChunk->GetNumNeighbours() < 6 && (pChunk->IsEmpty() == false) || (gridY == 0))
                        {
                            if (pChunk->GetxMinus() == NULL)
                            {
                                ChunkCoordKeys coordKey;
                                coordKey.x = gridX - 1;
                                coordKey.y = gridY;
                                coordKey.z = gridZ;
                                float xPos = coordKey.x * Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f;
                                float yPos = coordKey.y * Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f;
                                float zPos = coordKey.z * Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f;

                                vec3 chunkCenter = vec3(xPos, yPos, zPos) + vec3(Chunk::CHUNK_SIZE*Chunk::BLOCK_RENDER_SIZE, Chunk::CHUNK_SIZE*Chunk::BLOCK_RENDER_SIZE, Chunk::CHUNK_SIZE*Chunk::BLOCK_RENDER_SIZE);
                                vec3 distanceVec = chunkCenter - m_pPlayer->GetCenter();
                                float lengthValue = length(distanceVec);

                                if (lengthValue <= m_loaderRadius)
                                {
                                    addChunkList.push_back(coordKey);
                                    numAddedChunks++;
                                }
                            }
                            if (pChunk->GetxPlus() == NULL)
                            {
                                ChunkCoordKeys coordKey;
                                coordKey.x = gridX + 1;
                                coordKey.y = gridY;
                                coordKey.z = gridZ;
                                float xPos = coordKey.x * Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f;
                                float yPos = coordKey.y * Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f;
//.........这里部分代码省略.........
开发者ID:CodeMason,项目名称:Vox,代码行数:101,代码来源:ChunkManager.cpp


注:本文中的Chunk::GetGridX方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。