Ejemplo n.º 1
0
    void addChunksToOcl()
    {
        _stampsInBuildList.Clear();
        _chunksInBuildList.Clear();

        for (int curlod = 0; curlod <= LODOctreeMan.MaxLod; curlod++)
        {
            int nChunkToBuild = _chunkToBuildList.Count;
            for (int i = nChunkToBuild - 1; i >= 0; i--)
            {
                //if(_chunkToBuildList[i].w == curlod)
                {
                    int          stamp     = _chunkToBuildList.GetKeyByIdx_Unsafe(i);
                    B45ChunkData chunkData = _chunkToBuildList.GetValueByKey_Unsafe(stamp);
                    if (!chunkData.IsStampIdentical(stamp))
                    {
                        _chunkToBuildList.RemoveAt(i);
                        Debug.Log("RemoveChunkInSet" + chunkData.ChunkPosLod + ":" + stamp + "|" + chunkData.StampOfChnkUpdating);
                        continue;
                    }
                    if (chunkData.LOD == curlod)
                    {
                        _chunkToBuildList.RemoveAt(i);

                        _stampsInBuildList.Add(stamp);
                        _chunksInBuildList.Add(chunkData);

                        b45proc.AddChunkVolumeData(chunkData.DataVT);
                        if (b45proc.numChunks() >= cpuBlock45.MAX_CHUNKS - 1)
                        {
                            return;
                        }
                    }
                }
            }
        }
        return;
    }