#include <ps_quad.h>
Inheritance diagram for NL3D::CPSQuad:

Definition at line 44 of file ps_quad.h.
Public Types | |
| enum | { quadBufSize = 800 } |
| The number of quad to batche for each driver call. More... | |
| enum | TBlendingMode { add, modulate, alphaBlend, alphaTest } |
| this enum summarize the useful modes for blending to the framebuffer More... | |
| enum | TOperator { Add = 0, Modulate, Decal, EnvBumpMap, Last = 0xff } |
| we only use a useful set of operations More... | |
Public Member Functions | |
| virtual void | basisChanged (TPSMatrixMode systemBasis) |
| NLMISC::CVector | computeI (void) const |
| NLMISC::CVector | computeJ (void) const |
| NLMISC::CVector | computeK (void) const |
| CPSQuad (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 |
| virtual void | draw (bool opaque) |
| derivers draw the particles here | |
| void | enableAlternateTex (bool enabled=true) |
| void | enableGlobalColorLighting (bool enabled) |
| void | enableMultiTexture (bool enabled=true) |
| when set to false, this discard the textures that have been set | |
| 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) |
| =================================================================================== | |
| const NLMISC::CVector2f & | getAlternateScrollSpeed (uint stage) const |
| TOperator | getAlternateTexOp () const |
| CPSMaterial::TBlendingMode | getBlendingMode (void) const |
| =================================================================================== | |
| float | getBumpFactor () 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 | |
| TOperator | getMainTexOp () const |
| virtual uint32 | getMaxNumFaces (void) const |
| ================================================================================== | |
| std::string | getName (void) const |
| get the located bindable name (edition purpose) | |
| const CPSLocated * | getOwner (void) const |
| get the located that owns this bindable (const version) | |
| CPSLocated * | getOwner (void) |
| get the located that owns this bindable | |
| virtual uint32 | getPriority (void) const |
| return priority | |
| const NLMISC::CVector2f & | getScrollSpeed (uint stage) const |
| 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 | |
| ITexture * | getTexture2 () |
| const ITexture * | getTexture2 () const |
| Get the main texture for multitexturing. | |
| ITexture * | getTexture2Alternate () |
| const ITexture * | getTexture2Alternate () const |
| Get the alternate texture for multitexturing. | |
| 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 | |
| bool | getUseLocalDate () |
| bool | getUseLocalDateAlt () |
| 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 ()=0 |
| 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 | isAlternateTexEnabled () const |
| bool | isAutoLODDisabled () const |
| Test wether Auto-LOD is disabled. | |
| bool | isMultiTextureEnabled () const |
| bool | isZTestEnabled () const |
| =================================================================================== | |
| virtual void | motionTypeChanged (bool parametric) |
| called when a located has switch between incrmental / parametric motion. The default does nothing | |
| virtual void | notifyTargetRemoved (CPSLocated *ptr) |
| *************************************************************************************** | |
| virtual void | releaseAllRef () |
| *************************************************************************************** | |
| virtual void | releaseRefTo (const CParticleSystemProcess *other) |
| void | serialColorScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
| serialization. | |
| void | serialMaterial (NLMISC::IStream &f) throw (NLMISC::EStream) |
| =================================================================================== | |
| void | serialMultiTex (NLMISC::IStream &f) throw (NLMISC::EStream) |
| serial this object | |
| 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 | setAlternateScrollSpeed (uint stage, const NLMISC::CVector2f &sp) |
| void | setAlternateTexOp (TOperator op) |
| Set the operation for the alternate texture. Convert the texture to / from a bumpmap if needed. | |
| void | setBlendingMode (CPSMaterial::TBlendingMode mode) |
| =================================================================================== | |
| void | setBumpFactor (float bumpFactor) |
| Set a bump factor (when embm is used). | |
| 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 | setMainTexOp (TOperator op) |
| void | setName (const std::string &name) |
| set the located bindable name (edition purpose) | |
| void | setScrollSpeed (uint stage, const NLMISC::CVector2f &sp) |
| void | setSize (float size) |
| Set a constant size for the particles. | |
| void | setSizeScheme (CPSAttribMaker< float > *size) |
| void | setTexture (CSmartPtr< ITexture > tex) |
| =================================================================================== | |
| void | setTexture2 (ITexture *tex) |
| Set the main texture for multitexturing. Convert the texture to / from a bumpmap if needed (so you just provide its heightmap). | |
| void | setTexture2Alternate (ITexture *tex) |
| Set the alternate texture for multitexturing. It is used when the main operator is not supported by the gfx board. | |
| void | setTextureGroup (NLMISC::CSmartPtr< CTextureGrouped > texGroup) |
| =================================================================================== | |
| void | setTextureIndex (sint32 index) |
| =================================================================================== | |
| void | setTextureIndexScheme (CPSAttribMaker< sint32 > *animOrder) |
| =================================================================================== | |
| void | setupDriverModelMatrix (void) |
| shortcut to setup the model matrix (system basis or world basis) | |
| void | setupMaterial (ITexture *primary, IDriver *drv, CMaterial &mat) |
| void | setUseLocalDate (bool use) |
| Use the particle age rather than the global time to compute textures coordinates. | |
| void | setUseLocalDateAlt (bool use) |
| Use the particle age rather than the global time to compute textures coordinates. (when alternate texture is used). | |
| 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 | |
| bool | areBasicCapsForced () |
| test wether basic caps are forced | |
| void | forceBasicCaps (bool force=true) |
| void | initVertexBuffers () |
| init the vertex buffers | |
Protected Types | |
| enum | TMultiTexState { TouchFlag = 0x01, MultiTextureEnabled = 0x02, AlternateTextureEnabled = 0x04, AlternateTextureUsed = 0x08, EnvBumpMapUsed = 0x10, BasicCapsForced = 0x20, ScrollUseLocalDate = 0x40, ScrollUseLocalDateAlternate = 0x80 } |
| enum | VBType { VBCol = 0x0001, VBTex = 0x0002, VBTexAnimated = 0x0004, VBTex2 = 0x0008, VBTex2Animated = 0x0010, VBFullMask = 0x001f } |
Protected Member Functions | |
| bool | areBasicCapsForcedLocal () const |
| virtual void | bounceOccured (uint32 index) |
| virtual bool | completeBBox (NLMISC::CAABBox &box) const |
| ================================================================================== | |
| void | computeSrcStep (uint32 &step, uint &numToProcess) |
| void | deleteColorElement (uint32 index) |
| void | deleteElement (uint32 index) |
| this is inlined to save cost of call by derived class | |
| void | deleteSizeElement (uint32 index) |
| void | deleteTextureIndexElement (uint32 index) |
| void | displayIcon2d (const NLMISC::CVector tab[], uint nbSegs, float scale) |
| *************************************************************************************** | |
| void | forceBasicCapsLocal (bool force) |
| virtual CPSLocated * | getColorOwner (void) |
| deriver must return their owner there | |
| CVertexBuffer & | getNeededVB () |
| get the vertex buffer that is needed for drawing | |
| virtual CPSLocated * | getSizeOwner (void) |
| deriver must return their owner there | |
| virtual CPSLocated * | getTextureIndexOwner (void) |
| deriver must return their owner there | |
| virtual void | init (void) |
| ================================================================================== | |
| bool | isAlternateTextureUsed () const |
| test wether the alternate texture is used | |
| bool | isEnvBumpMapUsed () const |
| bool | isTouched () |
| void | newColorElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
| void | newElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
| this is inlined to save cost of call by derived class | |
| void | newSizeElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
| void | newTextureIndexElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
| void | notifyOwnerMaxNumFacesChanged (void) const |
| void | resize (uint32 capacity) |
| ================================================================================== | |
| void | resizeColor (uint32 size) |
| void | resizeSize (uint32 size) |
| void | resizeTextureIndex (uint32 size) |
| void | serial (NLMISC::IStream &f) throw (NLMISC::EStream) |
| DERIVERS MUST CALL this. | |
| virtual void | setOwner (CPSLocated *psl) |
| *************************************************************************************** | |
| void | setupMultiTexEnv (TOperator op, ITexture *tex1, ITexture *tex2, CMaterial &mat) |
| void | touch () |
| void | unTouch () |
| virtual void | updateMatAndVbForColor (void) |
| update the material and the vb so that they match the color scheme. Inherited from CPSColoredParticle | |
| virtual void | updateMatAndVbForTexture (void) |
| ================================================================================== | |
| void | updateMatBeforeRendering (IDriver *drv) |
| ================================================================================== | |
| void | updateVbColNUVForRender (CVertexBuffer &vb, uint32 startIndex, uint32 numQuad, uint32 srcStep) |
| virtual | ~CPSQuad () |
| ================================================================================== | |
Protected Attributes | |
| bool | _Active |
| TOperator | _AlternateOp |
| NLMISC::CSmartPtr< ITexture > | _AlternateTexture2 |
| float | _BumpFactor |
| CRGBA | _Color |
| CPSAttribMaker< CRGBA > * | _ColorScheme |
| uint32 | _ExternID |
| TPSLod | _LOD |
| tells when this object must be dealt with | |
| TOperator | _MainOp |
| CMaterial | _Mat |
| uint8 | _MultiTexState |
| std::string | _Name |
| CPSLocated * | _Owner |
| float | _ParticleSize |
| CPSAttribMaker< float > * | _SizeScheme |
| CSmartPtr< ITexture > | _Tex |
| CSmartPtr< CTextureGrouped > | _TexGroup |
| NLMISC::CVector2f | _TexScroll [2] |
| texture scrolling | |
| NLMISC::CVector2f | _TexScrollAlternate [2] |
| alternate texture scrollMultiTextureEnabled | |
| NLMISC::CSmartPtr< ITexture > | _Texture2 |
| sint32 | _TextureIndex |
| CPSAttribMaker< sint32 > * | _TextureIndexScheme |
Static Protected Attributes | |
| bool | _ForceBasicCaps = false |
| CVertexBuffer | _VBPos |
| the various kind of vertex buffers we need for quads | |
| CVertexBuffer | _VBPosCol |
| CVertexBuffer | _VBPosTex1 |
| CVertexBuffer | _VBPosTex1Anim |
| CVertexBuffer | _VBPosTex1AnimCol |
| CVertexBuffer | _VBPosTex1AnimColTex2 |
| CVertexBuffer | _VBPosTex1AnimColTex2Anim |
| CVertexBuffer | _VBPosTex1AnimTex2 |
| CVertexBuffer | _VBPosTex1AnimTex2Anim |
| CVertexBuffer | _VBPosTex1Col |
| CVertexBuffer | _VBPosTex1ColTex2 |
| CVertexBuffer | _VBPosTex1ColTex2Anim |
| CVertexBuffer | _VBPosTex1Tex2 |
| CVertexBuffer | _VBPosTex1Tex2Anim |
Friends | |
| class | CPSLocated |
|
|
The number of quad to batche for each driver call.
Definition at line 165 of file ps_quad.h.
00165 { quadBufSize = 800 };
|
|
|
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 };
|
|
|
Definition at line 626 of file ps_particle_basic.h.
00626 { TouchFlag = 0x01, MultiTextureEnabled = 0x02, AlternateTextureEnabled = 0x04, AlternateTextureUsed = 0x08, EnvBumpMapUsed = 0x10, BasicCapsForced = 0x20,
00627 ScrollUseLocalDate = 0x40, ScrollUseLocalDateAlternate = 0x80
00628 };
|
|
|
we only use a useful set of operations
Definition at line 515 of file ps_particle_basic.h. Referenced by NL3D::CPSMultiTexturedParticle::getAlternateTexOp(), and NL3D::CPSMultiTexturedParticle::getMainTexOp().
00515 { Add = 0, Modulate, Decal, EnvBumpMap, Last = 0xff };
|
|
|
Definition at line 128 of file ps_quad.h.
00129 {
00130 VBCol = 0x0001, // the vb has colors
00131 VBTex = 0x0002, // the vb has textures coordinates
00132 VBTexAnimated = 0x0004, // the texture coordinate can be animated (not precomputed)
00133 VBTex2 = 0x0008, // the vb has second texture coordinates
00134 VBTex2Animated = 0x0010, // the second texture coordinates can be animated (not precomputed)
00135 VBFullMask = 0x001f
00136 };
|
|
|
================================================================================== create the quad by giving a texture. This can't be a CTextureGrouped (for animation) animation must be set later by using setTextureScheme Definition at line 204 of file ps_quad.cpp. References init(), and NL3D::CPSTexturedParticle::setTexture().
00205 {
00206 setTexture(tex);
00207 init();
00208 // we don't init the _IndexBuffer for now, as it will be when resize is called
00209 if (CParticleSystem::getSerializeIdentifierFlag()) _Name = std::string("quad");
00210 }
|
|
|
==================================================================================
Definition at line 214 of file ps_quad.cpp.
00215 {
00216 }
|
|
|
test wether basic caps are forced
Definition at line 598 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_ForceBasicCaps. Referenced by NL3D::CPSMultiTexturedParticle::setupMaterial().
00598 { return _ForceBasicCaps; }
|
|
|
Definition at line 638 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::BasicCapsForced. Referenced by NL3D::CPSMultiTexturedParticle::setupMaterial().
00638 { return (_MultiTexState & BasicCapsForced) != 0; }
|
|
|
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 262 of file ps_quad.cpp. References NL3D::CPSAttribMaker< float >::getMaxValue(), and NL3D::CPSAttribMaker< float >::getMinValue().
00263 {
00264 if (!_SizeScheme)
00265 {
00266 CPSUtil::addRadiusToAABBox(box, _ParticleSize);
00267 }
00268 else
00269 {
00270 CPSUtil::addRadiusToAABBox(box, std::max(fabsf(_SizeScheme->getMaxValue()), fabsf(_SizeScheme->getMinValue())));
00271 }
00272 return true ;
00273 }
|
|
|
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 NL3D::CPSShockWave::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 237 of file ps_particle_basic.h. References NL3D::CPSAttribMaker< CRGBA >::deleteElement(), NL3D::CPSAttribMaker< CRGBA >::hasMemory(), index, and uint32. Referenced by NL3D::CPSTailDot::deleteElement(), NL3D::CPSShockWave::deleteElement(), NL3D::CPSRibbonLookAt::deleteElement(), NL3D::CPSRibbon::deleteElement(), deleteElement(), NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSFanLight::deleteElement(), and NL3D::CPSDot::deleteElement().
00238 {
00239 if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->deleteElement(index);
00240 }
|
|
|
this is inlined to save cost of call by derived class
Implements NL3D::CPSParticle. Reimplemented in NL3D::CPSFace, and NL3D::CPSFaceLookAt. Definition at line 105 of file ps_quad.h. References NL3D::CPSColoredParticle::deleteColorElement(), NL3D::CPSSizedParticle::deleteSizeElement(), NL3D::CPSTexturedParticle::deleteTextureIndexElement(), index, and uint32.
00106 {
00107 deleteColorElement(index);
00108 deleteSizeElement(index);
00109 deleteTextureIndexElement(index);
00110 }
|
|
|
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 NL3D::CPSShockWave::deleteElement(), NL3D::CPSRibbonLookAt::deleteElement(), NL3D::CPSRibbon::deleteElement(), 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 NL3D::CPSShockWave::deleteElement(), and 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; }
|
|
|
derivers draw the particles here
Reimplemented in NL3D::CPSDot, NL3D::CPSFaceLookAt, NL3D::CPSFanLight, and NL3D::CPSShockWave. Definition at line 110 of file ps_particle_basic.h. Referenced by NL3D::CPSParticle::step().
00110 {}
|
|
|
|
Definition at line 105 of file ps_particle_basic.h. References NL3D::CPSParticle::_UsesGlobalColorLighting.
00105 { _UsesGlobalColorLighting = enabled; }
|
|
|
when set to false, this discard the textures that have been set
Definition at line 636 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::_AlternateTexture2, NL3D::CPSMultiTexturedParticle::_MainOp, NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::_TexScroll, NL3D::CPSMultiTexturedParticle::_Texture2, NL3D::CPSMultiTexturedParticle::isMultiTextureEnabled(), NL3D::CPSMultiTexturedParticle::MultiTextureEnabled, NLMISC::CVector2f::set(), NL3D::CPSMultiTexturedParticle::touch(), and uint8.
00637 {
00638 if (isMultiTextureEnabled() == enabled) return;
00639 if (!enabled)
00640 {
00641 _Texture2 = NULL;
00642 _AlternateTexture2 = NULL;
00643 _MultiTexState = 0;
00644 }
00645 else
00646 {
00647 _MainOp = Modulate;
00648 _TexScroll[0].set(0, 0);
00649 _TexScroll[1].set(0, 0);
00650 _MultiTexState = (uint8) MultiTextureEnabled;
00651 }
00652 touch();
00653 }
|
|
|
===================================================================================
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::CPSMultiTexturedParticle. Definition at line 578 of file ps_quad.cpp.
00579 {
00580 CPSTexturedParticle::enumTexs(dest);
00581 CPSMultiTexturedParticle::enumTexs(dest, drv);
00582 }
|
|
|
*************************************************************************************** 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 }
|
|
|
this act as if the system had the most basic caps supported (no EMBM for example...) Should be used only in edition mode for test Definition at line 595 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_ForceBasicCaps.
00595 { _ForceBasicCaps = force; }
|
|
|
Definition at line 639 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::BasicCapsForced.
00640 {
00641 if (force) _MultiTexState |= BasicCapsForced;
00642 else _MultiTexState &= ~BasicCapsForced;
00643 }
|
|
||||||||||||
|
=================================================================================== 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(), NL3D::CPSShockWave::draw(), and 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 }
|
|
|
Definition at line 577 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_TexScrollAlternate, nlassert, and uint.
00578 {
00579 nlassert(stage < 2);
00580 return _TexScrollAlternate[stage];
00581 }
|
|
|
Definition at line 550 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_AlternateOp, and NL3D::CPSMultiTexturedParticle::TOperator.
00551 {
00552 return _AlternateOp;
00553 }
|
|
|
===================================================================================
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(), NL3D::CPSShockWave::hasTransparentFaces(), NL3D::CPSRibbonLookAt::hasTransparentFaces(), NL3D::CPSRibbon::hasTransparentFaces(), 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 }
|
|
|
Definition at line 610 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_BumpFactor.
00610 { return _BumpFactor; }
|
|
|
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 124 of file ps_quad.h.
00124 { 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; }
|
|
|
Definition at line 533 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MainOp, and NL3D::CPSMultiTexturedParticle::TOperator.
00533 { return _MainOp; }
|
|
|
==================================================================================
Implements NL3D::CPSParticle. Definition at line 219 of file ps_quad.cpp. References 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; }
|
|
|
get the vertex buffer that is needed for drawing ================================================================================== choose the vertex buffex that we need check is multitexturing is enabled, and which texture are enabled and / or animated Definition at line 146 of file ps_quad.cpp. References NL3D::CPSMultiTexturedParticle::isAlternateTextureUsed(), nlassert, uint, VBCol, VBFullMask, VBTex, VBTex2, VBTex2Animated, VBTexAnimated, NLMISC::CVector2f::x, and NLMISC::CVector2f::y. Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFaceLookAtHelper::drawLookAt(), and NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion().
00147 {
00148 uint flags = 0;
00149 if (_ColorScheme) flags |= (uint) VBCol;
00150 if (_TexGroup)
00151 {
00152 flags |= VBTex | VBTexAnimated;
00153 }
00154 else if (_Tex)
00155 {
00156
00157 flags |= VBTex;
00158 }
00159
00160 if (flags & VBTex)
00161 {
00163 if (CPSMultiTexturedParticle::isMultiTextureEnabled())
00164 {
00165 if (!isAlternateTextureUsed())
00166 {
00167 if ((flags & VBTex) && (_TexScroll[0].x != 0 || _TexScroll[0].y != 0)) flags |= VBTexAnimated;
00168 if (_Texture2)
00169 {
00170 if (_MainOp != Decal && (_TexScroll[1].x != 0 || _TexScroll[1].y != 0))
00171 {
00172 flags |= VBTex2 | VBTex2Animated;
00173 }
00174 else
00175 {
00176 flags |= VBTex2;
00177 }
00178 }
00179 }
00180 else
00181 {
00182 if ((flags & VBTex) && (_TexScrollAlternate[0].x != 0 || _TexScrollAlternate[0].y != 0)) flags |= VBTexAnimated;
00183 if (_AlternateTexture2)
00184 {
00185 if (_AlternateOp != Decal && (_TexScrollAlternate[1].x != 0 || _TexScrollAlternate[1].y != 0))
00186 {
00187 flags |= VBTex2 | VBTex2Animated;
00188 }
00189 else
00190 {
00191 flags |= VBTex2;
00192 }
00193 }
00194 }
00195 }
00196 }
00197
00198 nlassert((flags & ~VBFullMask) == 0); // check for overflow
00199 nlassert(_VbTab[flags] != NULL);
00200 return *(_VbTab[flags]); // get the vb
00201 }
|
|
|
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; }
|
|
|
return priority
Implements NL3D::CPSLocatedBindable. Definition at line 66 of file ps_particle_basic.h. References uint32.
00066 { return 1000; }
|
|
|
Definition at line 563 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_TexScroll, nlassert, and uint.
00564 {
00565 nlassert(stage < 2);
00566 return _TexScroll[stage];
00567 }
|
|
|
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 125 of file ps_quad.h.
00125 { 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; }
|
|
|
Definition at line 526 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_Texture2.
00526 { return _Texture2; }
|
|
|
Get the main texture for multitexturing.
Definition at line 525 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_Texture2.
00525 { return _Texture2; }
|
|
|
Definition at line 545 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_AlternateTexture2.
00545 { return _AlternateTexture2; }
|
|
|
Get the alternate texture for multitexturing.
Definition at line 544 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_AlternateTexture2.
00544 { return _AlternateTexture2; }
|
|
|
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 126 of file ps_quad.h.
00126 { 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; }
|
|
|
Definition at line 602 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::ScrollUseLocalDate. Referenced by updateVbColNUVForRender().
00602 { return (_MultiTexState & ScrollUseLocalDate) != 0; }
|
|
|
Definition at line 606 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::ScrollUseLocalDateAlternate. Referenced by updateVbColNUVForRender().
00606 { return (_MultiTexState & ScrollUseLocalDateAlternate) != 0; }
|
|
|
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; }
|
|
|
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; }
|
|
|
Returns true if there are lightable faces in the object Implemented in NL3D::CPSDot, NL3D::CPSFace, NL3D::CPSFaceLookAt, NL3D::CPSFanLight, NL3D::CPSMesh, NL3D::CPSConstraintMesh, NL3D::CPSRibbon, NL3D::CPSRibbonLookAt, NL3D::CPSShockWave, and NL3D::CPSTailDot. |
|
|
==================================================================================
Implements NL3D::CPSParticle. Definition at line 232 of file ps_quad.cpp. References hasTransparentFaces(). Referenced by NL3D::CPSFace::step().
00233 {
00234 return !hasTransparentFaces();
00235 }
|
|
|
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 226 of file ps_quad.cpp. References NL3D::CPSMaterial::getBlendingMode(). Referenced by hasOpaqueFaces(), and NL3D::CPSFace::step().
00227 {
00228 return getBlendingMode() != CPSMaterial::alphaTest ;
00229 }
|
|
|
==================================================================================
Definition at line 238 of file ps_quad.cpp. References NL3D::CMaterial::setDoubleSided(), NL3D::CMaterial::setLighting(), updateMatAndVbForColor(), and updateMatAndVbForTexture(). Referenced by CPSQuad().
00239 {
00240 _Mat.setLighting(false);
00241 _Mat.setDoubleSided(true);
00242
00243
00244 updateMatAndVbForColor();
00245 updateMatAndVbForTexture();
00246 }
|
|
|
init the vertex buffers ================================================================================== this static method init vertex buffers setup vertex format Definition at line 115 of file ps_quad.cpp. References quadBufSize, NL3D::CVertexBuffer::setNumVertices(), NL3D::SetupQuadVBTexCoords(), NL3D::CVertexBuffer::setVertexFormat(), uint, uint32, VBCol, VBTex, VBTex2, VBTex2Animated, and VBTexAnimated.
00116 {
00117 for (uint k = 0; k < 32; ++k)
00118 {
00119 CVertexBuffer *vb = _VbTab[k];
00120 if (_VbTab[k]) // valid vb ?
00121 {
00122 uint32 vf = CVertexBuffer::PositionFlag;
00124 if (k & (uint) VBCol) vf |= CVertexBuffer::PrimaryColorFlag;
00125 if (k & (uint) VBTex || k & (uint) VBTexAnimated) vf |= CVertexBuffer::TexCoord0Flag;
00126 if (k & (uint) VBTex2 || k & (uint) VBTex2Animated) vf |= CVertexBuffer::TexCoord1Flag;
00127 vb->setVertexFormat(vf);
00128 vb->setNumVertices(quadBufSize << 2);
00129
00130 if ((k & (uint) VBTex) && !(k & (uint) VBTexAnimated))
00131 {
00132 SetupQuadVBTexCoords(*vb, 0);
00133 }
00134
00135 if ((k & (uint) VBTex2) && !(k & (uint) VBTex2Animated))
00136 {
00137 SetupQuadVBTexCoords(*vb, 1);
00138 }
00139
00140 }
00141 }
00142 }
|
|
|
Definition at line 844 of file ps_located.h. References NL3D::CPSLocatedBindable::_Active. Referenced by NL3D::CParticleSystem::hasActiveEmitters().
00844 { return _Active; }
|
|
|
Definition at line 537 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::AlternateTextureEnabled, and uint8. Referenced by NL3D::CPSMultiTexturedParticle::enableAlternateTex(), and NL3D::CPSMultiTexturedParticle::setupMaterial().
00537 { return (_MultiTexState & (uint8) AlternateTextureEnabled) != 0; }
|
|
|
test wether the alternate texture is used
Definition at line 632 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::AlternateTextureUsed. Referenced by getNeededVB(), and updateVbColNUVForRender().
00632 { return (_MultiTexState & AlternateTextureUsed) != 0; }
|
|
|
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 633 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::EnvBumpMapUsed.
00633 { return (_MultiTexState & EnvBumpMapUsed) != 0; }
|
|
|
Definition at line 519 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::MultiTextureEnabled, and uint8. Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSMultiTexturedParticle::enableAlternateTex(), NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::setupMaterial(), and updateMatBeforeRendering().
00519 { return (_MultiTexState & (uint8) MultiTextureEnabled) != 0; }
|
|
|
Definition at line 637 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::TouchFlag. Referenced by NL3D::CPSMultiTexturedParticle::setupMaterial().
00637 { return (_MultiTexState & TouchFlag) != 0; }
|
|
|
===================================================================================
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 233 of file ps_particle_basic.h. References NL3D::CPSAttribMaker< CRGBA >::hasMemory(), NL3D::CPSAttribMaker< CRGBA >::newElement(), and uint32. Referenced by NL3D::CPSTailDot::newElement(), NL3D::CPSShockWave::newElement(), NL3D::CPSRibbonLookAt::newElement(), NL3D::CPSRibbon::newElement(), newElement(), NL3D::CPSConstraintMesh::newElement(), NL3D::CPSFanLight::newElement(), and NL3D::CPSDot::newElement().
00234 {
00235 if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->newElement(emitterLocated, emitterIndex);
00236 }
|
|
||||||||||||
|
this is inlined to save cost of call by derived class
Implements NL3D::CPSParticle. Reimplemented in NL3D::CPSFace, and NL3D::CPSFaceLookAt. Definition at line 97 of file ps_quad.h. References NL3D::CPSColoredParticle::newColorElement(), NL3D::CPSSizedParticle::newSizeElement(), NL3D::CPSTexturedParticle::newTextureIndexElement(), and uint32.
00098 {
00099 newColorElement(emitterLocated, emitterIndex);
00100 newSizeElement(emitterLocated, emitterIndex);
00101 newTextureIndexElement(emitterLocated, emitterIndex);
00102 }
|
|
||||||||||||
|
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 NL3D::CPSShockWave::newElement(), NL3D::CPSRibbonLookAt::newElement(), NL3D::CPSRibbon::newElement(), 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 NL3D::CPSShockWave::newElement(), and 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(), NL3D::CPSShockWave::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 {}
|
|
|
==================================================================================
Implements NL3D::CPSParticle. Reimplemented in NL3D::CPSFace, and NL3D::CPSFaceLookAt. Definition at line 276 of file ps_quad.cpp. References nlassert, NL3D::CPSColoredParticle::resizeColor(), NL3D::CPSSizedParticle::resizeSize(), NL3D::CPSTexturedParticle::resizeTextureIndex(), size, and uint32.
00277 {
00278 nlassert(size < (1 << 16));
00279 resizeSize(size);
00280 resizeColor(size);
00281 resizeTextureIndex(size);
00282 }
|
|
|
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(), NL3D::CPSShockWave::resize(), NL3D::CPSRibbonLookAt::resize(), NL3D::CPSRibbon::resize(), 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 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 NL3D::CPSShockWave::resize(), NL3D::CPSRibbonLookAt::resize(), NL3D::CPSRibbon::resize(), 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 NL3D::CPSShockWave::resize(), and resize().
00494 {
00495 nlassert(size < (1 << 16));
00496 if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->resize(size, getTextureIndexOwner()->getSize() );
00497 }
|
|
|
DERIVERS MUST CALL this.
Reimplemented from NL3D::CPSParticle. Reimplemented in NL3D::CPSFace, and NL3D::CPSFaceLookAt. Definition at line 299 of file ps_quad.cpp. References sint.
00300 {
00301 sint ver = f.serialVersion(2);
00302 CPSParticle::serial(f);
00303 CPSSizedParticle::serialSizeScheme(f);
00304 CPSColoredParticle::serialColorScheme(f);
00305 CPSTexturedParticle::serialTextureScheme(f);
00306 serialMaterial(f);
00307 if (ver > 1)
00308 {
00309 CPSMultiTexturedParticle::serialMultiTex(f);
00310 }
00311 }
|
|
|
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 }
|
|
|
serial this object version 1 : bump factor Definition at line 677 of file ps_particle_basic.cpp. References sint.
00678 {
00680 sint ver = f.serialVersion(1);
00681 f.serial(_MultiTexState);
00682 if (isMultiTextureEnabled())
00683 {
00684 f.serialEnum(_MainOp);
00685 if (_MainOp == EnvBumpMap && ver >= 1)
00686 {
00687 f.serial(_BumpFactor);
00688 }
00689 ITexture *tex = NULL;
00690 if (f.isReading())
00691 {
00692 f.serialPolyPtr(tex);
00693 _Texture2 = tex;
00694 }
00695 else
00696 {
00697 tex = _Texture2;
00698 f.serialPolyPtr(tex);
00699 }
00700 f.serial(_TexScroll[0], _TexScroll[1]);
00701
00702 if (isAlternateTexEnabled())
00703 {
00704 f.serialEnum(_AlternateOp);
00705 if (f.isReading())
00706 {
00707 f.serialPolyPtr(tex);
00708 _AlternateTexture2 = tex;
00709 }
00710 else
00711 {
00712 tex = _AlternateTexture2;
00713 f.serialPolyPtr(tex);
00714 }
00715 f.serial(_TexScrollAlternate[0], _TexScrollAlternate[1]);
00716 }
00717 else
00718 {
00719 _AlternateTexture2 = NULL;
00720 }
00721 }
00722 else
00723 {
00724 if (f.isReading())
00725 {
00726 _Texture2 = NULL;
00727 _AlternateTexture2 = NULL;
00728 }
00729 }
00730 }
|
|
|
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 the scroll speed for tex 1 & 2 when the alternate op is used
Definition at line 572 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_TexScrollAlternate, nlassert, and uint.
00573 {
00574 nlassert(stage < 2);
00575 _TexScrollAlternate[stage] = sp;
00576 }
|
|
|
Set the operation for the alternate texture. Convert the texture to / from a bumpmap if needed.
Definition at line 923 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::_AlternateOp, NL3D::CPSMultiTexturedParticle::_AlternateTexture2, NL3D::ConvertFromBumpMap(), NL3D::ConvertToBumpMap(), NL3D::CPSMultiTexturedParticle::EnvBumpMap, and NL3D::CPSMultiTexturedParticle::touch().
00924 {
00925 _AlternateOp = op;
00926 if (_AlternateOp == EnvBumpMap)
00927 {
00928 ConvertToBumpMap(_AlternateTexture2);
00929 }
00930 else
00931 {
00932 ConvertFromBumpMap(_AlternateTexture2);
00933 }
00934 touch();
00935 }
|
|
|
===================================================================================
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 bump factor (when embm is used).
Definition at line 609 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_BumpFactor, and NL3D::CPSMultiTexturedParticle::touch().
00609 { _BumpFactor = bumpFactor; touch(); }
|
|
|
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 operation for the main texture. When EnvBumpMap is used, setTexture2 must be called with a bump map, and the primary texture must be convertible to rgba. Convert the texture to / from a bumpmap if needed Definition at line 908 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::_MainOp, NL3D::CPSMultiTexturedParticle::_Texture2, NL3D::ConvertFromBumpMap(), NL3D::ConvertToBumpMap(), NL3D::CPSMultiTexturedParticle::EnvBumpMap, and NL3D::CPSMultiTexturedParticle::touch().
00909 {
00910 _MainOp = op;
00911 if (_MainOp == EnvBumpMap)
00912 {
00913 ConvertToBumpMap(_Texture2);
00914 }
00915 else
00916 {
00917 ConvertFromBumpMap(_Texture2);
00918 }
00919 touch();
00920 }
|
|
|
set the located bindable name (edition purpose)
Definition at line 946 of file ps_located.h.
00946 { _Name = name; }
|
|
|
***************************************************************************************
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 }
|
|
||||||||||||
|
set the scroll speed for tex 1 & 2 when the main op is used
Definition at line 558 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_TexScroll, nlassert, and uint.
00559 {
00560 nlassert(stage < 2);
00561 _TexScroll[stage] = sp;
00562 }
|
|
|
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 CPSQuad(), and NL3D::CPSShockWave::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 }
|
|
|
Set the main texture for multitexturing. Convert the texture to / from a bumpmap if needed (so you just provide its heightmap).
Definition at line 890 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::_MainOp, NL3D::CPSMultiTexturedParticle::_Texture2, NL3D::ConvertFromBumpMap(), NL3D::ConvertToBumpMap(), NL3D::CPSMultiTexturedParticle::EnvBumpMap, and NL3D::CPSMultiTexturedParticle::touch().
00891 {
00892 _Texture2 = tex;
00893 if (_MainOp != EnvBumpMap)
00894 {
00895 ConvertFromBumpMap(_Texture2);
00896 }
00897 else
00898 {
00899 if (!dynamic_cast<NL3D::CTextureBump *>((ITexture *) _Texture2))
00900 {
00901 ConvertToBumpMap(_Texture2);
00902 }
00903 }
00904 touch();
00905 }
|
|
|
Set the alternate texture for multitexturing. It is used when the main operator is not supported by the gfx board.
Definition at line 875 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::_AlternateOp, NL3D::CPSMultiTexturedParticle::_AlternateTexture2, NL3D::ConvertFromBumpMap(), NL3D::ConvertToBumpMap(), NL3D::CPSMultiTexturedParticle::EnvBumpMap, and NL3D::CPSMultiTexturedParticle::touch().
00876 {
00877 _AlternateTexture2 = tex;
00878 if (_AlternateOp != EnvBumpMap)
00879 {
00880 ConvertFromBumpMap(_AlternateTexture2);
00881 }
00882 else
00883 {
00884 ConvertToBumpMap(_AlternateTexture2);
00885 }
00886 touch();
00887 }
|
|
|
===================================================================================
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 }
|
|
|
||||||||||||||||
|
setup a material from this object and a primary texture drv is used to check the device caps. Must be called before display when multitextureing is used Definition at line 733 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::_AlternateOp, NL3D::CPSMultiTexturedParticle::_AlternateTexture2, NL3D::CPSMultiTexturedParticle::_BumpFactor, NL3D::CPSMultiTexturedParticle::_ForceBasicCaps, NL3D::CPSMultiTexturedParticle::_MainOp, NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::_Texture2, NL3D::CPSMultiTexturedParticle::AlternateTextureUsed, NL3D::CPSMultiTexturedParticle::areBasicCapsForced(), NL3D::CPSMultiTexturedParticle::areBasicCapsForcedLocal(), NL3D::CPSMultiTexturedParticle::Decal, NL3D::CPSMultiTexturedParticle::EnvBumpMap, NL3D::CPSMultiTexturedParticle::EnvBumpMapUsed, NL3D::ITexture::generate(), NL3D::CTextureBump::getNormalizationFactor(), NL3D::CPSMultiTexturedParticle::isAlternateTexEnabled(), NL3D::CPSMultiTexturedParticle::isMultiTextureEnabled(), NL3D::IDriver::isTextureAddrModeSupported(), NL3D::CPSMultiTexturedParticle::isTouched(), NL3D::CTextureBump::release(), NL3D::IDriver::setMatrix2DForTextureOffsetAddrMode(), NL3D::CMaterial::setTexture(), NL3D::CPSMultiTexturedParticle::setupMultiTexEnv(), NL3D::CMaterial::texEnvOpRGB(), uint8, and NL3D::CPSMultiTexturedParticle::unTouch(). Referenced by NL3D::CPSFaceHelper::drawFaces(), and updateMatBeforeRendering().
00734 {
00736 if (isMultiTextureEnabled() && _MainOp == EnvBumpMap && driver->isTextureAddrModeSupported(CMaterial::OffsetTexture))
00737 {
00738 CTextureBump *tb = dynamic_cast<CTextureBump *>((ITexture *) _Texture2);
00739 if (tb != NULL)
00740 {
00741 float normFactor = tb->getNormalizationFactor();
00742 if (normFactor == 0.f) // have we computed the normalization factor ?
00743 {
00745 tb->generate();
00746 normFactor = tb->getNormalizationFactor();
00747 tb->release();
00748 }
00749 const float bMat[] = { _BumpFactor * normFactor, 0.f, 0.f, _BumpFactor * normFactor};
00750 driver->setMatrix2DForTextureOffsetAddrMode(1, bMat);
00751 }
00752 }
00753
00754 if (!isTouched() && areBasicCapsForcedLocal() == areBasicCapsForced()) return;
00755 if (!isMultiTextureEnabled())
00756 {
00757 mat.setTexture(0, primary);
00758 mat.texEnvOpRGB(0, CMaterial::Modulate);
00759 mat.setTexture(1, NULL);
00760 }
00761 else
00762 {
00763 if (_MainOp != EnvBumpMap)
00764 {
00765 setupMultiTexEnv(_MainOp, primary, _Texture2, mat);
00766 _MultiTexState &= ~(uint8) EnvBumpMapUsed;
00767 _MultiTexState &= ~(uint8) AlternateTextureUsed;
00768 }
00769 else
00770 {
00771 if (!_ForceBasicCaps && driver->isTextureAddrModeSupported(CMaterial::OffsetTexture)) // envbumpmap supported ?
00772 {
00773 CTextureBump *tb = dynamic_cast<CTextureBump *>((ITexture *) _Texture2);
00774 if (tb != NULL)
00775 {
00776 float normFactor = tb->getNormalizationFactor();
00777 if (normFactor == 0.f) // have we computed the normalization factor ?
00778 {
00780 tb->generate();
00781 normFactor = tb->getNormalizationFactor();
00782 tb->release();
00783 }
00784 setupMultiTexEnv(_MainOp, primary, _Texture2, mat);
00785 }
00786 _MultiTexState &= ~(uint8) AlternateTextureUsed;
00787 _MultiTexState |= (uint8) EnvBumpMapUsed;
00788 }
00789 else // switch to alternate
00790 {
00791 if (isAlternateTexEnabled())
00792 {
00793 _MultiTexState |= (uint8) AlternateTextureUsed;
00794 setupMultiTexEnv(_AlternateOp, primary, _AlternateTexture2, mat);
00795 _MultiTexState &= ~(uint8) EnvBumpMapUsed;
00796 }
00797 else // display the texture as it
00798 {
00799 setupMultiTexEnv(Decal, primary, NULL, mat);
00800 _MultiTexState &= ~(uint8) AlternateTextureUsed;
00801 _MultiTexState &= ~(uint8) EnvBumpMapUsed;
00802 }
00803 }
00804 }
00805 }
00806
00807 (areBasicCapsForced());
00808 unTouch();
00809 }
|
|
||||||||||||||||||||
|
Definition at line 812 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::Decal, NL3D::CMaterial::enableTexAddrMode(), NL3D::CPSMultiTexturedParticle::EnvBumpMap, NL3D::CMaterial::setTexAddressingMode(), NL3D::CMaterial::setTexture(), and NL3D::CMaterial::texEnvOpRGB(). Referenced by NL3D::CPSMultiTexturedParticle::setupMaterial().
00813 {
00814 switch (op)
00815 {
00816 case Add:
00817 mat.setTexture(0, tex1);
00818 mat.setTexture(1, tex2);
00819 mat.texEnvOpRGB(0, CMaterial::Modulate);
00820 mat.texEnvOpRGB(1, CMaterial::Add);
00821 mat.enableTexAddrMode(false);
00822 break;
00823 case Modulate:
00824 mat.setTexture(0, tex1);
00825 mat.setTexture(1, tex2);
00826 mat.texEnvOpRGB(0, CMaterial::Modulate);
00827 mat.texEnvOpRGB(1, CMaterial::Modulate);
00828 mat.enableTexAddrMode(false);
00829 break;
00830 case EnvBumpMap:
00831 mat.setTexture(0, tex2);
00832 mat.setTexture(1, tex1);
00833 mat.texEnvOpRGB(0, CMaterial::Replace);
00834 mat.texEnvOpRGB(1, CMaterial::Modulate);
00835 mat.enableTexAddrMode(true);
00836 mat.setTexAddressingMode(0, CMaterial::FetchTexture);
00837 mat.setTexAddressingMode(1, CMaterial::OffsetTexture);
00838 break;
00839 case Decal:
00840 mat.setTexture(0, tex1);
00841 mat.texEnvOpRGB(0, CMaterial::Replace);
00842 mat.setTexture(1, NULL);
00843 mat.enableTexAddrMode(false);
00844 break;
00845 default: break;
00846 }
00847 }
|
|
|
Use the particle age rather than the global time to compute textures coordinates.
Definition at line 940 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::ScrollUseLocalDate.
00941 {
00942 if (use) _MultiTexState |= ScrollUseLocalDate;
00943 else _MultiTexState &= ~ ScrollUseLocalDate;
00944 }
|
|
|
Use the particle age rather than the global time to compute textures coordinates. (when alternate texture is used).
Definition at line 948 of file ps_particle_basic.cpp. References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::ScrollUseLocalDateAlternate.
00949 {
00950 if (use) _MultiTexState |= ScrollUseLocalDateAlternate;
00951 else _MultiTexState &= ~ ScrollUseLocalDateAlternate;
00952 }
|
|
|
Implements NL3D::CPSParticle. Definition at line 585 of file ps_quad.cpp. References value.
00586 {
00587 CPSMaterial::setZBias(value);
00588 }
|
|
|
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 71 of file ps_quad.h.
00071 { 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 {}
|
|
|
|
Definition at line 636 of file ps_particle_basic.h. References NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::TouchFlag, and uint8. Referenced by NL3D::CPSMultiTexturedParticle::setupMaterial().
00636 { _MultiTexState &= ~ (uint8) TouchFlag; }
|
|
|
update the material and the vb so that they match the color scheme. Inherited from CPSColoredParticle
Implements NL3D::CPSColoredParticle. Definition at line 285 of file ps_quad.cpp. Referenced by init().
00286 {
00287 // no vb to setup, now..
00288 /* if (!_ColorScheme)
00289 {
00290 _Mat.setColor(_Color);
00291 }
00292 else
00293 {
00294 _Mat.setColor(CRGBA::White);
00295 } */
00296 }
|
|
|
==================================================================================
Implements NL3D::CPSTexturedParticle. Definition at line 249 of file ps_quad.cpp. References NL3D::CMaterial::setTexture(), and NL3D::CPSMultiTexturedParticle::touch(). Referenced by init().
|
|
|
================================================================================== update the material if the global color of the system is variable Definition at line 520 of file ps_quad.cpp. References NL3D::CPSMaterial::forceModulateConstantColor(), NL3D::CParticleSystem::getColorAttenuationScheme(), NL3D::CParticleSystem::getForceGlobalColorLightingFlag(), NL3D::CParticleSystem::getGlobalColor(), NL3D::CParticleSystem::getGlobalColorLighted(), NL3D::CParticleSystemProcess::getOwner(), NL3D::CPSMultiTexturedParticle::isMultiTextureEnabled(), NL3D::CParticleSystem::isUserColorUsed(), NLMISC::CRGBA::modulateFromColor(), nlassert, NL3D::CMaterial::setColor(), NL3D::CPSMultiTexturedParticle::setupMaterial(), and NL3D::CPSParticle::usesGlobalColorLighting(). Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFaceLookAtHelper::drawLookAt(), and NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion().
00521 {
00522 nlassert(_Owner && _Owner->getOwner());
00523 CParticleSystem &ps = *(_Owner->getOwner());
00524 if (isMultiTextureEnabled())
00525 {
00526 setupMaterial(_Tex, drv, _Mat);
00527 if (ps.getForceGlobalColorLightingFlag() || usesGlobalColorLighting())
00528 {
00529 _Mat.setColor(ps.getGlobalColorLighted());
00530 }
00531 else
00532 {
00533 _Mat.setColor(ps.getGlobalColor());
00534 }
00535 }
00536 else
00537 {
00539 if (_ColorScheme != NULL &&
00540 (ps.getColorAttenuationScheme() != NULL ||
00541 ps.isUserColorUsed() ||
00542 ps.getForceGlobalColorLightingFlag() ||
00543 usesGlobalColorLighting()
00544 )
00545 )
00546 {
00547 if (ps.getForceGlobalColorLightingFlag() || usesGlobalColorLighting())
00548 {
00549 CPSMaterial::forceModulateConstantColor(true, ps.getGlobalColorLighted());
00550 }
00551 else
00552 {
00553 CPSMaterial::forceModulateConstantColor(true, ps.getGlobalColor());
00554 }
00555 }
00556 else
00557 {
00558 forceModulateConstantColor(false);
00559 NLMISC::CRGBA col;
00560 if (ps.getForceGlobalColorLightingFlag() || usesGlobalColorLighting())
00561 {
00562 col.modulateFromColor(ps.getGlobalColorLighted(), _Color);
00563 }
00564 else if (ps.getColorAttenuationScheme() != NULL || ps.isUserColorUsed())
00565 {
00566 col.modulateFromColor(ps.getGlobalColor(), _Color);
00567 }
00568 else
00569 {
00570 col = _Color;
00571 }
00572 _Mat.setColor(col);
00573 }
00574 }
00575 }
|
|
||||||||||||||||||||
|
calculate current color and texture coordinate before any rendering size can't be higher that quadBufSize ... Definition at line 386 of file ps_quad.cpp. References NL3D::FillQuadCoords(), NL3D::FillQuadCoordsLocalTime(), NL3D::CVertexBuffer::getColorPointer(), NL3D::CParticleSystemProcess::getOwner(), NL3D::CParticleSystem::getSystemDate(), NL3D::CVertexBuffer::getTexCoordPointer(), NL3D::CPSMultiTexturedParticle::getUseLocalDate(), NL3D::CPSMultiTexturedParticle::getUseLocalDateAlt(), NL3D::CVertexBuffer::getVertexSize(), NL3D::CPSMultiTexturedParticle::isAlternateTextureUsed(), NL3D::CPSAttribMaker< sint32 >::make(), NL3D::CPSAttribMaker< CRGBA >::make4(), nlassert, quadBufSize, sint32, size, stride, uint32, uint8, NL3D::CTextureGrouped::TFourUV::uv0, NL3D::CTextureGrouped::TFourUV::uv1, NL3D::CTextureGrouped::TFourUV::uv2, NL3D::CTextureGrouped::TFourUV::uv3, and NLMISC::CVector2f::x. Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFaceLookAtHelper::drawLookAt(), and NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion().
00387 {
00388 nlassert(_Owner);
00389
00390 if (!size) return;
00391
00392 if (_ColorScheme)
00393 {
00394 // compute the colors, each color is replicated 4 times
00395 _ColorScheme->make4(_Owner, startIndex, vb.getColorPointer(), vb.getVertexSize(), size, srcStep);
00396 }
00397
00398
00399 if (_TexGroup) // if it has a constant texture we are sure it has been setupped before...
00400 {
00401 sint32 textureIndex[quadBufSize];
00402 const uint32 stride = vb.getVertexSize(), stride2 = stride << 1, stride3 = stride2 + stride, stride4 = stride2 << 1;
00403 uint8 *currUV = (uint8 *) vb.getTexCoordPointer();
00404
00405
00406 const sint32 *currIndex;
00407 uint32 currIndexIncr;
00408
00409 if (_TextureIndexScheme)
00410 {
00411 currIndex = (sint32 *) _TextureIndexScheme->make(_Owner, startIndex, textureIndex, sizeof(sint32), size, true, srcStep);
00412 currIndexIncr = 1;
00413 }
00414 else
00415 {
00416 currIndex = &_TextureIndex;
00417 currIndexIncr = 0;
00418 }
00419
00420 uint32 left = size;
00421 while (left--)
00422 {
00423 // for now, we don't make texture index wrapping
00424 const CTextureGrouped::TFourUV &uvGroup = _TexGroup->getUVQuad((uint32) *currIndex);
00425
00426 // copy the 4 uv's for this face
00427 *(CUV *) currUV = uvGroup.uv0;
00428 *(CUV *) (currUV + stride) = uvGroup.uv1;
00429 *(CUV *) (currUV + stride2) = uvGroup.uv2;
00430 *(CUV *) (currUV + stride3) = uvGroup.uv3;
00431
00432 // point the next face
00433 currUV += stride4;
00434 currIndex += currIndexIncr;
00435 }
00436 }
00437
00438 nlassert(_Owner && _Owner->getOwner());
00439 const float date= (float) _Owner->getOwner()->getSystemDate();
00440
00441
00443
00444 if (CPSMultiTexturedParticle::isMultiTextureEnabled())
00445 {
00446
00447 // perform tex1 animation if needed
00448 if (!_TexGroup) // doesn't work with texGroup enabled
00449 {
00450 if (!isAlternateTextureUsed())
00451 {
00452 if (_Tex && (_TexScroll[0].x != 0 || _TexScroll[0].y != 0))
00453 {
00454 // animation of texture 1 with main speed
00455 if (!getUseLocalDate())
00456 {
00457 FillQuadCoords((uint8 *) vb.getTexCoordPointer(0, 0), vb.getVertexSize(), _TexScroll[0], date, size);
00458 }
00459 else
00460 {
00461 FillQuadCoordsLocalTime((uint8 *) vb.getTexCoordPointer(0, 0), vb.getVertexSize(), _TexScroll[0], *_Owner, startIndex, size, srcStep);
00462 }
00463 }
00464 }
00465 else
00466 {
00467 if (_Tex && (_TexScrollAlternate[0].x != 0 || _TexScrollAlternate[0].y != 0))
00468 {
00469 // animation of texture 1 with alternate speed
00470 if (!getUseLocalDateAlt())
00471 {
00472 FillQuadCoords((uint8 *) vb.getTexCoordPointer(0, 0), vb.getVertexSize(), _TexScrollAlternate[0], date, size);
00473 }
00474 else
00475 {
00476 FillQuadCoordsLocalTime((uint8 *) vb.getTexCoordPointer(0, 0), vb.getVertexSize(), _TexScrollAlternate[0], *_Owner, startIndex, size, srcStep);
00477 }
00478 }
00479 }
00480 }
00481
00482 // perform tex2 animation if needed
00483 if (!isAlternateTextureUsed())
00484 {
00485 if (_Texture2 && (_TexScroll[1].x != 0 || _TexScroll[1].y != 0))
00486 {
00487 // animation of texture 2 with main speed
00488 if (!getUseLocalDate())
00489 {
00490 FillQuadCoords((uint8 *) vb.getTexCoordPointer(0, 1), vb.getVertexSize(), _TexScroll[1], date, size);
00491 }
00492 else
00493 {
00494 FillQuadCoordsLocalTime((uint8 *) vb.getTexCoordPointer(0, 1), vb.getVertexSize(), _TexScroll[1], *_Owner, startIndex, size, srcStep);
00495 }
00496 }
00497 }
00498 else
00499 {
00500 if (_AlternateTexture2 && (_TexScrollAlternate[1].x != 0 || _TexScrollAlternate[1].y != 0))
00501 {
00502 // animation of texture 2 with alternate speed
00503 if (!getUseLocalDateAlt())
00504 {
00505 FillQuadCoords((uint8 *) vb.getTexCoordPointer(0, 1), vb.getVertexSize(), _TexScrollAlternate[1], date, size);
00506 }
00507 else
00508 {
00509 FillQuadCoordsLocalTime((uint8 *) vb.getTexCoordPointer(0, 1), vb.getVertexSize(), _TexScrollAlternate[1], *_Owner, startIndex, size, srcStep);
00510 }
00511 }
00512 }
00513
00514 }
00515 }
|
|
|
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(), NL3D::CPSShockWave::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(), 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 1033 of file ps_located.h. Referenced by NL3D::CPSLocatedBindable::isActive(), and NL3D::CPSLocatedBindable::setActive(). |
|
|
|
|
Definition at line 644 of file ps_particle_basic.h. Referenced by NL3D::CPSMultiTexturedParticle::getBumpFactor(), NL3D::CPSMultiTexturedParticle::setBumpFactor(), and NL3D::CPSMultiTexturedParticle::setupMaterial(). |
|
|
Definition at line 226 of file ps_particle_basic.h. |
|
|
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(). |
|
|
Definition at line 628 of file ps_particle_basic.cpp. Referenced by NL3D::CPSMultiTexturedParticle::areBasicCapsForced(), NL3D::CPSMultiTexturedParticle::forceBasicCaps(), and NL3D::CPSMultiTexturedParticle::setupMaterial(). |
|
|
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 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(). |
|
|
texture scrolling
Definition at line 622 of file ps_particle_basic.h. Referenced by NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::getScrollSpeed(), and NL3D::CPSMultiTexturedParticle::setScrollSpeed(). |
|
|
alternate texture scrollMultiTextureEnabled
Definition at line 624 of file ps_particle_basic.h. Referenced by NL3D::CPSMultiTexturedParticle::enableAlternateTex(), NL3D::CPSMultiTexturedParticle::getAlternateScrollSpeed(), and NL3D::CPSMultiTexturedParticle::setAlternateScrollSpeed(). |
|
|
|
Definition at line 480 of file ps_particle_basic.h. Referenced by NL3D::CPSTexturedParticle::getTextureIndex(), and NL3D::CPSTexturedParticle::setTextureIndex(). |
|
|
|
the various kind of vertex buffers we need for quads
Definition at line 53 of file ps_quad.cpp. |
|
|
Definition at line 54 of file ps_quad.cpp. |
|
|
Definition at line 55 of file ps_quad.cpp. |
|
|
Definition at line 57 of file ps_quad.cpp. |
|
|
Definition at line 58 of file ps_quad.cpp. |
|
|
Definition at line 63 of file ps_quad.cpp. |
|
|
Definition at line 68 of file ps_quad.cpp. |
|
|
Definition at line 62 of file ps_quad.cpp. |
|
|
Definition at line 67 of file ps_quad.cpp. |
|
|
Definition at line 56 of file ps_quad.cpp. |
|
|
Definition at line 61 of file ps_quad.cpp. |
|
|
Definition at line 66 of file ps_quad.cpp. |
|
|
Definition at line 60 of file ps_quad.cpp. |
|
|
Definition at line 65 of file ps_quad.cpp. |
1.3.6