#include <ps_shockwave.h>
Inheritance diagram for NL3D::CPSShockWave:
Public Types | |
enum | TBlendingMode { add, modulate, alphaBlend, alphaTest } |
this enum summarize the useful modes for blending to the framebuffer More... | |
Public Member Functions | |
virtual void | basisChanged (TPSMatrixMode systemBasis) |
virtual bool | completeBBox (NLMISC::CAABBox &box) const |
================================================================================= | |
NLMISC::CVector | computeI (void) const |
NLMISC::CVector | computeJ (void) const |
NLMISC::CVector | computeK (void) const |
CPSShockWave (uint nbSeg=9, float radiusCut=0.8f, CSmartPtr< ITexture > tex=NULL) | |
================================================================================= | |
void | disableAutoLOD (bool disable=true) |
Force the Auto-LOD to be disbaled. When set to false, the default behaviour set in the system is used. | |
virtual bool | doesProduceBBox (void) const |
void | enableGlobalColorLighting (bool enabled) |
void | enableZTest (bool enabled) |
=================================================================================== | |
void | enumTexs (std::vector< NLMISC::CSmartPtr< ITexture > > &dest) |
virtual void | enumTexs (std::vector< NLMISC::CSmartPtr< ITexture > > &dest, IDriver &drv) |
================================================================================= | |
void | forceModulateConstantColor (bool force, const NLMISC::CRGBA &col=NLMISC::CRGBA::White) |
=================================================================================== | |
void | forceTexturedMaterialStages (uint numStages) |
=================================================================================== | |
float | getAngle2D (void) const |
get the constant | |
const CPSAttribMaker< float > * | getAngle2DScheme (void) const |
get the angle 2D scheme (NULL if none) const version | |
CPSAttribMaker< float > * | getAngle2DScheme (void) |
get the angle 2D scheme (NULL if none) | |
CPSMaterial::TBlendingMode | getBlendingMode (void) const |
=================================================================================== | |
virtual std::string | getClassName ()=0 |
NLMISC::CRGBA | getColor (void) const |
Get the color. | |
const CPSAttribMaker< CRGBA > * | getColorScheme (void) const |
get the color scheme (NULL if none) const version | |
CPSAttribMaker< CRGBA > * | getColorScheme (void) |
get the color scheme (NULL if none) | |
IDriver * | getDriver () const |
shortcut to get an instance of the driver | |
uint32 | getExternID (void) const |
get the extern ID of this located bindable | |
const CFontGenerator * | getFontGenerator (void) const |
Shortcut to get the font generator if one was set (const version). | |
CFontGenerator * | getFontGenerator (void) |
Shortcut to get the font generator if one was set. | |
const CFontManager * | getFontManager (void) const |
Shortcut to get the font manager if one was set (const version). | |
CFontManager * | getFontManager (void) |
*************************************************************************************** | |
const NLMISC::CMatrix & | getInvertedSysMat (void) const |
shortcut to get the inverted matrix of the system | |
const NLMISC::CMatrix & | getInvertedViewMat (void) const |
shortcut to get the inverted view matrix | |
const NLMISC::CMatrix & | getLocalToWorldMatrix () const |
Shortcut to get the local to world matrix. | |
TPSLod | getLOD (void) const |
get the valid lods for that object | |
virtual uint32 | getMaxNumFaces (void) const |
================================================================================= | |
std::string | getName (void) const |
get the located bindable name (edition purpose) | |
uint | getNbSegs (void) const |
retrieve the number of segs | |
const CPSLocated * | getOwner (void) const |
get the located that owns this bindable (const version) | |
CPSLocated * | getOwner (void) |
get the located that owns this bindable | |
CPlaneBasis | getPlaneBasis (void) const |
get the constant basis | |
const CPSAttribMaker< CPlaneBasis > * | getPlaneBasisScheme (void) const |
get the plane basis scheme, (NULL if none) const version | |
CPSAttribMaker< CPlaneBasis > * | getPlaneBasisScheme (void) |
get the plane basis scheme, (NULL if none) | |
virtual uint32 | getPriority (void) const |
return priority | |
float | getRadiusCut (void) const |
get the radius ratio | |
float | getSize (void) const |
get the constant size | |
const CPSAttribMaker< float > * | getSizeScheme (void) const |
get the size scheme (NULL if none) const version | |
CPSAttribMaker< float > * | getSizeScheme (void) |
get the size scheme (NULL if none) | |
const NLMISC::CMatrix & | getSysMat (void) const |
*************************************************************************************** | |
const ITexture * | getTexture (void) const |
ITexture * | getTexture (void) |
get the constant texture | |
const CTextureGrouped * | getTextureGroup (void) const |
get the texture group used if there's a texture scheme, const version. (if null, there's no texture animation) | |
CTextureGrouped * | getTextureGroup (void) |
get the texture group used. it discard any previous single texture. (if null, there's no texture animation) | |
sint32 | getTextureIndex (void) const |
get the animated texture index. MeaningFul only if a texture group was set | |
const CPSAttribMaker< sint32 > * | getTextureIndexScheme (void) const |
get the texture scheme (null if none) const version | |
CPSAttribMaker< sint32 > * | getTextureIndexScheme (void) |
get the texture scheme (null if none) | |
uint32 | getType (void) const |
return this bindable type | |
float | getUFactor (void) const |
get the U factor for textures | |
virtual bool | getUserMatrixUsageCount () const |
const NLMISC::CMatrix & | getViewMat (void) const |
shortcut to get the view matrix | |
virtual bool | hasEmitters (void) const |
tells wether there are alive emitters | |
virtual bool | hasLightableFaces () |
from CPSParticle : return true if there are lightable faces in the object | |
virtual bool | hasOpaqueFaces (void) |
================================================================================= | |
virtual bool | hasParticles (void) const |
return true if this located bindable derived class holds alive particles | |
virtual bool | hasTransparentFaces (void) |
================================================================================= | |
bool | isActive () const |
bool | isAutoLODDisabled () const |
Test wether Auto-LOD is disabled. | |
bool | isZTestEnabled () const |
=================================================================================== | |
virtual void | motionTypeChanged (bool parametric) |
called when a located has switch between incrmental / parametric motion. The default does nothing | |
NLMISC_DECLARE_CLASS (CPSShockWave) | |
virtual void | notifyTargetRemoved (CPSLocated *ptr) |
*************************************************************************************** | |
virtual void | releaseAllRef () |
*************************************************************************************** | |
virtual void | releaseRefTo (const CParticleSystemProcess *other) |
virtual void | serial (NLMISC::IStream &f) throw (NLMISC::EStream) |
================================================================================= | |
void | serialAngle2DScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
=================================================================================== | |
void | serialColorScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
serialization. | |
void | serialMaterial (NLMISC::IStream &f) throw (NLMISC::EStream) |
=================================================================================== | |
void | serialPlaneBasisScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
=================================================================================== | |
void | serialSizeScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
serialization. We choose a different name because of multiple-inheritance | |
void | serialTextureScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
=================================================================================== | |
void | setActive (bool active) |
Activate / Deactivate this object. When not active, the owning system won't try to call the 'step' method. | |
void | setAngle2D (float angle) |
=================================================================================== | |
void | setAngle2DScheme (CPSAttribMaker< float > *scheme) |
=================================================================================== | |
void | setBlendingMode (CPSMaterial::TBlendingMode mode) |
=================================================================================== | |
void | setColor (NLMISC::CRGBA col) |
Set a constant color for the particles. remove any previous scheme. | |
void | setColorScheme (CPSAttribMaker< CRGBA > *col) |
void | setExternID (uint32 id) |
*************************************************************************************** | |
void | setLOD (TPSLod lod) |
void | setName (const std::string &name) |
set the located bindable name (edition purpose) | |
void | setNbSegs (uint nbSeg) |
================================================================================= | |
void | setPlaneBasis (const CPlaneBasis &basis) |
=================================================================================== | |
void | setPlaneBasisScheme (CPSAttribMaker< CPlaneBasis > *basisMaker) |
=================================================================================== | |
void | setRadiusCut (float aRatio) |
================================================================================= | |
void | setSize (float size) |
Set a constant size for the particles. | |
void | setSizeScheme (CPSAttribMaker< float > *size) |
void | setTexture (CSmartPtr< ITexture > tex) |
=================================================================================== | |
void | setTextureGroup (NLMISC::CSmartPtr< CTextureGrouped > texGroup) |
=================================================================================== | |
void | setTextureIndex (sint32 index) |
=================================================================================== | |
void | setTextureIndexScheme (CPSAttribMaker< sint32 > *animOrder) |
=================================================================================== | |
void | setUFactor (float value) |
================================================================================= | |
void | setupDriverModelMatrix (void) |
shortcut to setup the model matrix (system basis or world basis) | |
virtual void | setZBias (float value) |
virtual void | showTool () |
draw the particles for edition mode. The default behaviour just draw a wireframe model | |
virtual void | step (TPSProcessPass pass, TAnimationTime ellapsedTime, TAnimationTime realEt) |
virtual bool | supportGlobalColorLighting () const |
virtual void | systemDateChanged () |
bool | usesGlobalColorLighting () |
Static Public Member Functions | |
const float * | getRotTable (void) |
void | initRotTable (void) |
=================================================================================== | |
Protected Member Functions | |
virtual void | bounceOccured (uint32 index) |
void | computeSrcStep (uint32 &step, uint &numToProcess) |
void | deleteAngle2DElement (uint32 index) |
void | deleteColorElement (uint32 index) |
virtual void | deleteElement (uint32 index) |
================================================================================= | |
void | deletePlaneBasisElement (uint32 index) |
void | deleteSizeElement (uint32 index) |
void | deleteTextureIndexElement (uint32 index) |
void | displayIcon2d (const NLMISC::CVector tab[], uint nbSegs, float scale) |
*************************************************************************************** | |
virtual CPSLocated * | getAngle2DOwner (void) |
deriver must return their owner there | |
virtual CPSLocated * | getColorOwner (void) |
deriver must return their owner there | |
virtual CPSLocated * | getPlaneBasisOwner (void) |
if this is false, constant size will be used instead of a scheme deriver must return their owner there | |
virtual CPSLocated * | getSizeOwner (void) |
deriver must return their owner there | |
virtual CPSLocated * | getTextureIndexOwner (void) |
deriver must return their owner there | |
void | newAngle2DElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
void | newColorElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
virtual void | newElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
================================================================================= | |
void | newPlaneBasisElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
void | newSizeElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
void | newTextureIndexElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
void | notifyOwnerMaxNumFacesChanged (void) const |
virtual void | resize (uint32 size) |
================================================================================= | |
void | resizeAngle2D (uint32 size) |
void | resizeColor (uint32 size) |
void | resizePlaneBasis (uint32 size) |
void | resizeSize (uint32 size) |
void | resizeTextureIndex (uint32 size) |
virtual void | setOwner (CPSLocated *psl) |
*************************************************************************************** | |
virtual void | updateMatAndVbForColor (void) |
================================================================================= | |
virtual void | updateMatAndVbForTexture (void) |
================================================================================= | |
void | updateVbColNUVForRender (uint32 startIndex, uint32 size, uint32 srcStep, CVertexBuffer &vb) |
================================================================================= | |
Protected Attributes | |
bool | _Active |
float | _Angle2D |
CPSAttribMaker< float > * | _Angle2DScheme |
CRGBA | _Color |
CPSAttribMaker< CRGBA > * | _ColorScheme |
uint32 | _ExternID |
TPSLod | _LOD |
tells when this object must be dealt with | |
CMaterial | _Mat |
std::string | _Name |
CPSLocated * | _Owner |
float | _ParticleSize |
CPlaneBasis | _PlaneBasis |
CPSAttribMaker< CPlaneBasis > * | _PlaneBasisScheme |
CPSAttribMaker< float > * | _SizeScheme |
CSmartPtr< ITexture > | _Tex |
CSmartPtr< CTextureGrouped > | _TexGroup |
sint32 | _TextureIndex |
CPSAttribMaker< sint32 > * | _TextureIndexScheme |
Static Protected Attributes | |
bool | _InitializedRotTab = false |
it is true if the table has been initialized, for debug purposes | |
float | _RotTable [4 *256] |
Private Types | |
typedef std::hash_map< uint, CPrimitiveBlock > | TPBMap |
typedef std::hash_map< uint, CVertexBuffer > | TVBMap |
Private Member Functions | |
virtual void | draw (bool opaque) |
================================================================================= | |
uint | getNumShockWavesInVB () const |
================================================================================= | |
void | getVBnPB (CVertexBuffer *&vb, CPrimitiveBlock *&pb) |
================================================================================= | |
virtual void | init (void) |
================================================================================= | |
void | setupUFactor () |
================================================================================= | |
Private Attributes | |
uint32 | _NbSeg |
float | _RadiusCut |
float | _UFactor |
Static Private Attributes | |
TVBMap | _AnimTexVBMap |
TVBMap | _ColoredAnimTexVBMap |
TVBMap | _ColoredVBMap |
TPBMap | _PBMap |
TVBMap | _VBMap |
Friends | |
class | CPSLocated |
class | CPSShockWaveHelper |
|
Definition at line 137 of file ps_shockwave.h. |
|
Definition at line 136 of file ps_shockwave.h. |
|
this enum summarize the useful modes for blending to the framebuffer
Definition at line 809 of file ps_particle_basic.h.
00809 { add, modulate, alphaBlend, alphaTest }; |
|
================================================================================= ctor
Definition at line 186 of file ps_shockwave.cpp. References init(), nlassert, NL3D::CPSTexturedParticle::setTexture(), and uint.
00187 : _NbSeg(nbSeg) 00188 , _RadiusCut(radiusCut) 00189 , _UFactor(1.f) 00190 00191 { 00192 nlassert(nbSeg > 2 && nbSeg <= 64); 00193 setTexture(tex); 00194 init(); 00195 if (CParticleSystem::getSerializeIdentifierFlag()) _Name = std::string("ShockWave"); 00196 } |
|
Called when the basis of the owner changed. the default behaviour does nothing
Reimplemented in NL3D::CPSForce. Definition at line 968 of file ps_located.h.
00968 {} |
|
a bounce occured, so some action could be done. The default behaviour does nothing
Reimplemented in NL3D::CPSEmitter. Definition at line 1011 of file ps_located.h.
01011 {} |
|
=================================================================================
Reimplemented from NL3D::CPSLocatedBindable. Definition at line 364 of file ps_shockwave.cpp.
00365 { 00366 // TODO : implement this 00367 return false; 00368 } |
|
Compute a vector that will map to (1 0 0) after view and model transform. This allow to have object that always faces the user, whatever basis they are in Definition at line 931 of file ps_located.h. References NL3D::CPSLocated::computeI(). Referenced by NL3D::CPSLocatedBindable::displayIcon2d(), NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSFaceLookAtHelper::drawLookAt(), NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(), NL3D::CPSGravity::show(), and NL3D::CPSEmitter::showTool().
00931 { return _Owner->computeI(); } |
|
Compute a vector that will map to (0 1 0) after view and model transform. This allow to have object that always faces the user, whatever basis they are in Definition at line 936 of file ps_located.h. References NL3D::CPSLocated::computeJ(). Referenced by NL3D::CPSFaceLookAtHelper::drawLookAt().
00936 { return _Owner->computeJ(); } |
|
Compute a vector that will map to (0 0 1) after view and model transform. This allow to have object that always faces the user, whatever basis they are in Definition at line 940 of file ps_located.h. References NL3D::CPSLocated::computeK(). Referenced by NL3D::CPSLocatedBindable::displayIcon2d(), NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSFaceLookAtHelper::drawLookAt(), NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(), and NL3D::CPSEmitter::showTool().
00940 { return _Owner->computeK(); } |
|
System may have hand-tuned LOD, or auto LOD. This compute the number of particles that must really be displayed, and the src step that allow to go through the whole collection. The step in the source is in a fixed point 16:16 format Definition at line 82 of file ps_particle_basic.cpp. References NL3D::CPSParticle::_DisableAutoLOD, NLMISC::clamp(), NL3D::CParticleSystem::getAutoLODDegradationExponent(), NL3D::CParticleSystem::getAutoLODMode(), NL3D::CParticleSystem::getAutoLODStartDistPercent(), NL3D::CParticleSystem::getOneMinusCurrentLODRatio(), NL3D::CParticleSystemProcess::getOwner(), NL3D::CPSLocated::getSize(), NL3D::CParticleSystem::isAutoLODEnabled(), NL3D::CParticleSystem::isSharingEnabled(), nlassert, r, uint, and uint32. Referenced by draw(), NL3D::CPSConstraintMesh::draw(), NL3D::CPSFanLight::draw(), NL3D::CPSFaceLookAt::draw(), NL3D::CPSDot::draw(), NL3D::CPSTailDot::step(), NL3D::CPSRibbonLookAt::step(), NL3D::CPSRibbon::step(), and NL3D::CPSFace::step().
00083 { 00084 nlassert(_Owner && _Owner->getOwner()); 00085 const CParticleSystem &ps = *(_Owner->getOwner()); 00086 if (_DisableAutoLOD || !ps.isAutoLODEnabled() || !ps.isSharingEnabled() || _Owner->getSize() == 0) // Should Auto-LOD be used ? 00087 { 00088 step = (1 << 16); 00089 numToProcess = _Owner->getSize(); 00090 } 00091 else 00092 { 00093 float oneMinusLODRatio = ps.getOneMinusCurrentLODRatio(); 00094 float LODRatio = 1.f - oneMinusLODRatio; 00095 if (LODRatio > ps.getAutoLODStartDistPercent()) 00096 { 00097 float factor = (LODRatio - 1.f) / (ps.getAutoLODStartDistPercent() - 1.f); 00098 NLMISC::clamp(factor, 0.f, 1.f); 00099 float r = factor; 00100 for (uint k = 1; k < ps.getAutoLODDegradationExponent(); ++k) 00101 { 00102 r *= factor; 00103 } 00104 numToProcess = (uint) (_Owner->getSize() * r); 00105 if (numToProcess < 1) { numToProcess = 1; } 00106 00107 step = ps.getAutoLODMode() ? // skip or limit number, depending on the mode 00108 (_Owner->getSize() << 16) / numToProcess : // skip particles 00109 (1 << 16); // just display less particles 00110 } 00111 else 00112 { 00113 step = (1 << 16); 00114 numToProcess = _Owner->getSize(); 00115 } 00116 } 00117 00118 } |
|
Definition at line 380 of file ps_particle_basic.h. References NL3D::CPSRotated2DParticle::_Angle2DScheme, NL3D::CPSAttribMaker< float >::deleteElement(), NL3D::CPSAttribMaker< float >::hasMemory(), index, and uint32. Referenced by deleteElement(), NL3D::CPSMesh::deleteElement(), NL3D::CPSFanLight::deleteElement(), and NL3D::CPSFaceLookAt::deleteElement().
00381 { 00382 if (_Angle2DScheme && _Angle2DScheme->hasMemory()) _Angle2DScheme->deleteElement(index); 00383 } |
|
Definition at line 237 of file ps_particle_basic.h. References NL3D::CPSAttribMaker< CRGBA >::deleteElement(), NL3D::CPSAttribMaker< CRGBA >::hasMemory(), index, and uint32. Referenced by NL3D::CPSTailDot::deleteElement(), deleteElement(), NL3D::CPSRibbonLookAt::deleteElement(), NL3D::CPSRibbon::deleteElement(), NL3D::CPSQuad::deleteElement(), NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSFanLight::deleteElement(), and NL3D::CPSDot::deleteElement().
00238 { 00239 if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->deleteElement(index); 00240 } |
|
================================================================================= Delete an element given its index Attributes of the located that hold this bindable are still accessible for the index given index out of range -> nl_assert Implements NL3D::CPSParticle. Definition at line 460 of file ps_shockwave.cpp. References NL3D::CPSRotated2DParticle::deleteAngle2DElement(), NL3D::CPSColoredParticle::deleteColorElement(), NL3D::CPSSizedParticle::deleteSizeElement(), NL3D::CPSTexturedParticle::deleteTextureIndexElement(), index, and uint32.
00461 { 00462 deleteColorElement(index); 00463 deleteTextureIndexElement(index); 00464 deleteSizeElement(index); 00465 deleteAngle2DElement(index); 00466 } |
|
Definition at line 703 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme, NL3D::CPSAttribMaker< CPlaneBasis >::deleteElement(), NL3D::CPSAttribMaker< CPlaneBasis >::hasMemory(), index, and uint32. Referenced by NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSMesh::deleteElement(), and NL3D::CPSFace::deleteElement().
00704 { 00705 if (_PlaneBasisScheme && _PlaneBasisScheme->hasMemory()) _PlaneBasisScheme->deleteElement(index); 00706 } |
|
Definition at line 295 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSAttribMaker< float >::deleteElement(), NL3D::CPSAttribMaker< float >::hasMemory(), index, and uint32. Referenced by deleteElement(), NL3D::CPSRibbonLookAt::deleteElement(), NL3D::CPSRibbon::deleteElement(), NL3D::CPSQuad::deleteElement(), NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSMesh::deleteElement(), and NL3D::CPSFanLight::deleteElement().
00296 { 00297 if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->deleteElement(index); 00298 } |
|
Definition at line 489 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSAttribMaker< sint32 >::deleteElement(), NL3D::CPSAttribMaker< sint32 >::hasMemory(), index, and uint32. Referenced by deleteElement(), and NL3D::CPSQuad::deleteElement().
00490 { 00491 if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->deleteElement(index); 00492 } |
|
Force the Auto-LOD to be disbaled. When set to false, the default behaviour set in the system is used.
Definition at line 137 of file ps_particle_basic.h. References NL3D::CPSParticle::_DisableAutoLOD.
00137 { _DisableAutoLOD = disable; } |
|
*************************************************************************************** show an drawing to represent the object, and in red if it is selected
Definition at line 2038 of file ps_located.cpp. References NL3D::CPSLocatedBindable::computeI(), NL3D::CPSLocatedBindable::computeK(), NL3D::CParticleSystem::getCurrentEditedElement(), NL3D::CPSLocatedBindable::getDriver(), NL3D::CParticleSystemProcess::getOwner(), NL3D::CPSLocated::getPos(), NL3D::CPSLocated::getSize(), index, NL3D::CMaterial::setBlend(), NL3D::CMaterial::setBlendFunc(), NL3D::CMaterial::setColor(), NL3D::CMaterial::setLighting(), NL3D::CPSLocatedBindable::setupDriverModelMatrix(), NL3D::CMaterial::setZFunc(), NL3D::CMaterial::setZWrite(), size, uint, uint32, NLMISC::CLine::V0, NLMISC::CLine::V1, NLMISC::CVector::x, and NLMISC::CVector::y. Referenced by NL3D::CPSSpring::show(), NL3D::CPSCentralGravity::show(), and NL3D::CPSParticle::showTool().
02039 { 02040 uint32 size = _Owner->getSize(); 02041 if (!size) return; 02042 setupDriverModelMatrix(); 02043 02044 const CVector I = computeI(); 02045 const CVector K = computeK(); 02046 02047 static std::vector<NLMISC::CLine> lines; 02048 02049 lines.clear(); 02050 02051 // ugly slow code, but not for runtime 02052 for (uint k = 0; k < size; ++k) 02053 { 02054 // center of the current particle 02055 const CVector p = _Owner->getPos()[k]; 02056 02057 02058 02059 for (uint l = 0; l < nbSegs; ++l) 02060 { 02061 NLMISC::CLine li; 02062 li.V0 = p + scale * (tab[l << 1].x * I + tab[l << 1].y * K); 02063 li.V1 = p + scale * (tab[(l << 1) + 1].x * I + tab[(l << 1) + 1].y * K); 02064 lines.push_back(li); 02065 } 02066 02067 CMaterial mat; 02068 02069 mat.setBlendFunc(CMaterial::one, CMaterial::one); 02070 mat.setZWrite(false); 02071 mat.setLighting(false); 02072 mat.setBlend(true); 02073 mat.setZFunc(CMaterial::less); 02074 02075 02076 02077 CPSLocated *loc; 02078 uint32 index; 02079 CPSLocatedBindable *lb; 02080 _Owner->getOwner()->getCurrentEditedElement(loc, index, lb); 02081 02082 mat.setColor((lb == NULL || this == lb) && loc == _Owner && index == k ? CRGBA::Red : CRGBA(127, 127, 127)); 02083 02084 02085 CDRU::drawLinesUnlit(lines, mat, *getDriver() ); 02086 } 02087 02088 } |
|
Reimplemented in NL3D::CPSForce. Definition at line 888 of file ps_located.h.
00888 { return true; } |
|
================================================================================= update the material if the global color of the system is variable update the material if the global color of the system is variable Reimplemented from NL3D::CPSParticle. Definition at line 286 of file ps_shockwave.cpp. References NL3D::CPSAttrib< T >::begin(), NL3D::CPSParticle::computeSrcStep(), NL3D::CPSMaterial::forceModulateConstantColor(), NL3D::CParticleSystem::getColorAttenuationScheme(), NL3D::CParticleSystem::getForceGlobalColorLightingFlag(), NL3D::CParticleSystem::getGlobalColor(), NL3D::CParticleSystem::getGlobalColorLighted(), NL3D::CParticleSystemProcess::getOwner(), NL3D::CPSLocated::getPos(), NL3D::CPSLocated::getSize(), NL3D::CParticleSystem::isUserColorUsed(), NLMISC::CRGBA::modulateFromColor(), PARTICLES_CHECK_MEM, NL3D::CMaterial::setColor(), setupUFactor(), NL3D::TIteratorVectStep1616, uint, uint32, and NL3D::CPSParticle::usesGlobalColorLighting().
00287 { 00288 PARTICLES_CHECK_MEM; 00289 if (!_Owner->getSize()) return; 00290 00291 uint32 step; 00292 uint numToProcess; 00293 computeSrcStep(step, numToProcess); 00294 if (!numToProcess) return; 00295 00296 00297 00299 CParticleSystem &ps = *(_Owner->getOwner()); 00301 if (_ColorScheme != NULL && 00302 (ps.getColorAttenuationScheme() != NULL || 00303 ps.isUserColorUsed() || 00304 ps.getForceGlobalColorLightingFlag() || 00305 usesGlobalColorLighting() 00306 ) 00307 ) 00308 { 00309 if (ps.getForceGlobalColorLightingFlag() || usesGlobalColorLighting()) 00310 { 00311 CPSMaterial::forceModulateConstantColor(true, ps.getGlobalColorLighted()); 00312 } 00313 else 00314 { 00315 CPSMaterial::forceModulateConstantColor(true, ps.getGlobalColor()); 00316 } 00317 } 00318 else 00319 { 00320 forceModulateConstantColor(false); 00321 if (ps.getForceGlobalColorLightingFlag() || usesGlobalColorLighting()) 00322 { 00323 NLMISC::CRGBA col; 00324 col.modulateFromColor(ps.getGlobalColorLighted(), _Color); 00325 _Mat.setColor(col); 00326 } 00327 else 00328 if (!ps.getColorAttenuationScheme() || ps.isUserColorUsed()) 00329 { 00330 _Mat.setColor(_Color); 00331 } 00332 else 00333 { 00334 NLMISC::CRGBA col; 00335 col.modulateFromColor(ps.getGlobalColor(), _Color); 00336 _Mat.setColor(col); 00337 } 00338 } 00340 00341 setupUFactor(); 00342 00343 if (step == (1 << 16)) 00344 { 00345 CPSShockWaveHelper::drawShockWave(_Owner->getPos().begin(), 00346 *this, 00347 numToProcess, 00348 step 00349 ); 00350 } 00351 else 00352 { 00353 CPSShockWaveHelper::drawShockWave(TIteratorVectStep1616(_Owner->getPos().begin(), 0, step), 00354 *this, 00355 numToProcess, 00356 step 00357 ); 00358 } 00359 00360 PARTICLES_CHECK_MEM; 00361 } |
|
Definition at line 105 of file ps_particle_basic.h. References NL3D::CPSParticle::_UsesGlobalColorLighting.
00105 { _UsesGlobalColorLighting = enabled; } |
|
===================================================================================
Definition at line 508 of file ps_particle_basic.cpp. References NL3D::CMaterial::setZFunc().
00509 { 00510 _Mat.setZFunc(enabled ? CMaterial::less : CMaterial::always); 00511 } |
|
Definition at line 955 of file ps_particle_basic.cpp. References NL3D::CPSTexturedParticle::getTextureGroup().
00956 { 00957 if (_Tex) 00958 { 00959 dest.push_back(_Tex); 00960 } 00961 if (getTextureGroup()) 00962 { 00963 dest.push_back(getTextureGroup()); 00964 } 00965 } |
|
=================================================================================
Reimplemented from NL3D::CPSLocatedBindable. Definition at line 531 of file ps_shockwave.cpp.
00532 { 00533 CPSTexturedParticle::enumTexs(dest); 00534 } |
|
*************************************************************************************** this should be called before to delete any bindable inserted in a system, but this is done by the system, so you should never need calling it. This has been introduced because calls in dtor are not polymorphic to derived class (which are already destroyed anyway), and some infos are needed in some dtor. The default behaviour does nothing Reimplemented in NL3D::CPSTargetLocatedBindable. Definition at line 1975 of file ps_located.cpp. References NL3D::CParticleSystemProcess::getOwner(), NL3D::CPSLocatedBindable::getUserMatrixUsageCount(), and NL3D::CParticleSystem::releaseRefForUserSysCoordInfo().
01976 { 01977 if (_Owner && _Owner->getOwner()) 01978 { 01979 _Owner->getOwner()->releaseRefForUserSysCoordInfo(getUserMatrixUsageCount()); 01980 } 01981 } |
|
=================================================================================== Force the material to have one texture that is modulated by diffuse, and a constant color and its diffuse color. This is not compatible with multitextureing, however.
Definition at line 573 of file ps_particle_basic.cpp. References NL3D::CPSMaterial::forceTexturedMaterialStages(), NL3D::CMaterial::getTexture(), NL3D::CMaterial::setTexture(), NL3D::CMaterial::texConstantColor(), NL3D::CMaterial::texEnvArg0Alpha(), NL3D::CMaterial::texEnvArg0RGB(), NL3D::CMaterial::texEnvArg1Alpha(), NL3D::CMaterial::texEnvArg1RGB(), NL3D::CMaterial::texEnvOpAlpha(), and NL3D::CMaterial::texEnvOpRGB(). Referenced by NL3D::CPSRibbonLookAt::displayRibbons(), draw(), and NL3D::CPSQuad::updateMatBeforeRendering().
00574 { 00575 if (force) 00576 { 00578 _Mat.texConstantColor(1, col); 00579 _Mat.texEnvOpRGB(1, CMaterial::Modulate); 00580 _Mat.texEnvOpAlpha(1, CMaterial::Modulate); 00581 _Mat.texEnvArg0RGB(1, CMaterial::Previous, CMaterial::SrcColor); 00582 _Mat.texEnvArg1RGB(1, CMaterial::Constant, CMaterial::SrcColor); 00583 _Mat.texEnvArg0Alpha(1, CMaterial::Previous, CMaterial::SrcAlpha); 00584 _Mat.texEnvArg1Alpha(1, CMaterial::Constant, CMaterial::SrcAlpha); 00585 forceTexturedMaterialStages(2); 00586 } 00587 else 00588 { 00589 if (_Mat.getTexture(1) != NULL) 00590 { 00591 _Mat.setTexture(1, NULL); 00592 } 00593 } 00594 } |
|
=================================================================================== This setup n stage of a material with at least texture.
Definition at line 598 of file ps_particle_basic.cpp. References NL3D::CMaterial::getTexture(), NL3D::IDRV_MAT_MAXTEXTURES, NL3D::CMaterial::setTexture(), and uint. Referenced by NL3D::CPSDot::draw(), NL3D::CPSMaterial::forceModulateConstantColor(), and NL3D::CPSFanLight::setupMaterial().
00599 { 00600 ITexture *blankTex = NULL; 00601 uint k; 00602 for (k = 0; k < numStages; ++k) 00603 { 00604 if (_Mat.getTexture(k) == NULL) 00605 { 00606 if (!blankTex) 00607 { 00608 blankTex = CTextureMem::Create1x1WhiteTex(); 00609 } 00610 _Mat.setTexture(k, blankTex); 00611 } 00612 } 00613 for (; k < IDRV_MAT_MAXTEXTURES; ++k) 00614 { 00615 if (_Mat.getTexture(k) != NULL) 00616 { 00617 _Mat.setTexture(k, NULL); 00618 } 00619 } 00620 } |
|
get the constant
Definition at line 336 of file ps_particle_basic.h. References NL3D::CPSRotated2DParticle::_Angle2D.
00336 { return _Angle2D; } |
|
deriver must return their owner there
Implements NL3D::CPSRotated2DParticle. Definition at line 131 of file ps_shockwave.h.
00131 { return _Owner; } |
|
get the angle 2D scheme (NULL if none) const version
Definition at line 326 of file ps_particle_basic.h. References NL3D::CPSRotated2DParticle::_Angle2DScheme.
00326 { return _Angle2DScheme; } |
|
get the angle 2D scheme (NULL if none)
Definition at line 323 of file ps_particle_basic.h. References NL3D::CPSRotated2DParticle::_Angle2DScheme.
00323 { return _Angle2DScheme; } |
|
===================================================================================
Definition at line 551 of file ps_particle_basic.cpp. References NL3D::CPSMaterial::alphaBlend, NL3D::CPSMaterial::alphaTest, NL3D::CMaterial::getBlend(), NL3D::CMaterial::getDstBlend(), NL3D::CMaterial::getSrcBlend(), and nlassert. Referenced by NL3D::CPSTailDot::hasTransparentFaces(), hasTransparentFaces(), NL3D::CPSRibbonLookAt::hasTransparentFaces(), NL3D::CPSRibbon::hasTransparentFaces(), NL3D::CPSQuad::hasTransparentFaces(), NL3D::CPSFanLight::hasTransparentFaces(), and NL3D::CPSDot::hasTransparentFaces().
00552 { 00553 if (_Mat.getBlend()) 00554 { 00555 CMaterial::TBlend srcBlend = _Mat.getSrcBlend(); 00556 CMaterial::TBlend destBlend = _Mat.getDstBlend(); 00557 00558 if (srcBlend == CMaterial::one && destBlend == CMaterial::one) return add; 00559 if (srcBlend == CMaterial::zero && destBlend == CMaterial::srccolor) return modulate; 00560 if (srcBlend == CMaterial::srcalpha && destBlend == CMaterial::invsrcalpha) return alphaBlend; 00561 00562 // unrecognized mode 00563 nlassert(0); 00564 return alphaTest; // to avoid a warning only ... 00565 } 00566 else 00567 { 00568 return alphaTest; 00569 } 00570 } |
|
Implemented in NLAIAGENT::CNumericIndex, NLAIC::IPointerGestion, NLAIC::CIdentType, and CAutomataDesc. Referenced by NLMISC::CClassRegistry::checkObject(), and NL3D::GetTextureSize(). |
|
Get the color.
Definition at line 211 of file ps_particle_basic.h.
00211 { return _Color; } |
|
deriver must return their owner there
Implements NL3D::CPSColoredParticle. Definition at line 129 of file ps_shockwave.h.
00129 { return _Owner; } |
|
get the color scheme (NULL if none) const version
Definition at line 205 of file ps_particle_basic.h.
00205 { return _ColorScheme; } |
|
get the color scheme (NULL if none)
Definition at line 202 of file ps_particle_basic.h.
00202 { return _ColorScheme; } |
|
|
get the extern ID of this located bindable
Definition at line 964 of file ps_located.h. References NL3D::CPSLocatedBindable::_ExternID, and uint32. Referenced by NL3D::CPSLocated::bind(), and NL3D::CParticleSystem::unregisterLocatedBindableExternID().
00964 { return _ExternID; } |
|
Shortcut to get the font generator if one was set (const version).
Definition at line 904 of file ps_located.h. References NL3D::CParticleSystemProcess::getFontGenerator(), and nlassert.
|
|
Shortcut to get the font generator if one was set.
Definition at line 897 of file ps_located.h. References NL3D::CParticleSystemProcess::getFontGenerator(), and nlassert. Referenced by NL3D::CPSZoneRectangle::show(), NL3D::CPSZoneCylinder::show(), NL3D::CPSZoneDisc::show(), NL3D::CPSZonePlane::show(), NL3D::CPSCylindricVortex::show(), NL3D::CPSGravity::show(), and NL3D::CPSEmitterRectangle::showTool().
|
|
Shortcut to get the font manager if one was set (const version).
Definition at line 2099 of file ps_located.cpp. References NL3D::CParticleSystemProcess::getFontManager(), and nlassert.
|
|
***************************************************************************************
Definition at line 2091 of file ps_located.cpp. References NL3D::CParticleSystemProcess::getFontManager(), and nlassert. Referenced by NL3D::CPSZoneRectangle::show(), NL3D::CPSZoneCylinder::show(), NL3D::CPSZoneDisc::show(), NL3D::CPSZonePlane::show(), NL3D::CPSCylindricVortex::show(), NL3D::CPSGravity::show(), and NL3D::CPSEmitterRectangle::showTool().
|
|
shortcut to get the inverted matrix of the system
Definition at line 2116 of file ps_located.cpp. References NL3D::CParticleSystem::getInvertedSysMat(), NL3D::CParticleSystemProcess::getOwner(), and nlassert.
|
|
shortcut to get the inverted view matrix
Definition at line 2134 of file ps_located.cpp. References NL3D::CParticleSystem::getInvertedViewMat(), NL3D::CParticleSystemProcess::getOwner(), and nlassert.
|
|
Shortcut to get the local to world matrix.
Definition at line 1144 of file ps_located.h. References NL3D::CPSLocated::getLocalToWorldMatrix(), and nlassert. Referenced by NL3D::CPSRibbonLookAt::displayRibbons(), NL3D::CPSSound::newElement(), NL3D::CPSZoneRectangle::show(), NL3D::CPSZoneCylinder::show(), NL3D::CPSZoneDisc::show(), NL3D::CPSZonePlane::show(), NL3D::CPSLight::show(), NL3D::CPSGravity::show(), NL3D::CPSEmitterRectangle::showTool(), NL3D::CPSLight::step(), and NL3D::CPSMesh::updatePos().
|
|
get the valid lods for that object
Definition at line 954 of file ps_located.h. References NL3D::CPSLocatedBindable::_LOD, and NL3D::TPSLod.
00954 { return _LOD; } |
|
=================================================================================
Implements NL3D::CPSParticle. Definition at line 199 of file ps_shockwave.cpp. References _NbSeg, NL3D::CPSLocated::getMaxSize(), nlassert, and uint32.
|
|
get the located bindable name (edition purpose)
Definition at line 948 of file ps_located.h.
00948 { return _Name; } |
|
retrieve the number of segs
Definition at line 56 of file ps_shockwave.h.
00056 { return _NbSeg; } |
|
=================================================================================
Definition at line 524 of file ps_shockwave.cpp. References _NbSeg, NL3D::NumVertsInBuffer, and uint. Referenced by getVBnPB().
00525 { 00526 const uint numRib = NumVertsInBuffer / ((_NbSeg + 1) << 1); 00527 return std::max(1u, numRib); 00528 } |
|
get the located that owns this bindable (const version)
Definition at line 944 of file ps_located.h.
00944 { return _Owner; } |
|
get the located that owns this bindable
Definition at line 942 of file ps_located.h. Referenced by NL3D::CPSLocated::deleteElement(), NL3D::CParticleSystemInstanceUser::emit(), NL3D::CPSFaceLookAt::CSecondSize::getSizeOwner(), NL3D::CPSSound::newElement(), NL3D::CPSLocated::registerIntegrableForce(), NL3D::CParticleSystem::registerLocatedBindableExternID(), NL3D::CParticleSystemInstanceUser::removeByID(), NL3D::CPSSound::resize(), NL3D::CPSLight::resize(), NL3D::CPSSound::step(), NL3D::CPSLocated::unregisterIntegrableForce(), and NL3D::CParticleSystem::unregisterLocatedBindableExternID().
00942 { return _Owner; } |
|
get the constant basis
Definition at line 678 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasis.
00678 { return _PlaneBasis; } |
|
if this is false, constant size will be used instead of a scheme deriver must return their owner there
Implements NL3D::CPSRotated3DPlaneParticle. Definition at line 132 of file ps_shockwave.h.
00132 { return _Owner; } |
|
get the plane basis scheme, (NULL if none) const version
Definition at line 673 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme.
00673 { return _PlaneBasisScheme; } |
|
get the plane basis scheme, (NULL if none) Set a constant basis for all particles
Definition at line 670 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme.
00670 { return _PlaneBasisScheme; } |
|
return priority
Implements NL3D::CPSLocatedBindable. Definition at line 66 of file ps_particle_basic.h. References uint32.
00066 { return 1000; }
|
|
get the radius ratio
Definition at line 64 of file ps_shockwave.h. References _RadiusCut.
00064 { return _RadiusCut; } |
|
this return a float table used to speed up rotations of face look at and the like for each angle, there are 4 float : 2 couple of float : a1, b1, a2, b2 a1 * I + b1 * K = up left corner, a2 * I + b2 * K = up right corner, This table must have been initialized with initRotTable Definition at line 354 of file ps_particle_basic.h. References NL3D::CPSRotated2DParticle::_InitializedRotTab, NL3D::CPSRotated2DParticle::_RotTable, and nlassert.
|
|
get the constant size
Definition at line 274 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_ParticleSize. Referenced by NL3D::CPSFaceLookAtHelper::drawLookAt(), NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(), NL3D::CPSSizedParticle::resizeSize(), and NL3D::CPSSizedParticle::setSizeScheme().
00274 { return _ParticleSize; } |
|
deriver must return their owner there
Implements NL3D::CPSSizedParticle. Definition at line 130 of file ps_shockwave.h.
00130 { return _Owner; } |
|
get the size scheme (NULL if none) const version
Definition at line 268 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_SizeScheme.
00268 { return _SizeScheme; } |
|
get the size scheme (NULL if none)
Definition at line 265 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_SizeScheme. Referenced by NL3D::CPSFaceLookAtHelper::drawLookAt(), and NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion().
00265 { return _SizeScheme; } |
|
***************************************************************************************
Definition at line 2108 of file ps_located.cpp. References NL3D::CParticleSystemProcess::getOwner(), NL3D::CParticleSystem::getSysMat(), and nlassert.
|
|
Definition at line 453 of file ps_particle_basic.h.
00453 { return _Tex; } |
|
get the constant texture
Definition at line 451 of file ps_particle_basic.h.
00451 { return _Tex; } |
|
get the texture group used if there's a texture scheme, const version. (if null, there's no texture animation)
Definition at line 442 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TexGroup.
00442 { return _TexGroup; } |
|
get the texture group used. it discard any previous single texture. (if null, there's no texture animation)
Definition at line 439 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TexGroup. Referenced by NL3D::CPSTexturedParticle::enumTexs().
00439 { return _TexGroup; } |
|
get the animated texture index. MeaningFul only if a texture group was set
Definition at line 433 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndex, and sint32.
00433 { return _TextureIndex; } |
|
deriver must return their owner there
Implements NL3D::CPSTexturedParticle. Definition at line 133 of file ps_shockwave.h.
00133 { return _Owner; } |
|
get the texture scheme (null if none) const version
Definition at line 427 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndexScheme.
00427 { return _TextureIndexScheme; } |
|
get the texture scheme (null if none)
Definition at line 424 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndexScheme.
00424 { return _TextureIndexScheme; } |
|
return this bindable type
Implements NL3D::CPSLocatedBindable. Definition at line 63 of file ps_particle_basic.h. References NL3D::PSParticle, and uint32.
00063 { return PSParticle; } |
|
get the U factor for textures
Definition at line 87 of file ps_shockwave.h.
00087 { return _UFactor; } |
|
Reimplemented in NL3D::CPSEmitter. Definition at line 974 of file ps_located.h. Referenced by NL3D::CPSLocatedBindable::finalize(), and NL3D::CPSLocatedBindable::setOwner().
00974 { return 0; }
|
|
=================================================================================
Definition at line 479 of file ps_shockwave.cpp. References _AnimTexVBMap, _ColoredAnimTexVBMap, _NbSeg, _PBMap, getNumShockWavesInVB(), index, nlassert, NL3D::CPrimitiveBlock::reserveQuad(), NL3D::CVertexBuffer::setNumVertices(), NL3D::CPrimitiveBlock::setQuad(), NL3D::CVertexBuffer::setTexCoord(), NL3D::CVertexBuffer::setVertexFormat(), size, and uint32.
00480 { 00481 TVBMap &vbMap = _ColorScheme == NULL ? (_TexGroup == NULL ? _VBMap : _AnimTexVBMap) 00482 : (_TexGroup == NULL ? _ColoredVBMap : _ColoredAnimTexVBMap); 00483 00484 00485 TVBMap::iterator vbIt = vbMap.find(_NbSeg); 00486 if (vbIt != vbMap.end()) 00487 { 00488 retVb = &(vbIt->second); 00489 TPBMap::iterator pbIt = _PBMap.find(_NbSeg); 00490 nlassert(pbIt != _PBMap.end()); 00491 retPb = &(pbIt->second); 00492 } 00493 else // we need to create the vb 00494 { 00495 // create an entry (we setup the primitive block at the same time, this could be avoided, but doesn't make much difference) 00496 CVertexBuffer &vb = vbMap[_NbSeg]; // create a vb 00497 CPrimitiveBlock &pb = _PBMap[_NbSeg]; // eventually create a pb 00498 const uint32 size = getNumShockWavesInVB(); 00499 vb.setVertexFormat(CVertexBuffer::PositionFlag | 00500 CVertexBuffer::TexCoord0Flag | 00501 (_ColorScheme != NULL ? CVertexBuffer::PrimaryColorFlag : 0) 00502 ); 00503 vb.setNumVertices((size * (_NbSeg + 1)) << 1 ); 00504 pb.reserveQuad(size * _NbSeg); 00505 for (uint32 k = 0; k < size; ++k) 00506 { 00507 for (uint32 l = 0; l < _NbSeg; ++l) 00508 { 00509 const uint32 index = ((k * (_NbSeg + 1)) + l) << 1; 00510 pb.setQuad(l + (k * _NbSeg) , index , index + 2, index + 3, index + 1); 00511 vb.setTexCoord(index, 0, CUV((float) l, 0)); 00512 vb.setTexCoord(index + 1, 0, CUV((float) l, 1)); 00513 } 00514 const uint32 index = ((k * (_NbSeg + 1)) + _NbSeg) << 1; 00515 vb.setTexCoord(index, 0, CUV((float) _NbSeg, 0)); 00516 vb.setTexCoord(index + 1, 0, CUV((float) _NbSeg, 1)); 00517 } 00518 retVb = &vb; 00519 retPb = &pb; 00520 } 00521 } |
|
shortcut to get the view matrix
Definition at line 2125 of file ps_located.cpp. References NL3D::CParticleSystemProcess::getOwner(), NL3D::CParticleSystem::getViewMat(), and nlassert. Referenced by NL3D::CPSRibbonLookAt::displayRibbons(), and NL3D::CPSFaceLookAtHelper::drawLookAt().
|
|
tells wether there are alive emitters
Definition at line 958 of file ps_located.h.
00958 { return false; } |
|
from CPSParticle : return true if there are lightable faces in the object
Implements NL3D::CPSParticle. Definition at line 90 of file ps_shockwave.h.
00090 { return false; } |
|
=================================================================================
Implements NL3D::CPSParticle. Definition at line 212 of file ps_shockwave.cpp. References hasTransparentFaces().
00213 { 00214 return !hasTransparentFaces(); 00215 } |
|
return true if this located bindable derived class holds alive particles
Reimplemented from NL3D::CPSLocatedBindable. Definition at line 69 of file ps_particle_basic.h. References NL3D::CPSLocated::getSize(), and nlassert.
|
|
=================================================================================
Implements NL3D::CPSParticle. Definition at line 206 of file ps_shockwave.cpp. References NL3D::CPSMaterial::getBlendingMode(). Referenced by hasOpaqueFaces().
00207 { 00208 return getBlendingMode() != CPSMaterial::alphaTest ; 00209 } |
|
=================================================================================
Definition at line 371 of file ps_shockwave.cpp. References NL3D::CMaterial::setDoubleSided(), NL3D::CMaterial::setLighting(), NL3D::CMaterial::setZFunc(), updateMatAndVbForColor(), and updateMatAndVbForTexture(). Referenced by CPSShockWave().
00372 { 00373 _Mat.setLighting(false); 00374 _Mat.setZFunc(CMaterial::less); 00375 _Mat.setDoubleSided(true); 00376 updateMatAndVbForColor(); 00377 updateMatAndVbForTexture(); 00378 } |
|
===================================================================================
Definition at line 294 of file ps_particle_basic.cpp. References NL3D::CPSRotated2DParticle::_InitializedRotTab, NL3D::CPSRotated2DParticle::_RotTable, and uint32.
00295 { 00296 float *ptFloat = _RotTable; 00297 for (uint32 k = 0; k < 256; ++k) 00298 { 00299 const float ca = (float) cos(k * (1.0f / 256.0f) * 2.0f * NLMISC::Pi); 00300 const float sa = (float) sin(k * (1.0f / 256.0f) * 2.0f * NLMISC::Pi); 00301 00302 *ptFloat++ = -ca - sa; 00303 *ptFloat++ = -sa + ca; 00304 00305 *ptFloat++ = ca - sa; 00306 *ptFloat++ = sa + ca; 00307 } 00308 _InitializedRotTab = true; 00309 } |
|
Definition at line 844 of file ps_located.h. References NL3D::CPSLocatedBindable::_Active. Referenced by NL3D::CParticleSystem::hasActiveEmitters().
00844 { return _Active; } |
|
Test wether Auto-LOD is disabled.
Definition at line 140 of file ps_particle_basic.h. References NL3D::CPSParticle::_DisableAutoLOD.
00140 { return _DisableAutoLOD; }
|
|
===================================================================================
Definition at line 514 of file ps_particle_basic.cpp. References NL3D::CMaterial::getZFunc().
00515 { 00516 return _Mat.getZFunc() != CMaterial::always; 00517 } |
|
called when a located has switch between incrmental / parametric motion. The default does nothing
Reimplemented in NL3D::CPSRibbonBase. Definition at line 971 of file ps_located.h. Referenced by NL3D::CPSLocated::bind().
00971 {} |
|
Definition at line 376 of file ps_particle_basic.h. References NL3D::CPSRotated2DParticle::_Angle2DScheme, NL3D::CPSAttribMaker< float >::hasMemory(), NL3D::CPSAttribMaker< float >::newElement(), and uint32. Referenced by newElement(), NL3D::CPSMesh::newElement(), NL3D::CPSFanLight::newElement(), and NL3D::CPSFaceLookAt::newElement().
00377 { 00378 if (_Angle2DScheme && _Angle2DScheme->hasMemory()) _Angle2DScheme->newElement(emitterLocated, emitterIndex); 00379 } |
|
Definition at line 233 of file ps_particle_basic.h. References NL3D::CPSAttribMaker< CRGBA >::hasMemory(), NL3D::CPSAttribMaker< CRGBA >::newElement(), and uint32. Referenced by NL3D::CPSTailDot::newElement(), newElement(), NL3D::CPSRibbonLookAt::newElement(), NL3D::CPSRibbon::newElement(), NL3D::CPSQuad::newElement(), NL3D::CPSConstraintMesh::newElement(), NL3D::CPSFanLight::newElement(), and NL3D::CPSDot::newElement().
00234 { 00235 if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->newElement(emitterLocated, emitterIndex); 00236 } |
|
================================================================================= Generate a new element for this bindable. They are generated according to the properties of the class Implements NL3D::CPSParticle. Definition at line 451 of file ps_shockwave.cpp. References NL3D::CPSRotated2DParticle::newAngle2DElement(), NL3D::CPSColoredParticle::newColorElement(), NL3D::CPSSizedParticle::newSizeElement(), NL3D::CPSTexturedParticle::newTextureIndexElement(), and uint32.
00452 { 00453 newColorElement(emitterLocated, emitterIndex); 00454 newTextureIndexElement(emitterLocated, emitterIndex); 00455 newSizeElement(emitterLocated, emitterIndex); 00456 newAngle2DElement(emitterLocated, emitterIndex); 00457 } |
|
Definition at line 699 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme, NL3D::CPSAttribMaker< CPlaneBasis >::hasMemory(), NL3D::CPSAttribMaker< CPlaneBasis >::newElement(), and uint32. Referenced by NL3D::CPSConstraintMesh::newElement(), NL3D::CPSMesh::newElement(), and NL3D::CPSFace::newElement().
00700 { 00701 if (_PlaneBasisScheme && _PlaneBasisScheme->hasMemory()) _PlaneBasisScheme->newElement(emitterLocated, emitterIndex); 00702 } |
|
Definition at line 291 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSAttribMaker< float >::hasMemory(), NL3D::CPSAttribMaker< float >::newElement(), and uint32. Referenced by newElement(), NL3D::CPSRibbonLookAt::newElement(), NL3D::CPSRibbon::newElement(), NL3D::CPSQuad::newElement(), NL3D::CPSConstraintMesh::newElement(), NL3D::CPSMesh::newElement(), and NL3D::CPSFanLight::newElement().
00292 { 00293 if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->newElement(emitterLocated, emitterIndex); 00294 } |
|
Definition at line 485 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSAttribMaker< sint32 >::hasMemory(), NL3D::CPSAttribMaker< sint32 >::newElement(), and uint32. Referenced by newElement(), and NL3D::CPSQuad::newElement().
00486 { 00487 if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->newElement(emitterLocated, emitterIndex); 00488 } |
|
|
|
Shortcut to notify that the max number of faces has changed This must be called when a geometric property of the particle has been modified This needn't to be called during CPSParticle::resize overrides Definition at line 151 of file ps_particle_basic.h. References NL3D::CPSLocated::notifyMaxNumFacesChanged(). Referenced by NL3D::CPSFanLight::setNbFans(), setNbSegs(), and NL3D::CPSConstraintMesh::update().
|
|
*************************************************************************************** Can be used by located bindable that have located as targets (emitter, collision zone, forces) to be notified that one of their target has been removed. To do this : The object that focus the target must call registerDTorObserver on the target, with himself as a parameter When the target is removed, this target will call this method for all registered CPSLocated The default behaviour remove this object as an observer
Reimplemented in NL3D::CPSEmitter, and NL3D::CPSTargetLocatedBindable. Definition at line 1996 of file ps_located.cpp. References NL3D::CPSLocated::unregisterDtorObserver(). Referenced by NL3D::CPSLocated::releaseRefTo().
01997 {
01998 ptr->unregisterDtorObserver(this);
01999 }
|
|
*************************************************************************************** Release any reference this obj may have to other process of the system For example, this is used when detaching a located bindable from a system. Reimplemented in NL3D::CPSEmitter, NL3D::CPSLight, NL3D::CPSTargetLocatedBindable, and NL3D::CPSMesh. Definition at line 2170 of file ps_located.cpp. Referenced by NL3D::CPSLocatedBindable::setOwner().
02171 { 02172 } |
|
Release any reference this obj may have on the given process. For example, this is used when detaching a located bindable from a system. Reimplemented in NL3D::CPSEmitter, and NL3D::CPSTargetLocatedBindable. Definition at line 871 of file ps_located.h.
00871 {} |
|
================================================================================= Resize the bindable attributes containers. Size is the max number of element to be contained. DERIVERS MUST CALL THEIR PARENT VERSION should not be called directly. Call CPSLocated::resize instead Implements NL3D::CPSParticle. Definition at line 469 of file ps_shockwave.cpp. References nlassert, NL3D::CPSRotated2DParticle::resizeAngle2D(), NL3D::CPSColoredParticle::resizeColor(), NL3D::CPSSizedParticle::resizeSize(), NL3D::CPSTexturedParticle::resizeTextureIndex(), and uint32. Referenced by setNbSegs(), setRadiusCut(), setUFactor(), and updateMatAndVbForColor().
00470 { 00471 nlassert(aSize < (1 << 16)); 00472 resizeColor(aSize); 00473 resizeTextureIndex(aSize); 00474 resizeSize(aSize); 00475 resizeAngle2D(aSize); 00476 } |
|
Definition at line 384 of file ps_particle_basic.h. References NL3D::CPSRotated2DParticle::_Angle2DScheme, NL3D::CPSRotated2DParticle::getAngle2DOwner(), NL3D::CPSAttribMaker< float >::hasMemory(), nlassert, NL3D::CPSAttribMaker< float >::resize(), size, and uint32. Referenced by resize(), NL3D::CPSMesh::resize(), NL3D::CPSFanLight::resize(), and NL3D::CPSFaceLookAt::resize().
00385 { 00386 nlassert(size < (1 << 16)); 00387 if (_Angle2DScheme && _Angle2DScheme->hasMemory()) _Angle2DScheme->resize(size, getAngle2DOwner()->getSize()); 00388 } |
|
Definition at line 241 of file ps_particle_basic.h. References NL3D::CPSColoredParticle::getColorOwner(), NL3D::CPSAttribMaker< CRGBA >::hasMemory(), nlassert, NL3D::CPSAttribMaker< CRGBA >::resize(), size, and uint32. Referenced by NL3D::CPSTailDot::resize(), resize(), NL3D::CPSRibbonLookAt::resize(), NL3D::CPSRibbon::resize(), NL3D::CPSQuad::resize(), NL3D::CPSConstraintMesh::resize(), NL3D::CPSFanLight::resize(), and NL3D::CPSDot::resize().
00242 { 00243 nlassert(size < (1 << 16)); 00244 if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->resize(size, getColorOwner()->getSize()); 00245 } |
|
Definition at line 707 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme, NL3D::CPSRotated3DPlaneParticle::getPlaneBasisOwner(), NL3D::CPSAttribMaker< CPlaneBasis >::hasMemory(), nlassert, NL3D::CPSAttribMaker< CPlaneBasis >::resize(), size, and uint32. Referenced by NL3D::CPSConstraintMesh::resize(), NL3D::CPSMesh::resize(), and NL3D::CPSFace::resize().
00708 { 00709 nlassert(size < (1 << 16)); 00710 if (_PlaneBasisScheme && _PlaneBasisScheme->hasMemory()) _PlaneBasisScheme->resize(size, getPlaneBasisOwner()->getSize()); 00711 } |
|
Definition at line 299 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSSizedParticle::getSize(), NL3D::CPSSizedParticle::getSizeOwner(), NL3D::CPSAttribMaker< float >::hasMemory(), nlassert, NL3D::CPSAttribMaker< float >::resize(), size, and uint32. Referenced by resize(), NL3D::CPSRibbonLookAt::resize(), NL3D::CPSRibbon::resize(), NL3D::CPSQuad::resize(), NL3D::CPSConstraintMesh::resize(), NL3D::CPSMesh::resize(), and NL3D::CPSFanLight::resize().
00300 { 00301 nlassert(size < (1 << 16)); 00302 if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->resize(size, getSizeOwner()->getSize()); 00303 } |
|
Definition at line 493 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSTexturedParticle::getTextureIndexOwner(), NL3D::CPSAttribMaker< sint32 >::hasMemory(), nlassert, NL3D::CPSAttribMaker< sint32 >::resize(), size, and uint32. Referenced by resize(), and NL3D::CPSQuad::resize().
00494 { 00495 nlassert(size < (1 << 16)); 00496 if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->resize(size, getTextureIndexOwner()->getSize() ); 00497 } |
|
=================================================================================
Reimplemented from NL3D::CPSParticle. Definition at line 248 of file ps_shockwave.cpp. References sint.
00249 { 00250 sint ver = f.serialVersion(2); 00251 CPSParticle::serial(f); 00252 CPSColoredParticle::serialColorScheme(f); 00253 CPSSizedParticle::serialSizeScheme(f); 00254 CPSTexturedParticle::serialTextureScheme(f); 00255 CPSRotated3DPlaneParticle::serialPlaneBasisScheme(f); 00256 CPSRotated2DParticle::serialAngle2DScheme(f); 00257 serialMaterial(f); 00258 f.serial(_NbSeg, _RadiusCut); 00259 if (ver > 1) 00260 { 00261 f.serial(_UFactor); 00262 } 00263 init(); 00264 } |
|
===================================================================================
Definition at line 270 of file ps_particle_basic.cpp. Referenced by NL3D::CPSRibbon::serial().
00271 { 00272 f.serialVersion(1); 00273 if (f.isReading()) 00274 { 00275 if (_Angle2DScheme) 00276 { 00277 delete _Angle2DScheme; 00278 _Angle2DScheme = NULL; 00279 } 00280 } 00281 bool useAngle2DScheme = _Angle2DScheme != NULL; 00282 f.serial(useAngle2DScheme); 00283 if (useAngle2DScheme) 00284 { 00285 f.serialPolyPtr(_Angle2DScheme); 00286 } 00287 else 00288 { 00289 f.serial(_Angle2D); 00290 } 00291 } |
|
serialization.
Definition at line 155 of file ps_particle_basic.cpp.
00156 { 00157 f.serialVersion(1); 00158 if (f.isReading()) 00159 { 00160 if (_ColorScheme) 00161 { 00162 delete _ColorScheme; 00163 _ColorScheme = NULL; 00164 } 00165 } 00166 bool useColorScheme = _ColorScheme != NULL; 00167 f.serial(useColorScheme); 00168 if (useColorScheme) 00169 { 00170 f.serialPolyPtr(_ColorScheme); 00171 } 00172 else 00173 { 00174 f.serial(_Color); 00175 } 00176 } |
|
===================================================================================
Definition at line 493 of file ps_particle_basic.cpp. References sint.
00494 { 00495 sint ver = f.serialVersion(2); 00496 TBlendingMode m = getBlendingMode(); 00497 f.serialEnum(m); 00498 setBlendingMode(m); 00499 if (ver >= 2) 00500 { 00501 bool zTest = isZTestEnabled(); 00502 f.serial(zTest); 00503 enableZTest(zTest); 00504 } 00505 } |
|
===================================================================================
Definition at line 469 of file ps_particle_basic.cpp.
00470 { 00471 f.serialVersion(1); 00472 f.serialPolyPtr(_PlaneBasisScheme); 00473 bool usePlaneBasisScheme = _PlaneBasisScheme != NULL; 00474 if (!usePlaneBasisScheme) 00475 { 00476 f.serial(_PlaneBasis); 00477 } 00478 } |
|
serialization. We choose a different name because of multiple-inheritance
Definition at line 211 of file ps_particle_basic.cpp.
00212 { 00213 f.serialVersion(1); 00214 if (f.isReading()) 00215 { 00216 if (_SizeScheme) 00217 { 00218 delete _SizeScheme; 00219 _SizeScheme = NULL; 00220 } 00221 } 00222 bool useSizeScheme = _SizeScheme != NULL; 00223 f.serial(useSizeScheme); 00224 if (useSizeScheme) 00225 { 00226 f.serialPolyPtr(_SizeScheme); 00227 } 00228 else 00229 { 00230 f.serial(_ParticleSize); 00231 } 00232 }; |
|
===================================================================================
Definition at line 372 of file ps_particle_basic.cpp.
00373 { 00374 f.serialVersion(1); 00375 if (f.isReading()) 00376 { 00377 if (_TextureIndexScheme) 00378 { 00379 delete _TextureIndexScheme; 00380 _TextureIndexScheme = NULL; 00381 _Tex = NULL; 00382 _TexGroup = NULL; 00383 } 00384 } 00385 00386 bool useAnimatedTexture; 00387 if (!f.isReading()) 00388 { 00389 useAnimatedTexture = (_TexGroup != NULL); 00390 } 00391 f.serial(useAnimatedTexture); 00392 if (useAnimatedTexture) 00393 { 00394 if (f.isReading()) 00395 { 00396 CTextureGrouped *ptTex = NULL; 00397 f.serialPolyPtr(ptTex); 00398 _TexGroup = ptTex; 00399 } 00400 else 00401 { 00402 CTextureGrouped *ptTex = _TexGroup; 00403 f.serialPolyPtr(ptTex); 00404 } 00405 00406 bool useTextureIndexScheme = _TextureIndexScheme != NULL; 00407 f.serial(useTextureIndexScheme); 00408 if (useTextureIndexScheme) 00409 { 00410 f.serialPolyPtr(_TextureIndexScheme); 00411 _TextureIndex = 0; 00412 } 00413 else 00414 { 00415 f.serial(_TextureIndex); 00416 } 00417 } 00418 else 00419 { 00420 if (f.isReading()) 00421 { 00422 ITexture *ptTex = NULL; 00423 f.serialPolyPtr(ptTex); 00424 _Tex = ptTex; 00425 } 00426 else 00427 { 00428 ITexture *ptTex = _Tex; 00429 f.serialPolyPtr(ptTex); 00430 } 00431 } 00432 } |
|
Activate / Deactivate this object. When not active, the owning system won't try to call the 'step' method.
Definition at line 843 of file ps_located.h. References NL3D::CPSLocatedBindable::_Active. Referenced by NL3D::CParticleSystem::activateEmitters(), and NL3D::CParticleSystemInstanceUser::setActive().
00843 { _Active = active; } |
|
=================================================================================== Set a constant angle for the particle. Angles range from 0.0f to 256.0f (2 pi) This discrad any previous scheme
Definition at line 251 of file ps_particle_basic.cpp. References NL3D::CPSRotated2DParticle::_Angle2D, and NL3D::CPSRotated2DParticle::_Angle2DScheme.
00252 { 00253 delete _Angle2DScheme; 00254 _Angle2DScheme = NULL; 00255 _Angle2D = angle2DScheme; 00256 } |
|
=================================================================================== Set an attribute maker that produce a float It must have been allocated by new It will be deleted by this object Output angles must range from 0.0f to 256.0f Definition at line 242 of file ps_particle_basic.cpp. References NL3D::CPSRotated2DParticle::_Angle2DScheme, NL3D::CPSRotated2DParticle::getAngle2DOwner(), nlassert, and NL3D::CPSAttribMaker< T >::resize().
00243 { 00244 nlassert(angle2DScheme); 00245 delete _Angle2DScheme; 00246 _Angle2DScheme = angle2DScheme; 00247 if (getAngle2DOwner() && angle2DScheme->hasMemory()) angle2DScheme->resize(getAngle2DOwner()->getMaxSize(), getAngle2DOwner()->getSize()); 00248 } |
|
===================================================================================
Definition at line 520 of file ps_particle_basic.cpp. References NL3D::CPSMaterial::alphaBlend, NL3D::CPSMaterial::alphaTest, NL3D::CMaterial::setAlphaTest(), NL3D::CMaterial::setBlend(), NL3D::CMaterial::setBlendFunc(), and NL3D::CMaterial::setZWrite().
00521 { 00522 switch (mode) 00523 { 00524 case add: 00525 _Mat.setBlend(true); 00526 _Mat.setBlendFunc(CMaterial::one, CMaterial::one); 00527 _Mat.setZWrite(false); 00528 _Mat.setAlphaTest(false); 00529 break; 00530 case modulate: 00531 _Mat.setBlend(true); 00532 _Mat.setBlendFunc(CMaterial::zero, CMaterial::srccolor); 00533 _Mat.setZWrite(false); 00534 _Mat.setAlphaTest(false); 00535 break; 00536 case alphaBlend: 00537 _Mat.setBlend(true); 00538 _Mat.setBlendFunc(CMaterial::srcalpha, CMaterial::invsrcalpha); 00539 _Mat.setZWrite(false); 00540 _Mat.setAlphaTest(false); 00541 break; 00542 case alphaTest: 00543 _Mat.setBlend(false); 00544 _Mat.setZWrite(true); 00545 _Mat.setAlphaTest(true); 00546 break; 00547 } 00548 } |
|
Set a constant color for the particles. remove any previous scheme.
Definition at line 135 of file ps_particle_basic.cpp. References NL3D::CPSColoredParticle::updateMatAndVbForColor().
00136 { 00137 delete _ColorScheme; 00138 _ColorScheme = NULL; 00139 _Color = col; 00140 updateMatAndVbForColor(); 00141 } |
|
Set an attribute maker that produce a color It must have been allocated by new It will be deleted by this object Definition at line 125 of file ps_particle_basic.cpp. References NL3D::CPSColoredParticle::getColorOwner(), nlassert, NL3D::CPSAttribMaker< T >::resize(), and NL3D::CPSColoredParticle::updateMatAndVbForColor().
00126 { 00127 nlassert(col); 00128 delete _ColorScheme; 00129 _ColorScheme = col; 00130 if (getColorOwner() && col->hasMemory()) col->resize(getColorOwner()->getMaxSize(), getColorOwner()->getSize()); 00131 updateMatAndVbForColor(); 00132 } |
|
*************************************************************************************** set the extern ID of this located bindable. 0 means no extern access. The map of ID-locatedBindable. Is in th particle system, so this located bindable must have been attached to a particle system, otherwise an assertion is raised Definition at line 2149 of file ps_located.cpp. References NL3D::CPSLocatedBindable::_ExternID, NL3D::CParticleSystemProcess::getOwner(), NL3D::CParticleSystem::registerLocatedBindableExternID(), uint32, and NL3D::CParticleSystem::unregisterLocatedBindableExternID().
02150 { 02151 if (id == _ExternID) return; 02152 CParticleSystem *ps = NULL; 02153 if (_Owner && _Owner->getOwner()) 02154 { 02155 ps = _Owner->getOwner(); 02156 } 02157 if (ps) 02158 { 02159 ps->unregisterLocatedBindableExternID(this); 02160 _ExternID = 0; 02161 } 02162 if (id != 0) 02163 { 02164 if (ps) ps->registerLocatedBindableExternID(id, this); 02165 _ExternID = id; 02166 } 02167 } |
|
set the LODs that apply to that object (warning : it is based on the position of the system, and don't act on a per instance basis ...) To have per instance precision, you must use an attribute maker that has LOD as its input Definition at line 952 of file ps_located.h. References NL3D::CPSLocatedBindable::_LOD.
00952 { _LOD = lod; } |
|
set the located bindable name (edition purpose)
Definition at line 946 of file ps_located.h.
00946 { _Name = name; } |
|
================================================================================= set a new number of seg (mus be >= 3 and <= 64)
Definition at line 218 of file ps_shockwave.cpp. References _NbSeg, NL3D::CPSLocated::getMaxSize(), nlassert, NL3D::CPSParticle::notifyOwnerMaxNumFacesChanged(), resize(), and uint.
|
|
***************************************************************************************
Reimplemented in NL3D::CPSEmitter. Definition at line 1948 of file ps_located.cpp. References NL3D::CParticleSystem::addRefForUserSysCoordInfo(), NL3D::CPSLocatedBindable::deleteElement(), NL3D::CParticleSystemProcess::getOwner(), NL3D::CPSLocated::getSize(), NL3D::CPSLocatedBindable::getUserMatrixUsageCount(), NL3D::CPSLocatedBindable::releaseAllRef(), NL3D::CParticleSystem::releaseRefForUserSysCoordInfo(), and uint. Referenced by NL3D::CPSLocated::bind(), and NL3D::CPSLocated::unbind().
01949 { 01950 if (psl == _Owner) return; 01951 if (psl == NULL) 01952 { 01953 releaseAllRef(); 01954 if (_Owner) 01955 { 01956 // empty this located bindable. Need to be empty if it must be rebound to another located. 01957 for (uint k = 0; k < _Owner->getSize(); ++k) 01958 { 01959 deleteElement(0); 01960 } 01961 } 01962 } 01963 if (_Owner && _Owner->getOwner()) 01964 { 01965 _Owner->getOwner()->releaseRefForUserSysCoordInfo(getUserMatrixUsageCount()); 01966 } 01967 _Owner = psl; 01968 if (_Owner && _Owner->getOwner()) 01969 { 01970 _Owner->getOwner()->addRefForUserSysCoordInfo(getUserMatrixUsageCount()); 01971 } 01972 } |
|
===================================================================================
Definition at line 448 of file ps_particle_basic.cpp. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasis, and NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme.
00449 { 00450 delete _PlaneBasisScheme; 00451 _PlaneBasisScheme = NULL; 00452 _PlaneBasis = basis; 00453 } |
|
=================================================================================== Set an attribute maker that produce a basis It must have been allocated by new It will be deleted by this object Definition at line 439 of file ps_particle_basic.cpp. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme, NL3D::CPSRotated3DPlaneParticle::getPlaneBasisOwner(), nlassert, and NL3D::CPSAttribMaker< T >::resize().
00440 { 00441 nlassert(basisMaker); 00442 delete _PlaneBasisScheme; 00443 _PlaneBasisScheme = basisMaker; 00444 if (getPlaneBasisOwner() && basisMaker->hasMemory()) basisMaker->resize(getPlaneBasisOwner()->getMaxSize(), getPlaneBasisOwner()->getSize()); 00445 } |
|
================================================================================= set a new radius cut
Definition at line 230 of file ps_shockwave.cpp. References _RadiusCut, NL3D::CPSLocated::getMaxSize(), and resize().
00231 { 00232 _RadiusCut = radiusCut; 00233 if (_Owner) 00234 { 00235 resize(_Owner->getMaxSize()); 00236 } 00237 } |
|
Set a constant size for the particles.
Definition at line 192 of file ps_particle_basic.cpp. References NL3D::CPSSizedParticle::_ParticleSize, NL3D::CPSSizedParticle::_SizeScheme, and size.
00193 { 00194 delete _SizeScheme; 00195 _SizeScheme = NULL; 00196 _ParticleSize = size; 00197 } |
|
Set an attribute maker that produce a size It must have been allocated by new It will be deleted by this object Definition at line 183 of file ps_particle_basic.cpp. References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSSizedParticle::getSize(), NL3D::CPSSizedParticle::getSizeOwner(), nlassert, and size.
00184 { 00185 nlassert(size != NULL); 00186 delete _SizeScheme; 00187 _SizeScheme = size; 00188 if (getSizeOwner() && size->hasMemory()) size->resize(getSizeOwner()->getMaxSize(), getSizeOwner()->getSize()); 00189 } |
|
=================================================================================== Set a constant texture for the particle This discard any previous scheme
Definition at line 349 of file ps_particle_basic.cpp. References NL3D::CPSTexturedParticle::_TexGroup, NL3D::CPSTexturedParticle::_TextureIndexScheme, and NL3D::CPSTexturedParticle::updateMatAndVbForTexture(). Referenced by NL3D::CPSQuad::CPSQuad(), and CPSShockWave().
00350 { 00351 delete _TextureIndexScheme; 00352 _TextureIndexScheme = NULL; 00353 _Tex = tex; 00354 _TexGroup = NULL; // release any grouped texture if one was set before 00355 updateMatAndVbForTexture(); 00356 } |
|
===================================================================================
Definition at line 337 of file ps_particle_basic.cpp. References NL3D::CPSTexturedParticle::_TexGroup, nlassert, and NL3D::CPSTexturedParticle::updateMatAndVbForTexture().
00338 { 00339 nlassert(texGroup); 00340 if (_Tex) 00341 { 00342 _Tex = NULL; 00343 } 00344 _TexGroup = texGroup; 00345 updateMatAndVbForTexture(); 00346 } |
|
===================================================================================
Definition at line 329 of file ps_particle_basic.cpp. References NL3D::CPSTexturedParticle::_TextureIndex, NL3D::CPSTexturedParticle::_TextureIndexScheme, index, and sint32.
00330 { 00331 delete _TextureIndexScheme; 00332 _TextureIndexScheme = NULL; 00333 _TextureIndex = index; 00334 } |
|
=================================================================================== Set an attribute maker that produce a sint32 It must have been allocated by new It will be deleted by this object a texture group must have been set before this, an assertion occurs otherwise The integer is used as an index in a grouped texture. It tells which frame to use Definition at line 316 of file ps_particle_basic.cpp. References NL3D::CPSTexturedParticle::_TexGroup, NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSTexturedParticle::getTextureIndexOwner(), nlassert, NL3D::CPSAttribMaker< T >::resize(), and NL3D::CPSTexturedParticle::updateMatAndVbForTexture().
00317 { 00318 nlassert(animOrder); 00319 nlassert(_TexGroup); // setTextureGroup must have been called before this 00320 delete _TextureIndexScheme; 00321 _TextureIndexScheme = animOrder; 00322 if (getTextureIndexOwner() && animOrder->hasMemory()) animOrder->resize(getTextureIndexOwner()->getMaxSize(), getTextureIndexOwner()->getSize()); 00323 00324 00325 updateMatAndVbForTexture(); 00326 } |
|
=================================================================================
Definition at line 240 of file ps_shockwave.cpp. References NL3D::CPSLocated::getSize(), nlassert, resize(), and value.
|
|
|
=================================================================================
Definition at line 267 of file ps_shockwave.cpp. References NL3D::CMaterial::enableUserTexMat(), NLMISC::CMatrix::setRot(), and NL3D::CMaterial::setUserTexMat(). Referenced by draw().
00268 { 00269 if (_UFactor != 1.f) 00270 { 00271 _Mat.enableUserTexMat(0); 00272 CMatrix texMat; 00273 texMat.setRot(_UFactor * NLMISC::CVector::I, 00274 NLMISC::CVector::J, 00275 NLMISC::CVector::K 00276 ); 00277 _Mat.setUserTexMat(0, texMat); 00278 } 00279 else 00280 { 00281 _Mat.enableUserTexMat(0, false); 00282 } 00283 } |
|
Implements NL3D::CPSParticle. Definition at line 99 of file ps_shockwave.h. References value.
00099 { CPSMaterial::setZBias(value); } |
|
draw the particles for edition mode. The default behaviour just draw a wireframe model
Definition at line 55 of file ps_particle_basic.cpp. References NL3D::CPSLocatedBindable::displayIcon2d(), PARTICLES_CHECK_MEM, and uint. Referenced by NL3D::CPSParticle::step(), NL3D::CPSConstraintMesh::step(), NL3D::CPSMesh::step(), and NL3D::CPSFace::step().
00056 { 00057 PARTICLES_CHECK_MEM; 00058 00059 CVector I = CVector::I; 00060 CVector J = CVector::J; 00061 00062 const CVector tab[] = { 2 * J, I + J 00063 , I + J, 2 * I + J 00064 , 2 * I + J, I 00065 , I, 2 * I - J 00066 , 2 * I - J, - .5f * J 00067 , - .5f * J, -2 * I - J 00068 , -2 * I - J, - I 00069 , - I, -2 * I + J 00070 , -2 * I + J, - I + J 00071 , - I + J, 2 * J 00072 }; 00073 const uint tabSize = sizeof(tab) / (2 * sizeof(CVector)); 00074 00075 const float sSize = 0.1f; 00076 displayIcon2d(tab, tabSize, sSize); 00077 00078 PARTICLES_CHECK_MEM; 00079 } |
|
process one pass for the particles. The default behaviour shows the particles Implements NL3D::CPSLocatedBindable. Reimplemented in NL3D::CPSFace, NL3D::CPSMesh, NL3D::CPSConstraintMesh, NL3D::CPSRibbon, NL3D::CPSRibbonLookAt, and NL3D::CPSTailDot. Definition at line 74 of file ps_particle_basic.h. References NL3D::CPSParticle::draw(), NL3D::CPSParticle::hasOpaqueFaces(), NL3D::CPSParticle::hasTransparentFaces(), NL3D::PSBlendRender, NL3D::PSSolidRender, NL3D::PSToolRender, NL3D::CPSParticle::showTool(), and NL3D::TAnimationTime.
00075 { 00076 if ( 00077 (pass == PSBlendRender && hasTransparentFaces()) 00078 || (pass == PSSolidRender && hasOpaqueFaces()) 00079 ) 00080 { 00081 draw(pass == PSSolidRender); 00082 } 00083 else 00084 if (pass == PSToolRender) // edition mode only 00085 { 00086 showTool(); 00087 } 00088 } |
|
Implements NL3D::CPSParticle. Definition at line 93 of file ps_shockwave.h.
00093 { return true; } |
|
PRIVATE USE : called by the system when its date has been manually changed. This his usually for object that expect time to be always increasing, so that they can reset their datas Reimplemented in NL3D::CPSRibbonBase. Definition at line 1038 of file ps_located.h.
01038 {} |
|
=================================================================================
Implements NL3D::CPSColoredParticle. Definition at line 435 of file ps_shockwave.cpp. References NL3D::CPSLocated::getMaxSize(), and resize(). Referenced by init().
|
|
=================================================================================
Implements NL3D::CPSTexturedParticle. Definition at line 445 of file ps_shockwave.cpp. References NL3D::CMaterial::setTexture(). Referenced by init().
00446 { 00447 _Mat.setTexture(0, _TexGroup ? (ITexture *) _TexGroup : (ITexture *) _Tex); 00448 } |
|
================================================================================= calculate current color and texture coordinate before any rendering size can't be higher that shockWaveBufSize ... Definition at line 381 of file ps_shockwave.cpp. References _NbSeg, NL3D::CVertexBuffer::getColorPointer(), NL3D::CVertexBuffer::getTexCoordPointer(), NL3D::CVertexBuffer::getVertexSize(), NL3D::CPSAttribMaker< sint32 >::make(), NL3D::CPSAttribMaker< CRGBA >::makeN(), nlassert, NL3D::ShockWaveBufSize, sint32, size, stride, uint, uint32, uint8, NL3D::CTextureGrouped::TFourUV::uv0, and NL3D::CTextureGrouped::TFourUV::uv3.
00382 { 00383 nlassert(_Owner); 00384 if (!size) return; 00385 if (_ColorScheme) 00386 { 00387 // compute the colors, each color is replicated n times... 00388 _ColorScheme->makeN(_Owner, startIndex, vb.getColorPointer(), vb.getVertexSize(), size, (_NbSeg + 1) << 1, srcStep); 00389 } 00390 00391 if (_TexGroup) // if it has a constant texture we are sure it has been setupped before... 00392 { 00393 sint32 textureIndex[ShockWaveBufSize]; 00394 const uint32 stride = vb.getVertexSize(), stride2 = stride << 1; 00395 uint8 *currUV = (uint8 *) vb.getTexCoordPointer(); 00396 uint k; 00397 00398 uint32 currIndexIncr; 00399 const sint32 *currIndex; 00400 00401 if (_TextureIndexScheme) 00402 { 00403 currIndex = (sint32 *) (_TextureIndexScheme->make(_Owner, startIndex, textureIndex, sizeof(sint32), size, true, srcStep)); 00404 currIndexIncr = 1; 00405 } 00406 else 00407 { 00408 currIndex = &_TextureIndex; 00409 currIndexIncr = 0; 00410 } 00411 00412 while (size--) 00413 { 00414 // for now, we don't make texture index wrapping 00415 const CTextureGrouped::TFourUV &uvGroup = _TexGroup->getUVQuad((uint32) *currIndex); 00416 00417 k = _NbSeg + 1; 00418 00419 for (k = 0; k <= _NbSeg; ++k) 00420 { 00421 00422 *(CUV *) currUV = uvGroup.uv0 + CUV(k * _UFactor, 0); 00423 *(CUV *) (currUV + stride) = uvGroup.uv3 + CUV(k * _UFactor, 0); 00424 // point the next quad 00425 currUV += stride2; 00426 } 00427 while (--k); 00428 00429 currIndex += currIndexIncr; 00430 } 00431 } 00432 } |
|
Returns true if the object can use global lighting color. (example : 'lookat' particle do not have normals, so they use global lighting color instead Definition at line 103 of file ps_particle_basic.h. References NL3D::CPSParticle::_UsesGlobalColorLighting. Referenced by NL3D::CPSTailDot::displayRibbons(), NL3D::CPSRibbonLookAt::displayRibbons(), NL3D::CPSRibbon::displayRibbons(), draw(), NL3D::CPSDot::draw(), NL3D::CPSTailDot::setupGlobalColor(), NL3D::CPSFanLight::setupMaterial(), NL3D::CPSRibbon::setupTexturedGlobalColor(), NL3D::CPSRibbon::setupUntexturedGlobalColor(), NL3D::CPSTailDot::step(), NL3D::CPSRibbonLookAt::step(), NL3D::CPSRibbon::step(), NL3D::CPSQuad::updateMatBeforeRendering(), NL3D::CPSTailDot::updateMaterial(), NL3D::CPSRibbon::updateTexturedMaterial(), and NL3D::CPSRibbon::updateUntexturedMaterial().
00103 { return _UsesGlobalColorLighting; }
|
|
Reimplemented in NL3D::CPSForce. Definition at line 986 of file ps_located.h. |
|
Definition at line 151 of file ps_shockwave.h. |
|
Definition at line 1033 of file ps_located.h. Referenced by NL3D::CPSLocatedBindable::isActive(), and NL3D::CPSLocatedBindable::setActive(). |
|
|
|
Definition at line 52 of file ps_shockwave.cpp. Referenced by getVBnPB(). |
|
Definition at line 226 of file ps_particle_basic.h. |
|
Definition at line 54 of file ps_shockwave.cpp. Referenced by getVBnPB(). |
|
Definition at line 53 of file ps_shockwave.cpp. |
|
Definition at line 228 of file ps_particle_basic.h. Referenced by NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSConstraintMeshHelper::drawMeshs(), and NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs(). |
|
Definition at line 1027 of file ps_located.h. Referenced by NL3D::CPSLocatedBindable::getExternID(), NL3D::CPSLocatedBindable::setExternID(), and NL3D::CPSLocatedBindable::~CPSLocatedBindable(). |
|
it is true if the table has been initialized, for debug purposes
Definition at line 239 of file ps_particle_basic.cpp. Referenced by NL3D::CPSRotated2DParticle::getRotTable(), and NL3D::CPSRotated2DParticle::initRotTable(). |
|
tells when this object must be dealt with
Definition at line 1029 of file ps_located.h. Referenced by NL3D::CPSLocatedBindable::getLOD(), and NL3D::CPSLocatedBindable::setLOD(). |
|
Definition at line 844 of file ps_particle_basic.h. Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSFaceLookAtHelper::drawLookAt(), and NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(). |
|
Definition at line 1031 of file ps_located.h. |
|
Definition at line 145 of file ps_shockwave.h. Referenced by getMaxNumFaces(), getNbSegs(), getNumShockWavesInVB(), getVBnPB(), setNbSegs(), and updateVbColNUVForRender(). |
|
|
|
Definition at line 50 of file ps_shockwave.cpp. Referenced by getVBnPB(). |
|
|
|
Definition at line 147 of file ps_shockwave.h. Referenced by getRadiusCut(), and setRadiusCut(). |
|
Definition at line 238 of file ps_particle_basic.cpp. Referenced by NL3D::CPSRotated2DParticle::getRotTable(), and NL3D::CPSRotated2DParticle::initRotTable(). |
|
|
Definition at line 472 of file ps_particle_basic.h. Referenced by NL3D::CPSFaceHelper::drawFaces(). |
|
Definition at line 475 of file ps_particle_basic.h. Referenced by NL3D::CPSTexturedParticle::getTextureGroup(), NL3D::CPSTexturedParticle::setTexture(), NL3D::CPSTexturedParticle::setTextureGroup(), and NL3D::CPSTexturedParticle::setTextureIndexScheme(). |
|
Definition at line 480 of file ps_particle_basic.h. Referenced by NL3D::CPSTexturedParticle::getTextureIndex(), and NL3D::CPSTexturedParticle::setTextureIndex(). |
|
|
Definition at line 149 of file ps_shockwave.h. |
|
Definition at line 51 of file ps_shockwave.cpp. |