Beispiel #1
0
        static public void setBladeToGrid(int x, int z, string setName, int bladeIndex, bool erase, bool forceErase)
        {
            int terrainToFoliageGridMultiple = (int)(BTerrainQuadNode.cMaxWidth / FoliageManager.cNumUsedXBladesPerChunk);

            if (x % terrainToFoliageGridMultiple != 0 || z % terrainToFoliageGridMultiple != 0)
            {
                return;
            }

            int setIndex = giveIndexOfSet(setName);

            int idx = x + TerrainGlobals.getTerrain().getNumXVerts() * z;


            int minQNX     = (int)(x / BTerrainQuadNode.cMaxWidth);
            int minQNZ     = (int)(z / BTerrainQuadNode.cMaxHeight);
            int numXChunks = (int)(TerrainGlobals.getTerrain().getNumXVerts() / BTerrainQuadNode.cMaxWidth);
            int qnIndex    = minQNX + numXChunks * minQNZ;
            int idex       = giveChunkWithParentIndex(qnIndex);


            if (erase)
            {
                if (mVertData.ContainsValue(idx))
                {
                    if (!forceErase)
                    {
                        FoliageVertData vRep = mVertData.GetValue(idx);
                        if (giveIndexOfSet(vRep.mFoliageSetName) != setIndex || vRep.mFoliageSetBladeIndex != bladeIndex)
                        {
                            return;
                        }
                    }

                    mVertData.SetValue(idx, new FoliageVertData()); //Default 'empty' for a jagged<T> value is the default constructor..
                    if (idex != -1)
                    {
                        mQNChunks[idex].destroyRenderVBs();
                    }
                }
            }
            else
            {
                mVertData.SetValue(idx, new FoliageVertData(setName, bladeIndex));

                if (idex == -1)//we need to add a new chunk
                {
                    idex = mQNChunks.Count;
                    addNewChunk(qnIndex);
                }
                mQNChunks[idex].bladeAdded(mFoliageSets[setIndex].mFullFileName);
            }
        }