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


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

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


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

示例1: UnloadChunk

void ChunkManager::UnloadChunk(Chunk* pChunk)
{
    ChunkCoordKeys coordKeys;
    coordKeys.x = pChunk->GetGridX();
    coordKeys.y = pChunk->GetGridY();
    coordKeys.z = pChunk->GetGridZ();

    Chunk* pChunkXMinus = GetChunk(coordKeys.x - 1, coordKeys.y, coordKeys.z);
    Chunk* pChunkXPlus = GetChunk(coordKeys.x + 1, coordKeys.y, coordKeys.z);
    Chunk* pChunkYMinus = GetChunk(coordKeys.x, coordKeys.y - 1, coordKeys.z);
    Chunk* pChunkYPlus = GetChunk(coordKeys.x, coordKeys.y + 1, coordKeys.z);
    Chunk* pChunkZMinus = GetChunk(coordKeys.x, coordKeys.y, coordKeys.z - 1);
    Chunk* pChunkZPlus = GetChunk(coordKeys.x, coordKeys.y, coordKeys.z + 1);

    if (pChunkXMinus)
    {
        if (pChunkXMinus->GetxPlus())
        {
            pChunkXMinus->SetNumNeighbours(pChunkXMinus->GetNumNeighbours() - 1);
            pChunkXMinus->SetxPlus(NULL);
        }
    }
    if (pChunkXPlus)
    {
        if (pChunkXPlus->GetxMinus())
        {
            pChunkXPlus->SetNumNeighbours(pChunkXPlus->GetNumNeighbours() - 1);
            pChunkXPlus->SetxMinus(NULL);
        }
    }
    if (pChunkYMinus)
    {
        if (pChunkYMinus->GetyPlus())
        {
            pChunkYMinus->SetNumNeighbours(pChunkYMinus->GetNumNeighbours() - 1);
            pChunkYMinus->SetyPlus(NULL);
        }
    }
    if (pChunkYPlus)
    {
        if (pChunkYPlus->GetyMinus())
        {
            pChunkYPlus->SetNumNeighbours(pChunkYPlus->GetNumNeighbours() - 1);
            pChunkYPlus->SetyMinus(NULL);
        }
    }
    if (pChunkZMinus)
    {
        if (pChunkZMinus->GetzPlus())
        {
            pChunkZMinus->SetNumNeighbours(pChunkZMinus->GetNumNeighbours() - 1);
            pChunkZMinus->SetzPlus(NULL);
        }
    }
    if (pChunkZPlus)
    {
        if (pChunkZPlus->GetzMinus())
        {
            pChunkZPlus->SetNumNeighbours(pChunkZPlus->GetNumNeighbours() - 1);
            pChunkZPlus->SetzMinus(NULL);
        }
    }

    // Remove from map
    m_ChunkMapMutexLock.lock();
    map<ChunkCoordKeys, Chunk*>::iterator it = m_chunksMap.find(coordKeys);
    if (it != m_chunksMap.end())
    {
        m_chunksMap.erase(coordKeys);
    }
    m_ChunkMapMutexLock.unlock();

    // Clear chunk linkage
    if (m_pPlayer != NULL)
    {
        m_pPlayer->ClearChunkCacheForChunk(pChunk);
    }

    // Unload and delete
    pChunk->Unload();
    delete pChunk;
}
开发者ID:CodeMason,项目名称:Vox,代码行数:82,代码来源:ChunkManager.cpp

示例2: UpdateChunkNeighbours

void ChunkManager::UpdateChunkNeighbours(Chunk* pChunk, int x, int y, int z)
{
    pChunk->SetNumNeighbours(0);

    Chunk* pChunkXMinus = GetChunk(x - 1, y, z);
    Chunk* pChunkXPlus = GetChunk(x + 1, y, z);
    Chunk* pChunkYMinus = GetChunk(x, y - 1, z);
    Chunk* pChunkYPlus = GetChunk(x, y + 1, z);
    Chunk* pChunkZMinus = GetChunk(x, y, z - 1);
    Chunk* pChunkZPlus = GetChunk(x, y, z + 1);

    if (pChunkXMinus)
    {
        pChunk->SetNumNeighbours(pChunk->GetNumNeighbours() + 1);
        pChunk->SetxMinus(pChunkXMinus);
        if (pChunkXMinus->GetxPlus() == NULL)
        {
            pChunkXMinus->SetNumNeighbours(pChunkXMinus->GetNumNeighbours() + 1);
            pChunkXMinus->SetxPlus(pChunk);
        }
    }
    if (pChunkXPlus)
    {
        pChunk->SetNumNeighbours(pChunk->GetNumNeighbours() + 1);
        pChunk->SetxPlus(pChunkXPlus);
        if (pChunkXPlus->GetxMinus() == NULL)
        {
            pChunkXPlus->SetNumNeighbours(pChunkXPlus->GetNumNeighbours() + 1);
            pChunkXPlus->SetxMinus(pChunk);
        }
    }
    if (pChunkYMinus)
    {
        pChunk->SetNumNeighbours(pChunk->GetNumNeighbours() + 1);
        pChunk->SetyMinus(pChunkYMinus);
        if (pChunkYMinus->GetyPlus() == NULL)
        {
            pChunkYMinus->SetNumNeighbours(pChunkYMinus->GetNumNeighbours() + 1);
            pChunkYMinus->SetyPlus(pChunk);
        }
    }
    if (pChunkYPlus)
    {
        pChunk->SetNumNeighbours(pChunk->GetNumNeighbours() + 1);
        pChunk->SetyPlus(pChunkYPlus);
        if (pChunkYPlus->GetyMinus() == NULL)
        {
            pChunkYPlus->SetNumNeighbours(pChunkYPlus->GetNumNeighbours() + 1);
            pChunkYPlus->SetyMinus(pChunk);
        }
    }
    if (pChunkZMinus)
    {
        pChunk->SetNumNeighbours(pChunk->GetNumNeighbours() + 1);
        pChunk->SetzMinus(pChunkZMinus);
        if (pChunkZMinus->GetzPlus() == NULL)
        {
            pChunkZMinus->SetNumNeighbours(pChunkZMinus->GetNumNeighbours() + 1);
            pChunkZMinus->SetzPlus(pChunk);
        }
    }
    if (pChunkZPlus)
    {
        pChunk->SetNumNeighbours(pChunk->GetNumNeighbours() + 1);
        pChunk->SetzPlus(pChunkZPlus);
        if (pChunkZPlus->GetzMinus() == NULL)
        {
            pChunkZPlus->SetNumNeighbours(pChunkZPlus->GetNumNeighbours() + 1);
            pChunkZPlus->SetzMinus(pChunk);
        }
    }
}
开发者ID:CodeMason,项目名称:Vox,代码行数:72,代码来源:ChunkManager.cpp


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