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); } }
public void createJaggedFrom(JaggedContainer <float> v) { destroyHeightOverride(); initHeightOverride(); long id; float maskValue; v.ResetIterator(); while (v.MoveNext(out id, out maskValue)) { if (maskValue == cJaggedEmptyValue) { continue; } mHeightOverride.SetValue(id, maskValue); } }
public void createJaggedScarabPassableFrom(JaggedContainer <int> v) { destroyScarabPassableOverride(); initScarabPassableOverride(); long id; int maskValue; v.ResetIterator(); while (v.MoveNext(out id, out maskValue)) { if (maskValue == 0) { continue; } mSimScarabPassableOverride.SetValue(id, maskValue); } }
public void createJaggedTileTypeFrom(JaggedContainer <int> v) { destroyTileTypeOverride(); initTileTypeOverride(); if (v == null) { return; } long id; int maskValue; v.ResetIterator(); while (v.MoveNext(out id, out maskValue)) { if (maskValue == 0) { continue; } mSimTileTypeOverride.SetValue(id, maskValue); } }
static void resampleJaggedArrayFloat(ref JaggedContainer <float> dat, int origX, int origY, int newX, int newY, float emptyVal) { float[] oldArry = new float[origX * origY]; for (int i = 0; i < origX * origY; i++) { oldArry[i] = dat.GetValue(i); } float[] imgScaledX = new float[newX * newY]; ImageManipulation.resizeF32Img(oldArry, imgScaledX, origX, origY, newX, newY, ImageManipulation.eFilterType.cFilter_Nearest); dat.Clear(); dat.SetEmptyValue(emptyVal); for (int i = 0; i < newX * newY; i++) { if (imgScaledX[i] != emptyVal) { dat.SetValue(i, imgScaledX[i]); } } imgScaledX = null; oldArry = null; }