#include <ps_attrib_maker_helper.h>
Inheritance diagram for NL3D::CPSAttribMakerMemory< uint32 >:
Definition at line 1651 of file ps_attrib_maker_helper.h.
Public Member Functions | |
virtual CPSAttribMakerBase * | clone () const=0 |
CPSAttribMakerMemory (const CPSAttribMakerMemory< uint32 > &other) | |
CPSAttribMakerMemory () | |
virtual void | deleteElement (uint32 index) |
inherited from CPSAttribMaker | |
virtual uint32 | get (float input) |
virtual uint32 | get (CPSLocated *loc, uint32 index) |
inherited from CPSAttribMaker | |
virtual bool | getClamping (void) const |
virtual std::string | getClassName ()=0 |
uint32 | getDefaultValue (void) const |
get the default value : | |
virtual CPSInputType | getInput (void) const |
virtual uint32 | getMaxValue (void) const |
get the min value, or an evalution that is guaranteed to be < to it (meaningful for ordered set only) | |
virtual uint32 | getMinValue (void) const |
get the max value, or an evalution that is guaranteed to be > to it (meaningful for ordered set only) | |
float | getNbCycles (void) const |
const CPSAttribMaker< uint32 > * | getScheme (void) const |
get the scheme used (const version) | |
CPSAttribMaker< uint32 > * | getScheme (void) |
get the scheme used | |
virtual const char * | getType () |
inherited from CPSAttribMakerBase. Template specialization will do the job | |
virtual bool | hasCustomInput (void) |
tells wether one may choose one attribute from a CPSLocated to use as an input. If false, the input(s) is fixed | |
bool | hasMemory (void) const |
virtual bool | isClampingSupported (void) const |
virtual void * | make (CPSLocated *loc, uint32 startIndex, void *output, uint32 stride, uint32 numAttrib, bool allowNoCopy=false, uint32 srcStep=(1<< 16)) const |
inherited from CPSAttribMaker | |
virtual void | make4 (CPSLocated *loc, uint32 startIndex, void *tab, uint32 stride, uint32 numAttrib, uint32 srcStep=(1<< 16)) const |
inherited from CPSAttribMaker | |
virtual void | makeN (CPSLocated *loc, uint32 startIndex, void *tab, uint32 stride, uint32 numAttrib, uint32 nbReplicate, uint32 srcStep=(1<< 16)) const |
inherited from CPSAttribMaker | |
virtual void | newElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
inherited from CPSAttribMaker | |
virtual void | resize (uint32 capacity, uint32 nbPresentElements) |
virtual void | serial (NLMISC::IStream &f) throw (NLMISC::EStream) |
serialisation of the object. Derivers MUST call this, (if they use the attribute of this class at least) | |
virtual void | setClamping (bool enable=true) |
void | setDefaultValue (uint32defaultValue) |
virtual void | setInput (const CPSInputType &input) |
void | setNbCycles (float nbCycles) |
void | setScheme (CPSAttribMaker< uint32 > *scheme) |
Protected Attributes | |
uint32 | _DefaultValue |
bool | _HasMemory |
float | _NbCycles |
CPSAttribMaker< uint32 > * | _Scheme |
CPSAttrib< uint32 > | _T |
Private Attributes | |
uint32 | _MaxValue |
uint32 | _MinValue |
|
|
Definition at line 1657 of file ps_attrib_maker_helper.h. References uint32.
|
|
Definition at line 1655 of file ps_attrib_maker_helper.h. References uint32.
01655 : CPSAttribMakerMemoryBase<uint32>() {} |
|
inherited from CPSAttribMaker
Reimplemented from NL3D::CPSAttribMaker< uint32 >. Definition at line 1558 of file ps_attrib_maker_helper.h.
|
|
Direct lookup of the result value from a float input (if it makes sense). This bypass what was set with setInput The input must be in [0, 1[ Reimplemented in NL3D::CPSAttribMakerT< uint32, CPSValueGradientFunc< uint32 > >, and NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >. Definition at line 161 of file ps_attrib_maker.h.
00161 { nlassert(0); return T(); /* not supported by default */ } |
|
inherited from CPSAttribMaker
Implements NL3D::CPSAttribMaker< uint32 >. Definition at line 1399 of file ps_attrib_maker_helper.h.
01400 { 01401 if (index < _T.getSize()) return _T[index]; 01402 else return _DefaultValue; 01403 } |
|
Test if the clamping is enabled. The default is false (clamping unsupported)
Reimplemented in NL3D::CPSAttribMakerT< uint32, CPSValueGradientFunc< uint32 > >, and NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >. Definition at line 272 of file ps_attrib_maker.h.
00272 { return false ; } |
|
Implemented in NLAIAGENT::CNumericIndex, NLAIC::IPointerGestion, NLAIC::CIdentType, and CAutomataDesc. Referenced by NLMISC::CClassRegistry::checkObject(), and NL3D::GetTextureSize(). |
|
get the default value :
Definition at line 1356 of file ps_attrib_maker_helper.h.
01356 { return _DefaultValue; } |
|
get the type of input (if supported). The default return attrDate
Reimplemented in NL3D::CPSAttribMakerT< uint32, CPSValueGradientFunc< uint32 > >, and NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >. Definition at line 251 of file ps_attrib_maker.h.
00251 { return CPSInputType() ; }
|
|
get the min value, or an evalution that is guaranteed to be < to it (meaningful for ordered set only)
Reimplemented from NL3D::CPSAttribMaker< uint32 >. Definition at line 1665 of file ps_attrib_maker_helper.h. References uint32.
01665 { return _MaxValue; } |
|
get the max value, or an evalution that is guaranteed to be > to it (meaningful for ordered set only)
Reimplemented from NL3D::CPSAttribMaker< uint32 >. Definition at line 1664 of file ps_attrib_maker_helper.h. References uint32.
01664 { return _MinValue; } |
|
Retrieve the number of cycles
Definition at line 236 of file ps_attrib_maker.h.
00236 { return _NbCycles ; } |
|
get the scheme used (const version)
Definition at line 1377 of file ps_attrib_maker_helper.h.
01377 { return _Scheme; } |
|
get the scheme used
Definition at line 1375 of file ps_attrib_maker_helper.h.
01375 { return _Scheme; } |
|
inherited from CPSAttribMakerBase. Template specialization will do the job
Implements NL3D::CPSAttribMakerBase. Definition at line 147 of file ps_attrib_maker.h.
00147 { return "UNKNOWN"; } |
|
tells wether one may choose one attribute from a CPSLocated to use as an input. If false, the input(s) is fixed
Reimplemented in NL3D::CPSAttribMakerT< uint32, CPSValueGradientFunc< uint32 > >, and NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >. Definition at line 239 of file ps_attrib_maker.h.
00239 { return false ; } |
|
Some attribute makers may hold memory. this return true when this is the case. This also mean that you must call newElement, deleteElement, and resize, when it is called for the owning object (which is likely to be a CPSLocatedBindable) Definition at line 282 of file ps_attrib_maker.h. Referenced by NL3D::CPSEmitter::deleteElement(), NL3D::CPSEmitter::newElement(), and NL3D::CPSEmitter::resize().
00282 { return _HasMemory ; } |
|
tells wether clamping is supported for the input (value can't go above MaxInputValue) The default is false Reimplemented in NL3D::CPSAttribMakerT< uint32, CPSValueGradientFunc< uint32 > >, and NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >. Definition at line 258 of file ps_attrib_maker.h.
00258 { return false ; } |
|
inherited from CPSAttribMaker
Implements NL3D::CPSAttribMaker< uint32 >. Definition at line 1406 of file ps_attrib_maker_helper.h.
01414 { 01415 if (!numAttrib) return output; 01416 void *tab = output; 01417 if (!allowNoCopy || srcStep != (1 << 16) || sizeof(T) != stride) 01418 { 01419 // we just copy what we have memorized 01420 if (srcStep == (1 << 16)) 01421 { 01422 typename CPSAttrib<T>::const_iterator it = _T.begin() + startIndex, endIt = _T.begin() + startIndex + numAttrib; 01423 do 01424 { 01425 *(T *) tab = *it; 01426 ++it; 01427 tab = (uint8 *) tab + stride; 01428 } 01429 while (it != endIt); 01430 } 01431 else // no constant step 01432 { 01433 uint32 fpIndex = startIndex * srcStep; 01434 typename CPSAttrib<T>::const_iterator startIt = _T.begin(); 01435 while (numAttrib --) 01436 { 01437 *(T *) tab = *(startIt + (fpIndex >> 16)); 01438 tab = (uint8 *) tab + stride; 01439 fpIndex += srcStep; 01440 } 01441 } 01442 return output; 01443 } 01444 else 01445 { 01446 // the caller will read data directly in the vector ... 01447 return (void *) &(*(_T.begin() + startIndex)); 01448 } 01449 } |
|
inherited from CPSAttribMaker
Implements NL3D::CPSAttribMaker< uint32 >. Definition at line 1452 of file ps_attrib_maker_helper.h.
01459 { 01460 // we just copy what we have memorized 01461 if (srcStep == (1 << 16)) 01462 { 01463 typename CPSAttrib<T>::const_iterator it = _T.begin() + startIndex, endIt = _T.begin() + startIndex + numAttrib; 01464 while (it != endIt) 01465 { 01466 *(T *) tab = *it; 01467 tab = (uint8 *) tab + stride; 01468 *(T *) tab = *it; 01469 tab = (uint8 *) tab + stride; 01470 *(T *) tab = *it; 01471 tab = (uint8 *) tab + stride; 01472 *(T *) tab = *it; 01473 tab = (uint8 *) tab + stride; 01474 ++it; 01475 } 01476 } 01477 else 01478 { 01479 uint32 fpIndex = startIndex * srcStep; 01480 typename CPSAttrib<T>::const_iterator startIt = _T.begin(); 01481 while (numAttrib --) 01482 { 01483 *(T *) tab = *(startIt + (fpIndex >> 16)); 01484 *(T *) ((uint8 *) tab + stride) = *(T *) tab; 01485 tab = (uint8 *) tab + stride; 01486 *(T *) ((uint8 *) tab + stride) = *(T *) tab; 01487 tab = (uint8 *) tab + stride; 01488 *(T *) ((uint8 *) tab + stride) = *(T *) tab; 01489 01490 tab = (uint8 *) tab + stride + stride; 01491 fpIndex += srcStep; 01492 } 01493 } 01494 } |
|
inherited from CPSAttribMaker
Implements NL3D::CPSAttribMaker< uint32 >. Definition at line 1497 of file ps_attrib_maker_helper.h.
01505 { 01506 // we just copy what we have memorized 01507 uint k; 01508 typename CPSAttrib<T>::const_iterator it = _T.begin() + startIndex, endIt = _T.begin() + startIndex + numAttrib; 01509 if (srcStep == (1 << 16)) 01510 { 01511 while (it != endIt) 01512 { 01513 01514 for (k = 0; k < nbReplicate; ++k) 01515 { 01516 *(T *) tab = *it; 01517 tab = (uint8 *) tab + stride; 01518 } 01519 ++it; 01520 } 01521 } 01522 else 01523 { 01524 uint32 fpIndex = startIndex * srcStep; 01525 typename CPSAttrib<T>::const_iterator startIt = _T.begin(); 01526 01527 while (numAttrib --) 01528 { 01529 *(T *) tab = *(startIt + (fpIndex >> 16)); 01530 for (k = 1; k < nbReplicate; ++k) 01531 { 01532 *(T *) ((uint8 *) tab + stride) = *(T *) tab; 01533 tab = (uint8 *) tab + stride; 01534 } 01535 tab = (uint8 *) tab + stride; 01536 fpIndex += srcStep; 01537 } 01538 01539 } 01540 } |
|
inherited from CPSAttribMaker
well a value may be returned without having to know the emitter (random, user param ...) but this case is really useless anyway ... Reimplemented from NL3D::CPSAttribMakerMemoryBase< uint32 >. Definition at line 51 of file ps_attrib_maker_helper.cpp.
00052 { 00053 CPSAttribMakerMemoryBase<uint32>::newElement(emitterLocated, emitterIndex); 00054 if (_T.getSize() > 1) 00055 { 00056 _MinValue = std::min(_MinValue, _T.back()); 00057 _MaxValue = std::max(_MaxValue, _T.back()); 00058 } 00059 else 00060 { 00061 _MinValue = _MaxValue = _T[0]; 00062 } 00063 } |
|
set a new capacity for the memorized attribute, and a number of used element. This usually is 0 , but during edition, this may not be ... so new element are created. this must be called only if this attribute maker has its own memory Reimplemented from NL3D::CPSAttribMaker< uint32 >. Definition at line 1591 of file ps_attrib_maker_helper.h.
01592 { 01593 nlassert(capacity < (1 << 16)); 01594 _T.resize(capacity); 01595 if (nbPresentElements > _T.getSize()) 01596 { 01597 while (_T.getSize() != nbPresentElements) 01598 { 01599 _T.insert(_DefaultValue); 01600 } 01601 } 01602 else if (nbPresentElements < _T.getSize()) 01603 { 01604 while (_T.getSize() != nbPresentElements) 01605 { 01606 _T.remove(_T.getSize() - 1); 01607 } 01608 } 01609 01610 01611 if (_Scheme && _Scheme->hasMemory()) 01612 { 01613 _Scheme->resize(capacity, nbPresentElements); 01614 } 01615 01616 } |
|
serialisation of the object. Derivers MUST call this, (if they use the attribute of this class at least)
Reimplemented from NL3D::CPSAttribMakerMemoryBase< uint32 >. Definition at line 33 of file ps_attrib_maker_helper.cpp.
00034 { 00035 CPSAttribMakerMemoryBase<uint32>::serial(f); 00036 if (f.isReading()) 00037 { 00038 if (_T.getSize() != 0) 00039 { 00040 _MinValue = _MaxValue = _T[0]; 00041 for(uint k = 1; k < _T.getSize(); ++k) 00042 { 00043 _MinValue = std::min(_MinValue, _T[k]); 00044 _MaxValue = std::max(_MaxValue, _T[k]); 00045 } 00046 } 00047 } 00048 } |
|
Enable, disable the clamping of input values. The default does nothing (clamping unsupported)
Reimplemented in NL3D::CPSAttribMakerT< uint32, CPSValueGradientFunc< uint32 > >, and NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >. Definition at line 265 of file ps_attrib_maker.h.
00265 {} ; |
|
set a default value for initialisation, otherwise it will be garbage. This is needed when new element are generated, but not from an emitter for example, when you set this scheme to a LocatedBindable that does have a least one instance in it example : CPSDot *d = new CPSDot; CPSAttribMakerMemory<RGBA> *genAttribMaker = new CPSAttribMakerMemory<RGBA>; genAttribMaker->setScheme(CPSColorBlender(CRGBA::White, CRGBA::Black) Now, if an emitter emit these particle, it'll start to emit white ones, and then black ones d->setColorScheme( genAttribMaker); now, suppose that there were several dot instanciated before the setScheme is performed : d->newElement(); no color has been memorized for this element, so when setScheme is performed, it has to generate one There are no emitter that provides it, so its taken from the default value Note : this should only be useful in an editor, that allow the user to change the scheme with a running system ... Definition at line 1353 of file ps_attrib_maker_helper.h.
01353 { _DefaultValue = defaultValue;} |
|
set a new input type (if supported). The default does nothing
Reimplemented in NL3D::CPSAttribMakerT< uint32, CPSValueGradientFunc< uint32 > >, and NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >. Definition at line 245 of file ps_attrib_maker.h.
00245 {} |
|
Set the number of cycles that must be done during the life of a particle, or the number of cycle per second for a particle that has no life limit. It is used to multiply the input used by this attribute maker It must be >= 0 Definition at line 227 of file ps_attrib_maker.h.
|
|
set the scheme used to store attribute. this MUST be called, otherwise an assertion will be thrown later It must have been allocated by new, and it will be deleted by this object Definition at line 1363 of file ps_attrib_maker_helper.h.
|
|
Definition at line 1624 of file ps_attrib_maker_helper.h. |
|
Definition at line 304 of file ps_attrib_maker.h. |
|
Definition at line 1669 of file ps_attrib_maker_helper.h. |
|
Definition at line 1668 of file ps_attrib_maker_helper.h. |
|
Definition at line 301 of file ps_attrib_maker.h. |
|
this attribute maker tells us how to produce arguments from an emitter. as an example, we may want to have a gradient of color : the emitter emit green then blue particles, following a gradient. the color is produced by _Scheme and _T stores it Definition at line 1630 of file ps_attrib_maker_helper.h. |
|
Definition at line 1621 of file ps_attrib_maker_helper.h. |