#include <vegetable.h>
Nevrax France
Definition at line 54 of file vegetable.h.
Density Angle Factor | |
| enum | TAngleType { AngleGround = 0, AngleCeiling, AngleWall } |
| TAngleType | getAngleType () const |
| float | getCosAngleMax () const |
| float | getCosAngleMin () const |
| void | setAngleCeiling (float cosAngleMax) |
| void | setAngleGround (float cosAngleMin) |
| void | setAngleWall (float cosAngleMin, float cosAngleMax) |
posInWorldAround 4 position on 4 edges around the center in folowing order: | |
| same as generateGroup, but with smoother density effects on border with desnity==0
(0,0.5), (1,0.5), (0.5,0), (0.5,1) (in instance UV coordinates space (as returned in "instances"). | |
| void | generateGroupBiLinear (const CVector &posInWorld, const CVector posInWorldBorder[4], const CVector &surfaceNormal, float area, uint vegetSeed, std::vector< CVector2f > &instances) const |
| void | generateInstance (CVegetableInstanceGroup *ig, const NLMISC::CMatrix &posInWorld, const NLMISC::CRGBAF &modulateAmbientColor, const NLMISC::CRGBAF &modulateDiffuseColor, float blendDistMax, TVegetableWater vegetWaterState, CVegetableUV8 dlmUV) const |
| void | reserveIgAddInstances (CVegetableInstanceGroupReserve &vegetIgReserve, TVegetableWater vegetWaterState, uint numInstances) const |
| void | serial (NLMISC::IStream &f) |
| void | generateGroupEx (float nbInst, const CVector &posInWorld, const CVector &surfaceNormal, uint vegetSeed, std::vector< CVector2f > &instances) const |
| Do the generateGroup, but take nbInst unmodulated by normal. | |
| TAngleType | _AngleType |
| angle type setuped with setAngleMin etc... | |
| float | _CosAngleMax |
| float | _CosAngleMiddle |
| float | _CosAngleMin |
| CVegetableManager * | _Manager |
| the manager | |
| float | _OOCosAngleDist |
| CVegetableShape * | _VegetableShape |
| shape in the manager | |
| float | easeInEaseOut (float x) |
Public Types | |
| enum | TVegetableWater { AboveWater = 0, UnderWater, IntersectWater, VegetInfoLast } |
| Micro vegetation position against Water. Above water is the default. More... | |
Public Member Functions | |
| CVegetable () | |
| void | generateGroup (const CVector &posInWorld, const CVector &surfaceNormal, float area, uint vegetSeed, std::vector< CVector2f > &instances) const |
| void | registerToManager (CVegetableManager *manager) |
Data Fields | |
| NLMISC::CNoiseValue | BendFactor |
| Random Bend factor. | |
| float | BendFrequencyFactor |
| Fixed Bend FrequencyFactor. NB: rounded during addInstance to the nearest NL3D_VEGETABLE_FREQUENCY_FACTOR_PREC. | |
| NLMISC::CNoiseValue | BendPhase |
| Random Bend Phase. | |
| NLMISC::CNoiseColorGradient | Color |
| The color to modulate the instance. | |
| NLMISC::CNoiseValue | Density |
| Density== Number of instance to create / mē. | |
| uint32 | DistType |
| float | MaxDensity |
| the maximum density computed. if <0, no maximum. -1 by default. | |
| NLMISC::CNoiseValue | Rx |
| Random Orientation. | |
| NLMISC::CNoiseValue | Ry |
| Random Orientation. | |
| NLMISC::CNoiseValue | Rz |
| Random Orientation. | |
| std::string | ShapeName |
| Name of the shape to use. | |
| NLMISC::CNoiseValue | Sxy |
| Random Scale. | |
| NLMISC::CNoiseValue | Sz |
| Random Scale. | |
|
|
Definition at line 90 of file vegetable.h. Referenced by getAngleType().
00090 {AngleGround=0, AngleCeiling, AngleWall};
|
|
|
Micro vegetation position against Water. Above water is the default.
Definition at line 58 of file vegetable.h.
00058 { AboveWater = 0, UnderWater, IntersectWater, VegetInfoLast };
|
|
|
Definition at line 48 of file vegetable.cpp. References _Manager, NLMISC::CNoiseValue::Abs, BendFactor, BendFrequencyFactor, DistType, MaxDensity, NLMISC::CNoiseValue::Rand, Rx, Ry, Rz, setAngleGround(), Sxy, and Sz.
00049 {
00050 // Ground style density.
00051 setAngleGround(0);
00052
00053 // Density not maximised.
00054 MaxDensity= -1;
00055
00056 // No scale.
00057 Sxy.Abs= Sz.Abs= 1;
00058 Sxy.Rand= Sz.Rand= 0;
00059 // No rotation.
00060 Rx.Abs= Ry.Abs= Rz.Abs= 0;
00061 Rx.Rand= Ry.Rand= Rz.Rand= 0;
00062 // No BendFactor.
00063 BendFactor.Abs= 1;
00064 BendFactor.Rand= 0;
00065 BendFrequencyFactor= 1;
00066
00067 // Appear at 0.
00068 DistType= 0;
00069
00070 _Manager= NULL;
00071 }
|
|
|
Definition at line 193 of file vegetable.h. Referenced by generateGroupBiLinear().
|
|
||||||||||||||||||||||||
|
generate a list of instance to create on a small ground element, according to density and noise. result is a list of instance to create, with random 2d position. 2d position are in range [0..1]. caller should scale, or use it to compute real world position, and then use generateInstance() to really compute the instances. Warning! Use OptFastFloor()! So call must be enclosed with a OptFastFloorBegin()/OptFastFloorEnd().
Definition at line 176 of file vegetable.cpp. References Density, NLMISC::CNoiseValue::eval(), generateGroupEx(), MaxDensity, min, and uint.
00177 {
00178 // number of instances to generate
00179 float dens= Density.eval(posInWorld);
00180 if(MaxDensity >= 0)
00181 dens= min(dens, MaxDensity);
00182 float nbInst= area * dens;
00183
00184 // modulate by normal and generate them.
00185 generateGroupEx(nbInst, posInWorld, surfaceNormal, vegetSeed, instances);
00186 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 190 of file vegetable.cpp. References Density, easeInEaseOut(), NLMISC::CNoiseValue::eval(), NLMISC::CNoiseValue::evalOneLevelRandom(), generateGroupEx(), MaxDensity, min, NL3D::RandomGenerator, sint, uint, x, and y. Referenced by NL3D::CPatch::generateTileVegetable().
00191 {
00192 sint i;
00193 const float evenDistribFact= 12.25f; // an arbitrary value to have a higher frequency for random.
00194
00195 // compute how many instances to generate on borders of the patch
00196 // ==================
00197 float edgeDensity[4];
00198 for(i=0; i<4; i++)
00199 {
00200 // Get number of instances generated on edges
00201 edgeDensity[i]= area * Density.eval(posInWorldBorder[i]);
00202 if(MaxDensity >= 0)
00203 edgeDensity[i]= min(edgeDensity[i], area * MaxDensity);
00204 edgeDensity[i]= max(0.f, edgeDensity[i]);
00205 }
00206 // Average on center of the patch for each direction.
00207 float edgeDensityCenterX;
00208 float edgeDensityCenterY;
00209 edgeDensityCenterX= 0.5f * (edgeDensity[0] + edgeDensity[1]);
00210 edgeDensityCenterY= 0.5f * (edgeDensity[2] + edgeDensity[3]);
00211
00212
00213 // Average for all the patch
00214 float nbInstAverage= 0.5f * (edgeDensityCenterX + edgeDensityCenterY);
00215
00216
00217 // generate instances on the patch
00218 // ==================
00219 generateGroupEx(nbInstAverage, posInWorld, surfaceNormal, vegetSeed, instances);
00220
00221
00222
00223 // move instances x/y to follow edge repartition
00224 // ==================
00225 // If on a direction, both edges are 0 density, then must do a special formula
00226 bool middleX= edgeDensityCenterX<=1;
00227 bool middleY= edgeDensityCenterY<=1;
00228 float OOEdgeDCX=0.0;
00229 float OOEdgeDCY=0.0;
00230 if(!middleX) OOEdgeDCX= 1.0f / edgeDensityCenterX;
00231 if(!middleY) OOEdgeDCY= 1.0f / edgeDensityCenterY;
00232 // for all instances
00233 for(i=0; i<(sint)instances.size(); i++)
00234 {
00235 float x= instances[i].x;
00236 float y= instances[i].y;
00237 // a seed for random.
00238 CVector randSeed(x*evenDistribFact, y*evenDistribFact, 0);
00239
00240 // X change.
00241 if(middleX)
00242 {
00243 // instances are grouped at middle. this is the bijection of easeInEaseOut
00244 x= x+x - easeInEaseOut(x);
00245 x= x+x - easeInEaseOut(x);
00246 instances[i].x= x;
00247 }
00248 else
00249 {
00250 // Swap X, randomly. swap more on border
00251 // evaluate the density in X direction we have at this point.
00252 float densX= edgeDensity[0]*(1-x) + edgeDensity[1]* x ;
00253 // If on the side of the lowest density
00254 if(densX < edgeDensityCenterX)
00255 {
00256 // may swap the position
00257 float rdSwap= (densX * OOEdgeDCX );
00258 // (densX * OOEdgeDCX) E [0..1[. The more it is near 0, the more is has chance to be swapped.
00259 rdSwap+= RandomGenerator.evalOneLevelRandom( randSeed );
00260 if(rdSwap<1)
00261 instances[i].x= 1 - instances[i].x;
00262 }
00263 }
00264
00265 // Y change.
00266 if(middleY)
00267 {
00268 // instances are grouped at middle. this is the bijection of easeInEaseOut
00269 y= y+y - easeInEaseOut(y);
00270 y= y+y - easeInEaseOut(y);
00271 instances[i].y= y;
00272 }
00273 else
00274 {
00275 // Swap Y, randomly. swap more on border
00276 // evaluate the density in Y direction we have at this point.
00277 float densY= edgeDensity[2]*(1-y) + edgeDensity[3]* y ;
00278 // If on the side of the lowest density
00279 if(densY < edgeDensityCenterY)
00280 {
00281 // may swap the position
00282 float rdSwap= (densY * OOEdgeDCY);
00283 // (densY * OOEdgeDCY) E [0..1[. The more it is near 0, the more is has chance to be swapped.
00284 rdSwap+= RandomGenerator.evalOneLevelRandom( randSeed );
00285 if(rdSwap<1)
00286 instances[i].y= 1 - instances[i].y;
00287 }
00288 }
00289
00290 }
00291
00292 }
|
|
||||||||||||||||||||||||
|
Do the generateGroup, but take nbInst unmodulated by normal.
Definition at line 132 of file vegetable.cpp. References _CosAngleMiddle, _OOCosAngleDist, NLMISC::CNoiseValue::evalOneLevelRandom(), NLMISC::OptFastFloor(), NL3D::RandomGenerator, sint, NLMISC::sqr(), uint, NLMISC::CVector2f::x, NLMISC::CVector::x, NLMISC::CVector2f::y, NLMISC::CVector::y, and NLMISC::CVector::z. Referenced by generateGroup(), and generateGroupBiLinear().
00133 {
00134
00135 // Density modulation.
00136 //===================
00137
00138 // compute cos of angle between surfaceNormal and K(0,0,1).
00139 float cosAngle= surfaceNormal.z;
00140 // compute angleFactor density. Use a quadratic, because f'(_CosAngleMiddle)==0.
00141 float angleFact= 1 - sqr((cosAngle - _CosAngleMiddle) * _OOCosAngleDist);
00142 angleFact= max(0.f, angleFact);
00143 // modulate density with angleFactor.
00144 nbInst*= angleFact;
00145
00146 // Now, 0<=nbInst<+oo. If we have 0.1, it means that we have 10% chance to spawn an instance.
00147 // So add a "random" value (with help of a noise with High frequency)
00148 // if nbInst==0, we should never have any instance (which may arise if evalOneLevelRandom()==1).
00149 // hence the 0.99f* which ensure that we do nbInst+= [0..1[.
00150 nbInst+= 0.99f * RandomGenerator.evalOneLevelRandom(posInWorld);
00151
00152 // and then get only the integral part.
00153 sint nbInstances= NLMISC::OptFastFloor(nbInst);
00154 nbInstances= max(0, nbInstances);
00155
00156 // resize the instances
00157 instances.resize(nbInstances);
00158
00159 // Position generation.
00160 //===================
00161 // For now, generate them randomly.
00162 static CVector2f dSeed(0.513f, 0.267f); // random values.
00163 CVector seed= posInWorld;
00164 seed.z+= vegetSeed * 0.723f; // 0.723f is a random value.
00165 for(sint i=0; i<nbInstances; i++)
00166 {
00167 instances[i].x= RandomGenerator.evalOneLevelRandom(seed);
00168 seed.x+= dSeed.x;
00169 instances[i].y= RandomGenerator.evalOneLevelRandom(seed);
00170 seed.y+= dSeed.y;
00171 }
00172 }
|
|
||||||||||||||||||||||||||||||||
|
posInWorld should be a matrix of position + rotation (typically for surface alignement). FinalPos= posInWorld * noiseMatrix(scale/rot) If shape is Lighted: FinalAmbientColor= vegetManager->Ambient * modulateAmbientColor * randomColor. FinalDiffuseColor= vegetManager->Diffuse * modulateDiffuseColor * randomColor. else FinalAmbientColor= randomColor. FinalDiffuseColor= randomColor. If instance is in AlphaBlend/ZSort, blendDistMax is the distance where the instance is invisible (alpha==0). instance is added to the manager, under the instance group ig. This one must have been generated by the VegetableManager.
Definition at line 306 of file vegetable.cpp. References _Manager, _VegetableShape, NLMISC::CNoiseValue::Abs, NL3D::CVegetableManager::addInstance(), BendFactor, BendFrequencyFactor, BendPhase, NLMISC::CNoiseColorGradient::eval(), NLMISC::CNoiseValue::eval(), NLMISC::CMatrix::getPos(), NL3D::CVegetableShape::Lighted, nlassert, NLMISC::CNoiseValue::Rand, Rx, Ry, Rz, NLMISC::CMatrix::scale(), NLMISC::CMatrix::setRot(), Sxy, Sz, NLMISC::CVector::x, NLMISC::CVector::y, and NLMISC::CVector::z. Referenced by NL3D::CPatch::generateTileVegetable().
00309 {
00310 nlassert(_Manager);
00311
00312
00313 CVector seed= posInWorld.getPos();
00314
00315 // Generate Matrix.
00316 // ===============
00317
00318 // Generate a random Scale / Rotation matrix.
00319 CMatrix randomMat;
00320 // setup rotation
00321 CVector rot;
00322 rot.x= Rx.eval(seed);
00323 rot.y= Ry.eval(seed);
00324 rot.z= Rz.eval(seed);
00325 randomMat.setRot(rot, CMatrix::ZXY);
00326 // scale.
00327 if(Sxy.Abs!=0 || Sxy.Rand!=0 || Sz.Abs!=0 || Sz.Rand!=0)
00328 {
00329 CVector scale;
00330 scale.x= scale.y= Sxy.eval(seed);
00331 scale.z= Sz.eval(seed);
00332 randomMat.scale(scale);
00333 }
00334
00335 // Final Matrix.
00336 CMatrix finalMatrix;
00337 finalMatrix= posInWorld * randomMat;
00338
00339 // Generate Color and factor
00340 // ===============
00341 CRGBAF materialColor(1,1,1,1);
00342 // evaluate gradients. If none, color not modified.
00343 Color.eval(seed, materialColor);
00344 // modulate with user
00345 CRGBAF ambient, diffuse;
00346 if(_VegetableShape && _VegetableShape->Lighted)
00347 {
00348 ambient= modulateAmbientColor * materialColor;
00349 diffuse= modulateDiffuseColor * materialColor;
00350 }
00351 else
00352 {
00353 ambient= materialColor;
00354 diffuse= materialColor;
00355 }
00356
00357 // Generate a bendFactor
00358 float bendFactor= BendFactor.eval(seed);
00359 // Generate a bendPhase
00360 float bendPhase= BendPhase.eval(seed);
00361
00362
00363 // Append to the vegetableManager
00364 // ===============
00365 if (_VegetableShape)
00366 {
00367 _Manager->addInstance(ig, _VegetableShape, finalMatrix, ambient, diffuse,
00368 bendFactor, bendPhase, BendFrequencyFactor, blendDistMax,
00369 (CVegetableManager::TVegetableWater)vegetWaterState, dlmUV);
00370 }
00371 }
|
|
|
Definition at line 109 of file vegetable.h. References _AngleType, and TAngleType.
00109 {return _AngleType;}
|
|
|
Definition at line 108 of file vegetable.h. References _CosAngleMax.
00108 {return _CosAngleMax;}
|
|
|
Definition at line 107 of file vegetable.h. References _CosAngleMin.
00107 {return _CosAngleMin;}
|
|
|
register the vegetable to the vegetable manager. do it first. used by generateInstance(). Manager will load the shape needed for this vegetable. Definition at line 123 of file vegetable.cpp. References _Manager, _VegetableShape, NL3D::CVegetableManager::getVegetableShape(), nlassert, and ShapeName.
00124 {
00125 nlassert(manager);
00126 _Manager= manager;
00127 _VegetableShape= _Manager->getVegetableShape(ShapeName);
00128 }
|
|
||||||||||||||||
|
Fast allocation reservation: you must call this before generating all your instances in an Ig: Add N instances of Vegetable to the reservation system.
Definition at line 296 of file vegetable.cpp. References _Manager, _VegetableShape, nlassert, NL3D::CVegetableManager::reserveIgAddInstances(), and uint. Referenced by NL3D::CPatch::generateTileVegetable().
00297 {
00298 nlassert(_Manager);
00299
00300 if (_VegetableShape)
00301 _Manager->reserveIgAddInstances(vegetIgReserve, _VegetableShape, (CVegetableManager::TVegetableWater)vegetWaterState, numInstances);
00302 }
|
|
|
Definition at line 375 of file vegetable.cpp. References _AngleType, _CosAngleMax, _CosAngleMiddle, _CosAngleMin, _OOCosAngleDist, BendFactor, BendFrequencyFactor, BendPhase, Density, DistType, MaxDensity, Rx, Ry, Rz, NLMISC::IStream::serial(), NLMISC::IStream::serialEnum(), NLMISC::IStream::serialVersion(), ShapeName, sint, Sxy, and Sz.
00376 {
00377 /*
00378 Version 1:
00379 - add BendFrequencyFactor
00380 Version 0:
00381 - base version
00382 */
00383 sint ver= f.serialVersion(1);
00384
00385 f.serial(ShapeName);
00386 f.serial(Density);
00387 f.serial(MaxDensity);
00388 f.serial(_CosAngleMin, _CosAngleMax, _CosAngleMiddle, _OOCosAngleDist);
00389 f.serialEnum(_AngleType);
00390 f.serial(Sxy, Sz);
00391 f.serial(Rx, Ry, Rz);
00392 f.serial(BendFactor);
00393 f.serial(BendPhase);
00394 f.serial(Color);
00395 f.serial(DistType);
00396
00397 if(ver>=1)
00398 f.serial(BendFrequencyFactor);
00399 else
00400 BendFrequencyFactor= 1;
00401 }
|
|
|
set an Angle setup such that max density is when normal= -K, and 0 density is when normalAngle= cosAngleMax.
Definition at line 91 of file vegetable.cpp. References _AngleType, _CosAngleMax, _CosAngleMiddle, _CosAngleMin, _OOCosAngleDist, and AngleCeiling.
00092 {
00093 _AngleType= AngleCeiling;
00094
00095 _CosAngleMax= cosAngleMax;
00096 // We must be at densityFactor==1, when cosAngle==-1, keeping the same formula.
00097 _CosAngleMin= -1 - (cosAngleMax-(-1));
00098
00099 // precalc
00100 _CosAngleMiddle= (_CosAngleMin + _CosAngleMax)/2;
00101 _OOCosAngleDist= _CosAngleMax - _CosAngleMiddle;
00102 if(_OOCosAngleDist)
00103 _OOCosAngleDist= 1.0f / _OOCosAngleDist;
00104 }
|
|
|
set an Angle setup such that max density is when normal== K, and 0 density is when normalAngle= cosAngleMin.
Definition at line 75 of file vegetable.cpp. References _AngleType, _CosAngleMax, _CosAngleMiddle, _CosAngleMin, _OOCosAngleDist, and AngleGround. Referenced by CVegetable().
00076 {
00077 _AngleType= AngleGround;
00078
00079 _CosAngleMin= cosAngleMin;
00080 // We must be at densityFactor==1, when cosAngle==1, keeping the same formula.
00081 _CosAngleMax= 1 + (1-cosAngleMin);
00082
00083 // precalc
00084 _CosAngleMiddle= (_CosAngleMin + _CosAngleMax)/2;
00085 _OOCosAngleDist= _CosAngleMax - _CosAngleMiddle;
00086 if(_OOCosAngleDist)
00087 _OOCosAngleDist= 1.0f / _OOCosAngleDist;
00088 }
|
|
||||||||||||
|
set an Angle setup such that max density is when normal is at (cosAngleMin+cosAngleMax)/2, and 0 density is when cosAngle= one of the cosAngleMin or cosAngleMax. Definition at line 107 of file vegetable.cpp. References _AngleType, _CosAngleMax, _CosAngleMiddle, _CosAngleMin, _OOCosAngleDist, and AngleWall.
00108 {
00109 _AngleType= AngleWall;
00110
00111 _CosAngleMin= cosAngleMin;
00112 _CosAngleMax= cosAngleMax;
00113
00114 // precalc
00115 _CosAngleMiddle= (_CosAngleMin + _CosAngleMax)/2;
00116 _OOCosAngleDist= _CosAngleMax - _CosAngleMiddle;
00117 if(_OOCosAngleDist)
00118 _OOCosAngleDist= 1.0f / _OOCosAngleDist;
00119 }
|
|
|
angle type setuped with setAngleMin etc...
Definition at line 179 of file vegetable.h. Referenced by getAngleType(), serial(), setAngleCeiling(), setAngleGround(), and setAngleWall(). |
|
|
density is multiplied by a function f(cos angle with verticalVector), such that f(CosAngleMiddle)==1, and f(CosAngleMin)==f(CosAngleMax)== 0 Definition at line 177 of file vegetable.h. Referenced by getCosAngleMax(), serial(), setAngleCeiling(), setAngleGround(), and setAngleWall(). |
|
|
density is multiplied by a function f(cos angle with verticalVector), such that f(CosAngleMiddle)==1, and f(CosAngleMin)==f(CosAngleMax)== 0 Definition at line 177 of file vegetable.h. Referenced by generateGroupEx(), serial(), setAngleCeiling(), setAngleGround(), and setAngleWall(). |
|
|
density is multiplied by a function f(cos angle with verticalVector), such that f(CosAngleMiddle)==1, and f(CosAngleMin)==f(CosAngleMax)== 0 Definition at line 177 of file vegetable.h. Referenced by getCosAngleMin(), serial(), setAngleCeiling(), setAngleGround(), and setAngleWall(). |
|
|
the manager
Definition at line 183 of file vegetable.h. Referenced by CVegetable(), generateInstance(), registerToManager(), and reserveIgAddInstances(). |
|
|
density is multiplied by a function f(cos angle with verticalVector), such that f(CosAngleMiddle)==1, and f(CosAngleMin)==f(CosAngleMax)== 0 Definition at line 177 of file vegetable.h. Referenced by generateGroupEx(), serial(), setAngleCeiling(), setAngleGround(), and setAngleWall(). |
|
|
shape in the manager
Definition at line 185 of file vegetable.h. Referenced by generateInstance(), registerToManager(), and reserveIgAddInstances(). |
|
|
Random Bend factor.
Definition at line 72 of file vegetable.h. Referenced by CVegetable(), generateInstance(), and serial(). |
|
|
Fixed Bend FrequencyFactor. NB: rounded during addInstance to the nearest NL3D_VEGETABLE_FREQUENCY_FACTOR_PREC.
Definition at line 76 of file vegetable.h. Referenced by CVegetable(), generateInstance(), and serial(). |
|
|
Random Bend Phase.
Definition at line 74 of file vegetable.h. Referenced by generateInstance(), and serial(). |
|
|
The color to modulate the instance.
Definition at line 78 of file vegetable.h. |
|
|
Density== Number of instance to create / mē.
Definition at line 64 of file vegetable.h. Referenced by generateGroup(), generateGroupBiLinear(), and serial(). |
|
|
At which distance this vegetable will be rendered. NB: DistType is not managed by CVegetableManager, but by user (eg CLandscape). Definition at line 82 of file vegetable.h. Referenced by CVegetable(), and serial(). |
|
|
the maximum density computed. if <0, no maximum. -1 by default.
Definition at line 66 of file vegetable.h. Referenced by CVegetable(), generateGroup(), generateGroupBiLinear(), and serial(). |
|
|
Random Orientation.
Definition at line 70 of file vegetable.h. Referenced by CVegetable(), generateInstance(), and serial(). |
|
|
Random Orientation.
Definition at line 70 of file vegetable.h. Referenced by CVegetable(), generateInstance(), and serial(). |
|
|
Random Orientation.
Definition at line 70 of file vegetable.h. Referenced by CVegetable(), generateInstance(), and serial(). |
|
|
Name of the shape to use.
Definition at line 62 of file vegetable.h. Referenced by registerToManager(), and serial(). |
|
|
Random Scale.
Definition at line 68 of file vegetable.h. Referenced by CVegetable(), generateInstance(), and serial(). |
|
|
Random Scale.
Definition at line 68 of file vegetable.h. Referenced by CVegetable(), generateInstance(), and serial(). |
1.3.6