#include <ps_face.h>
Inheritance diagram for NL3D::CPSFace:
^ y | 0 / \ / \ 3 1--> x \ / \ / 2 If all particle must rotate the same, but with a rotattionnal bias, a hint can be provided, so that there are batch of particle that share the same orientation. The users must give the number of various phase This is the fastest. Other cases need an attribute maker that produce a couple of vectors , giving the x & y direction of the local basis (plane particle)
Definition at line 71 of file ps_face.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) |
uint32 | checkHintRotateTheSame (float &min, float &max) const |
NLMISC::CVector | computeI (void) const |
NLMISC::CVector | computeJ (void) const |
NLMISC::CVector | computeK (void) const |
CPSFace (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. | |
void | disableHintRotateTheSame (void) |
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 | |
CPlaneBasis | getPlaneBasis (void) const |
get the constant basis | |
const CPSAttribMaker< CPlaneBasis > * | getPlaneBasisScheme (void) const |
get the plane basis scheme, (NULL if none) const version | |
CPSAttribMaker< CPlaneBasis > * | getPlaneBasisScheme (void) |
get the plane basis scheme, (NULL if none) | |
virtual uint32 | getPriority (void) const |
return priority | |
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 () |
from CPSParticle : return true if there are lightable faces in the object | |
virtual bool | hasOpaqueFaces (void) |
================================================================================== | |
virtual bool | hasParticles (void) const |
return true if this located bindable derived class holds alive particles | |
virtual bool | hasTransparentFaces (void) |
================================================================================== | |
void | hintRotateTheSame (uint32 nbConfiguration, float minAngularVelocity=NLMISC::Pi, float maxAngularVelocity=NLMISC::Pi) |
====================================================================================== | |
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 | |
NLMISC_DECLARE_CLASS (CPSFace) | |
virtual void | notifyTargetRemoved (CPSLocated *ptr) |
*************************************************************************************** | |
virtual void | releaseAllRef () |
*************************************************************************************** | |
virtual void | releaseRefTo (const CParticleSystemProcess *other) |
void | serial (NLMISC::IStream &f) throw (NLMISC::EStream) |
====================================================================================== | |
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 | serialPlaneBasisScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
=================================================================================== | |
void | serialSizeScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
serialization. We choose a different name because of multiple-inheritance | |
void | serialTextureScheme (NLMISC::IStream &f) throw (NLMISC::EStream) |
=================================================================================== | |
void | setActive (bool active) |
Activate / Deactivate this object. When not active, the owning system won't try to call the 'step' method. | |
void | 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 | setPlaneBasis (const CPlaneBasis &basis) |
=================================================================================== | |
void | setPlaneBasisScheme (CPSAttribMaker< CPlaneBasis > *basisMaker) |
=================================================================================== | |
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 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) |
virtual void | deleteElement (uint32 index) |
====================================================================================== | |
void | deletePlaneBasisElement (uint32 index) |
void | deleteSizeElement (uint32 index) |
void | deleteTextureIndexElement (uint32 index) |
void | displayIcon2d (const NLMISC::CVector tab[], uint nbSegs, float scale) |
*************************************************************************************** | |
void | fillIndexesInPrecompBasis (void) |
====================================================================================== | |
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 * | getPlaneBasisOwner (void) |
if this is false, constant size will be used instead of a scheme deriver must return their owner there | |
virtual CPSLocated * | getSizeOwner (void) |
deriver must return their owner there | |
virtual CPSLocated * | getTextureIndexOwner (void) |
deriver must return their owner there | |
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) |
virtual void | newElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
====================================================================================== | |
void | newPlaneBasisElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
void | newSizeElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
void | newTextureIndexElement (CPSLocated *emitterLocated, uint32 emitterIndex) |
void | notifyOwnerMaxNumFacesChanged (void) const |
virtual void | resize (uint32 size) |
====================================================================================== | |
void | resizeColor (uint32 size) |
void | resizePlaneBasis (uint32 size) |
void | resizeSize (uint32 size) |
void | resizeTextureIndex (uint32 size) |
virtual void | setOwner (CPSLocated *psl) |
*************************************************************************************** | |
void | setupMultiTexEnv (TOperator op, ITexture *tex1, ITexture *tex2, CMaterial &mat) |
virtual void | step (TPSProcessPass pass, TAnimationTime ellapsedTime, TAnimationTime realEllapsedTime) |
====================================================================================== | |
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) |
Protected Attributes | |
bool | _Active |
TOperator | _AlternateOp |
NLMISC::CSmartPtr< ITexture > | _AlternateTexture2 |
float | _BumpFactor |
CRGBA | _Color |
CPSAttribMaker< CRGBA > * | _ColorScheme |
uint32 | _ExternID |
CPSVector< uint32 >::V | _IndexInPrecompBasis |
this contain an index in _PrecompBasis for each particle | |
TPSLod | _LOD |
tells when this object must be dealt with | |
TOperator | _MainOp |
CMaterial | _Mat |
float | _MaxAngularVelocity |
float | _MinAngularVelocity |
uint8 | _MultiTexState |
std::string | _Name |
CPSLocated * | _Owner |
float | _ParticleSize |
CPlaneBasis | _PlaneBasis |
CPSAttribMaker< CPlaneBasis > * | _PlaneBasisScheme |
CPSVector< CPlaneBasisPair >::V | _PrecompBasis |
a set of precomp basis, before and after transfomation in world space, used if the hint 'RotateTheSame' has been called | |
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 | CPSFaceHelper |
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 face you can give a non-animated texture here Definition at line 206 of file ps_face.cpp.
|
|
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 {} |
|
check wether a call to hintRotateTheSame was performed
Implements NL3D::CPSHintParticleRotateTheSame. Definition at line 112 of file ps_face.h. References _MaxAngularVelocity, _MinAngularVelocity, _PrecompBasis, min, and uint32.
00113 { 00114 min = _MinAngularVelocity; 00115 max = _MaxAngularVelocity; 00116 return _PrecompBasis.size(); 00117 } |
|
==================================================================================
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 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(), NL3D::CPSQuad::deleteElement(), NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSFanLight::deleteElement(), and NL3D::CPSDot::deleteElement().
00238 { 00239 if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->deleteElement(index); 00240 } |
|
======================================================================================
Reimplemented from NL3D::CPSQuad. Definition at line 380 of file ps_face.cpp. References _IndexInPrecompBasis, _PrecompBasis, NL3D::CPSRotated3DPlaneParticle::deletePlaneBasisElement(), NL3D::CPSLocated::getSize(), index, and uint32.
00381 { 00382 CPSQuad::deleteElement(index); 00383 deletePlaneBasisElement(index); 00384 if (_PrecompBasis.size()) // do we use precomputed basis ? 00385 { 00386 // replace ourself by the last element... 00387 _IndexInPrecompBasis[index] = _IndexInPrecompBasis[_Owner->getSize() - 1]; 00388 } 00389 } |
|
Definition at line 703 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme, NL3D::CPSAttribMaker< CPlaneBasis >::deleteElement(), NL3D::CPSAttribMaker< CPlaneBasis >::hasMemory(), index, and uint32. Referenced by NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSMesh::deleteElement(), and deleteElement().
00704 { 00705 if (_PlaneBasisScheme && _PlaneBasisScheme->hasMemory()) _PlaneBasisScheme->deleteElement(index); 00706 } |
|
Definition at line 295 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSAttribMaker< float >::deleteElement(), NL3D::CPSAttribMaker< float >::hasMemory(), index, and uint32. Referenced by NL3D::CPSShockWave::deleteElement(), NL3D::CPSRibbonLookAt::deleteElement(), NL3D::CPSRibbon::deleteElement(), NL3D::CPSQuad::deleteElement(), NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSMesh::deleteElement(), and NL3D::CPSFanLight::deleteElement().
00296 { 00297 if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->deleteElement(index); 00298 } |
|
Definition at line 489 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSAttribMaker< sint32 >::deleteElement(), NL3D::CPSAttribMaker< sint32 >::hasMemory(), index, and uint32. Referenced by NL3D::CPSShockWave::deleteElement(), and NL3D::CPSQuad::deleteElement().
00490 { 00491 if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->deleteElement(index); 00492 } |
|
Force the Auto-LOD to be disbaled. When set to false, the default behaviour set in the system is used.
Definition at line 137 of file ps_particle_basic.h. References NL3D::CPSParticle::_DisableAutoLOD.
00137 { _DisableAutoLOD = disable; } |
|
disable the hint 'hintRotateTheSame' The previous set scheme for roation is used
Implements NL3D::CPSHintParticleRotateTheSame. Definition at line 102 of file ps_face.h. References hintRotateTheSame().
00103 { 00104 hintRotateTheSame(0); 00105 } |
|
*************************************************************************************** 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 } |
|
======================================================================================
Definition at line 354 of file ps_face.cpp. References _IndexInPrecompBasis, _PrecompBasis, NL3D::CPSLocated::getMaxSize(), and uint32. Referenced by hintRotateTheSame().
00355 { 00356 const uint32 nbConf = _PrecompBasis.size(); 00357 if (_Owner) 00358 { 00359 _IndexInPrecompBasis.resize( _Owner->getMaxSize() ); 00360 } 00361 for (CPSVector<uint32>::V::iterator it = _IndexInPrecompBasis.begin(); it != _IndexInPrecompBasis.end(); ++it) 00362 { 00363 *it = rand() % nbConf; 00364 } 00365 } |
|
*************************************************************************************** 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 NL3D::CPSQuad::updateMatBeforeRendering().
00574 { 00575 if (force) 00576 { 00578 _Mat.texConstantColor(1, col); 00579 _Mat.texEnvOpRGB(1, CMaterial::Modulate); 00580 _Mat.texEnvOpAlpha(1, CMaterial::Modulate); 00581 _Mat.texEnvArg0RGB(1, CMaterial::Previous, CMaterial::SrcColor); 00582 _Mat.texEnvArg1RGB(1, CMaterial::Constant, CMaterial::SrcColor); 00583 _Mat.texEnvArg0Alpha(1, CMaterial::Previous, CMaterial::SrcAlpha); 00584 _Mat.texEnvArg1Alpha(1, CMaterial::Constant, CMaterial::SrcAlpha); 00585 forceTexturedMaterialStages(2); 00586 } 00587 else 00588 { 00589 if (_Mat.getTexture(1) != NULL) 00590 { 00591 _Mat.setTexture(1, NULL); 00592 } 00593 } 00594 } |
|
=================================================================================== This setup n stage of a material with at least texture.
Definition at line 598 of file ps_particle_basic.cpp. References NL3D::CMaterial::getTexture(), NL3D::IDRV_MAT_MAXTEXTURES, NL3D::CMaterial::setTexture(), and uint. Referenced by NL3D::CPSDot::draw(), NL3D::CPSMaterial::forceModulateConstantColor(), and NL3D::CPSFanLight::setupMaterial().
00599 { 00600 ITexture *blankTex = NULL; 00601 uint k; 00602 for (k = 0; k < numStages; ++k) 00603 { 00604 if (_Mat.getTexture(k) == NULL) 00605 { 00606 if (!blankTex) 00607 { 00608 blankTex = CTextureMem::Create1x1WhiteTex(); 00609 } 00610 _Mat.setTexture(k, blankTex); 00611 } 00612 } 00613 for (; k < IDRV_MAT_MAXTEXTURES; ++k) 00614 { 00615 if (_Mat.getTexture(k) != NULL) 00616 { 00617 _Mat.setTexture(k, NULL); 00618 } 00619 } 00620 } |
|
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(), NL3D::CPSQuad::hasTransparentFaces(), NL3D::CPSFanLight::hasTransparentFaces(), and NL3D::CPSDot::hasTransparentFaces().
00552 { 00553 if (_Mat.getBlend()) 00554 { 00555 CMaterial::TBlend srcBlend = _Mat.getSrcBlend(); 00556 CMaterial::TBlend destBlend = _Mat.getDstBlend(); 00557 00558 if (srcBlend == CMaterial::one && destBlend == CMaterial::one) return add; 00559 if (srcBlend == CMaterial::zero && destBlend == CMaterial::srccolor) return modulate; 00560 if (srcBlend == CMaterial::srcalpha && destBlend == CMaterial::invsrcalpha) return alphaBlend; 00561 00562 // unrecognized mode 00563 nlassert(0); 00564 return alphaTest; // to avoid a warning only ... 00565 } 00566 else 00567 { 00568 return alphaTest; 00569 } 00570 } |
|
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, NL3D::CPSQuad::VBCol, NL3D::CPSQuad::VBFullMask, NL3D::CPSQuad::VBTex, NL3D::CPSQuad::VBTex2, NL3D::CPSQuad::VBTex2Animated, NL3D::CPSQuad::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; } |
|
get the constant basis
Definition at line 678 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasis.
00678 { return _PlaneBasis; } |
|
if this is false, constant size will be used instead of a scheme deriver must return their owner there
Implements NL3D::CPSRotated3DPlaneParticle. Definition at line 133 of file ps_face.h.
00133 { return _Owner; } |
|
get the plane basis scheme, (NULL if none) const version
Definition at line 673 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme.
00673 { return _PlaneBasisScheme; } |
|
get the plane basis scheme, (NULL if none) Set a constant basis for all particles
Definition at line 670 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme.
00670 { return _PlaneBasisScheme; } |
|
return priority
Implements NL3D::CPSLocatedBindable. Definition at line 66 of file ps_particle_basic.h. References uint32.
00066 { return 1000; }
|
|
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 NL3D::CPSQuad::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 NL3D::CPSQuad::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; } |
|
from CPSParticle : return true if there are lightable faces in the object
Implements NL3D::CPSParticle. Definition at line 120 of file ps_face.h.
00120 { return false; } |
|
==================================================================================
Implements NL3D::CPSParticle. Definition at line 232 of file ps_quad.cpp. References NL3D::CPSQuad::hasTransparentFaces(). Referenced by 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 NL3D::CPSQuad::hasOpaqueFaces(), and step().
00227 { 00228 return getBlendingMode() != CPSMaterial::alphaTest ; 00229 } |
|
====================================================================================== Tells that all faces are turning in the same manner, and only have a rotationnal bias This is faster then other method. Any previous set scheme for 3d rotation is kept.
Implements NL3D::CPSHintParticleRotateTheSame. Definition at line 328 of file ps_face.cpp. References _MaxAngularVelocity, _MinAngularVelocity, _PrecompBasis, fillIndexesInPrecompBasis(), NL3D::MakeRandomUnitVect(), uint, uint32, and v. Referenced by disableHintRotateTheSame().
00332 { 00333 _MinAngularVelocity = minAngularVelocity; 00334 _MaxAngularVelocity = maxAngularVelocity; 00335 _PrecompBasis.resize(nbConfiguration); 00336 if (nbConfiguration) 00337 { 00338 // each precomp basis is created randomly; 00339 for (uint k = 0; k < nbConfiguration; ++k) 00340 { 00341 CVector v = MakeRandomUnitVect(); 00342 _PrecompBasis[k].Basis = CPlaneBasis(v); 00343 _PrecompBasis[k].Axis = MakeRandomUnitVect(); 00344 _PrecompBasis[k].AngularVelocity = minAngularVelocity 00345 + (rand() % 20000) / 20000.f * (maxAngularVelocity - minAngularVelocity); 00346 00347 } 00348 // we need to do this because nbConfs may have changed 00349 fillIndexesInPrecompBasis(); 00350 } 00351 } |
|
==================================================================================
Definition at line 238 of file ps_quad.cpp. References NL3D::CMaterial::setDoubleSided(), NL3D::CMaterial::setLighting(), NL3D::CPSQuad::updateMatAndVbForColor(), and NL3D::CPSQuad::updateMatAndVbForTexture(). Referenced by NL3D::CPSQuad::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 NL3D::CPSQuad::quadBufSize, NL3D::CVertexBuffer::setNumVertices(), NL3D::SetupQuadVBTexCoords(), NL3D::CVertexBuffer::setVertexFormat(), uint, uint32, NL3D::CPSQuad::VBCol, NL3D::CPSQuad::VBTex, NL3D::CPSQuad::VBTex2, NL3D::CPSQuad::VBTex2Animated, and NL3D::CPSQuad::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 NL3D::CPSQuad::getNeededVB(), and NL3D::CPSQuad::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 NL3D::CPSQuad::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(), NL3D::CPSQuad::newElement(), NL3D::CPSConstraintMesh::newElement(), NL3D::CPSFanLight::newElement(), and NL3D::CPSDot::newElement().
00234 { 00235 if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->newElement(emitterLocated, emitterIndex); 00236 } |
|
======================================================================================
Reimplemented from NL3D::CPSQuad. Definition at line 368 of file ps_face.cpp. References _IndexInPrecompBasis, _PrecompBasis, NL3D::CPSLocated::getNewElementIndex(), NL3D::CPSRotated3DPlaneParticle::newPlaneBasisElement(), and uint32.
00369 { 00370 CPSQuad::newElement(emitterLocated, emitterIndex); 00371 newPlaneBasisElement(emitterLocated, emitterIndex); 00372 const uint32 nbConf = _PrecompBasis.size(); 00373 if (nbConf) // do we use precomputed basis ? 00374 { 00375 _IndexInPrecompBasis[_Owner->getNewElementIndex()] = rand() % nbConf; 00376 } 00377 } |
|
Definition at line 699 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme, NL3D::CPSAttribMaker< CPlaneBasis >::hasMemory(), NL3D::CPSAttribMaker< CPlaneBasis >::newElement(), and uint32. Referenced by NL3D::CPSConstraintMesh::newElement(), NL3D::CPSMesh::newElement(), and newElement().
00700 { 00701 if (_PlaneBasisScheme && _PlaneBasisScheme->hasMemory()) _PlaneBasisScheme->newElement(emitterLocated, emitterIndex); 00702 } |
|
Definition at line 291 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSAttribMaker< float >::hasMemory(), NL3D::CPSAttribMaker< float >::newElement(), and uint32. Referenced by NL3D::CPSShockWave::newElement(), NL3D::CPSRibbonLookAt::newElement(), NL3D::CPSRibbon::newElement(), NL3D::CPSQuad::newElement(), NL3D::CPSConstraintMesh::newElement(), NL3D::CPSMesh::newElement(), and NL3D::CPSFanLight::newElement().
00292 { 00293 if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->newElement(emitterLocated, emitterIndex); 00294 } |
|
Definition at line 485 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSAttribMaker< sint32 >::hasMemory(), NL3D::CPSAttribMaker< sint32 >::newElement(), and uint32. Referenced by NL3D::CPSShockWave::newElement(), and NL3D::CPSQuad::newElement().
00486 { 00487 if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->newElement(emitterLocated, emitterIndex); 00488 } |
|
|
|
Shortcut to notify that the max number of faces has changed This must be called when a geometric property of the particle has been modified This needn't to be called during CPSParticle::resize overrides Definition at line 151 of file ps_particle_basic.h. References NL3D::CPSLocated::notifyMaxNumFacesChanged(). Referenced by NL3D::CPSFanLight::setNbFans(), 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 {} |
|
======================================================================================
Reimplemented from NL3D::CPSQuad. Definition at line 392 of file ps_face.cpp. References _IndexInPrecompBasis, _PrecompBasis, nlassert, NL3D::CPSRotated3DPlaneParticle::resizePlaneBasis(), size, and uint32.
00393 { 00394 nlassert(size < (1 << 16)); 00395 resizePlaneBasis(size); 00396 if (_PrecompBasis.size()) // do we use precomputed basis ? 00397 { 00398 _IndexInPrecompBasis.resize(size); 00399 } 00400 CPSQuad::resize(size); 00401 } |
|
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(), NL3D::CPSQuad::resize(), NL3D::CPSConstraintMesh::resize(), NL3D::CPSFanLight::resize(), and NL3D::CPSDot::resize().
00242 { 00243 nlassert(size < (1 << 16)); 00244 if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->resize(size, getColorOwner()->getSize()); 00245 } |
|
Definition at line 707 of file ps_particle_basic.h. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme, NL3D::CPSRotated3DPlaneParticle::getPlaneBasisOwner(), NL3D::CPSAttribMaker< CPlaneBasis >::hasMemory(), nlassert, NL3D::CPSAttribMaker< CPlaneBasis >::resize(), size, and uint32. Referenced by NL3D::CPSConstraintMesh::resize(), NL3D::CPSMesh::resize(), and resize().
00708 { 00709 nlassert(size < (1 << 16)); 00710 if (_PlaneBasisScheme && _PlaneBasisScheme->hasMemory()) _PlaneBasisScheme->resize(size, getPlaneBasisOwner()->getSize()); 00711 } |
|
Definition at line 299 of file ps_particle_basic.h. References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSSizedParticle::getSize(), NL3D::CPSSizedParticle::getSizeOwner(), NL3D::CPSAttribMaker< float >::hasMemory(), nlassert, NL3D::CPSAttribMaker< float >::resize(), size, and uint32. Referenced by NL3D::CPSShockWave::resize(), NL3D::CPSRibbonLookAt::resize(), NL3D::CPSRibbon::resize(), NL3D::CPSQuad::resize(), NL3D::CPSConstraintMesh::resize(), NL3D::CPSMesh::resize(), and NL3D::CPSFanLight::resize().
00300 { 00301 nlassert(size < (1 << 16)); 00302 if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->resize(size, getSizeOwner()->getSize()); 00303 } |
|
Definition at line 493 of file ps_particle_basic.h. References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSTexturedParticle::getTextureIndexOwner(), NL3D::CPSAttribMaker< sint32 >::hasMemory(), nlassert, NL3D::CPSAttribMaker< sint32 >::resize(), size, and uint32. Referenced by NL3D::CPSShockWave::resize(), and NL3D::CPSQuad::resize().
00494 { 00495 nlassert(size < (1 << 16)); 00496 if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->resize(size, getTextureIndexOwner()->getSize() ); 00497 } |
|
======================================================================================
Reimplemented from NL3D::CPSQuad. Definition at line 285 of file ps_face.cpp. References uint32.
00286 { 00287 f.serialVersion(1); 00288 CPSQuad::serial(f); 00289 CPSRotated3DPlaneParticle::serialPlaneBasisScheme(f); 00290 00291 if (f.isReading()) 00292 { 00293 uint32 nbConfigurations; 00294 f.serial(nbConfigurations); 00295 if (nbConfigurations) 00296 { 00297 f.serial(_MinAngularVelocity, _MaxAngularVelocity); 00298 } 00299 hintRotateTheSame(nbConfigurations, _MinAngularVelocity, _MaxAngularVelocity); 00300 00301 init(); 00302 } 00303 else 00304 { 00305 uint32 nbConfigurations = _PrecompBasis.size(); 00306 f.serial(nbConfigurations); 00307 if (nbConfigurations) 00308 { 00309 f.serial(_MinAngularVelocity, _MaxAngularVelocity); 00310 } 00311 } 00312 } |
|
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 } |
|
===================================================================================
Definition at line 469 of file ps_particle_basic.cpp.
00470 { 00471 f.serialVersion(1); 00472 f.serialPolyPtr(_PlaneBasisScheme); 00473 bool usePlaneBasisScheme = _PlaneBasisScheme != NULL; 00474 if (!usePlaneBasisScheme) 00475 { 00476 f.serial(_PlaneBasis); 00477 } 00478 } |
|
serialization. We choose a different name because of multiple-inheritance
Definition at line 211 of file ps_particle_basic.cpp.
00212 { 00213 f.serialVersion(1); 00214 if (f.isReading()) 00215 { 00216 if (_SizeScheme) 00217 { 00218 delete _SizeScheme; 00219 _SizeScheme = NULL; 00220 } 00221 } 00222 bool useSizeScheme = _SizeScheme != NULL; 00223 f.serial(useSizeScheme); 00224 if (useSizeScheme) 00225 { 00226 f.serialPolyPtr(_SizeScheme); 00227 } 00228 else 00229 { 00230 f.serial(_ParticleSize); 00231 } 00232 }; |
|
===================================================================================
Definition at line 372 of file ps_particle_basic.cpp.
00373 { 00374 f.serialVersion(1); 00375 if (f.isReading()) 00376 { 00377 if (_TextureIndexScheme) 00378 { 00379 delete _TextureIndexScheme; 00380 _TextureIndexScheme = NULL; 00381 _Tex = NULL; 00382 _TexGroup = NULL; 00383 } 00384 } 00385 00386 bool useAnimatedTexture; 00387 if (!f.isReading()) 00388 { 00389 useAnimatedTexture = (_TexGroup != NULL); 00390 } 00391 f.serial(useAnimatedTexture); 00392 if (useAnimatedTexture) 00393 { 00394 if (f.isReading()) 00395 { 00396 CTextureGrouped *ptTex = NULL; 00397 f.serialPolyPtr(ptTex); 00398 _TexGroup = ptTex; 00399 } 00400 else 00401 { 00402 CTextureGrouped *ptTex = _TexGroup; 00403 f.serialPolyPtr(ptTex); 00404 } 00405 00406 bool useTextureIndexScheme = _TextureIndexScheme != NULL; 00407 f.serial(useTextureIndexScheme); 00408 if (useTextureIndexScheme) 00409 { 00410 f.serialPolyPtr(_TextureIndexScheme); 00411 _TextureIndex = 0; 00412 } 00413 else 00414 { 00415 f.serial(_TextureIndex); 00416 } 00417 } 00418 else 00419 { 00420 if (f.isReading()) 00421 { 00422 ITexture *ptTex = NULL; 00423 f.serialPolyPtr(ptTex); 00424 _Tex = ptTex; 00425 } 00426 else 00427 { 00428 ITexture *ptTex = _Tex; 00429 f.serialPolyPtr(ptTex); 00430 } 00431 } 00432 } |
|
Activate / Deactivate this object. When not active, the owning system won't try to call the 'step' method.
Definition at line 843 of file ps_located.h. References NL3D::CPSLocatedBindable::_Active. Referenced by NL3D::CParticleSystem::activateEmitters(), and NL3D::CParticleSystemInstanceUser::setActive().
00843 { _Active = active; } |
|
set 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 } |
|
===================================================================================
Definition at line 448 of file ps_particle_basic.cpp. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasis, and NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme.
00449 { 00450 delete _PlaneBasisScheme; 00451 _PlaneBasisScheme = NULL; 00452 _PlaneBasis = basis; 00453 } |
|
=================================================================================== Set an attribute maker that produce a basis It must have been allocated by new It will be deleted by this object Definition at line 439 of file ps_particle_basic.cpp. References NL3D::CPSRotated3DPlaneParticle::_PlaneBasisScheme, NL3D::CPSRotated3DPlaneParticle::getPlaneBasisOwner(), nlassert, and NL3D::CPSAttribMaker< T >::resize().
00440 { 00441 nlassert(basisMaker); 00442 delete _PlaneBasisScheme; 00443 _PlaneBasisScheme = basisMaker; 00444 if (getPlaneBasisOwner() && basisMaker->hasMemory()) basisMaker->resize(getPlaneBasisOwner()->getMaxSize(), getPlaneBasisOwner()->getSize()); 00445 } |
|
set 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 NL3D::CPSQuad::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 NL3D::CPSQuad::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 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 } |
|
====================================================================================== build index iterator draw the faces build index iterator Reimplemented from NL3D::CPSParticle. Definition at line 212 of file ps_face.cpp. References _IndexInPrecompBasis, _PrecompBasis, NL3D::CPSAttrib< T >::begin(), NL3D::CPSParticle::computeSrcStep(), NL3D::CPSLocated::getPos(), NL3D::CPSLocated::getSize(), NL3D::CPSQuad::hasOpaqueFaces(), NL3D::CPSQuad::hasTransparentFaces(), NL3D::PSBlendRender, NL3D::PSMotion, NL3D::PSSolidRender, NL3D::PSToolRender, NLMISC::CMatrix::rotate(), NL3D::CPSParticle::showTool(), NL3D::TAnimationTime, NL3D::TIteratorVectStep1616, uint, and uint32.
00213 { 00214 if (pass == PSToolRender) // edition mode only 00215 { 00216 showTool(); 00217 return; 00218 } 00219 else if (pass == PSMotion) 00220 { 00221 00222 if (_PrecompBasis.size()) // do we use precomputed basis ? 00223 { 00224 // rotate all precomputed basis 00225 for (CPSVector< CPlaneBasisPair >::V::iterator it = _PrecompBasis.begin(); it != _PrecompBasis.end(); ++it) 00226 { 00227 // not optimized at all, but this will apply to very few elements anyway... 00228 CMatrix mat; 00229 mat.rotate(CQuat(it->Axis, ellapsedTime * it->AngularVelocity)); 00230 CVector n = mat * it->Basis.getNormal(); 00231 it->Basis = CPlaneBasis(n); 00232 } 00233 } 00234 return; 00235 } 00236 else // check this is the right pass 00237 if (! 00238 ( (pass == PSBlendRender && hasTransparentFaces()) 00239 || (pass == PSSolidRender && hasOpaqueFaces()) 00240 ) 00241 ) 00242 { 00243 return; 00244 } 00245 00246 00247 00248 if (!_Owner->getSize()) return; 00249 uint32 step; 00250 uint numToProcess; 00251 computeSrcStep(step, numToProcess); 00252 if (!numToProcess) return; 00253 00254 00255 if (step == (1 << 16)) 00256 { 00258 CPSVector<uint32>::V::const_iterator indexIt = _IndexInPrecompBasis.begin(); 00259 00261 CPSFaceHelper::drawFaces(_Owner->getPos().begin(), 00262 indexIt, 00263 *this, 00264 numToProcess, 00265 step 00266 ); 00267 } 00268 else 00269 { 00271 CAdvance1616Iterator<CPSVector<uint32>::V::const_iterator, const uint32> 00272 indexIt(_IndexInPrecompBasis.begin(), 0, step); 00273 CPSFaceHelper::drawFaces(TIteratorVectStep1616(_Owner->getPos().begin(), 0, step), 00274 indexIt, 00275 *this, 00276 numToProcess, 00277 step 00278 ); 00279 } 00280 00281 } |
|
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 NL3D::CPSQuad::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 NL3D::CPSQuad::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, NL3D::CPSQuad::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(), NL3D::CPSQuad::updateMatBeforeRendering(), NL3D::CPSTailDot::updateMaterial(), NL3D::CPSRibbon::updateTexturedMaterial(), and NL3D::CPSRibbon::updateUntexturedMaterial().
00103 { return _UsesGlobalColorLighting; }
|
|
|
|
Reimplemented in NL3D::CPSForce. Definition at line 986 of file ps_located.h. |
|
Definition at line 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(). |
|
this contain an index in _PrecompBasis for each particle
Definition at line 143 of file ps_face.h. Referenced by deleteElement(), fillIndexesInPrecompBasis(), newElement(), resize(), and step(). |
|
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 137 of file ps_face.h. Referenced by checkHintRotateTheSame(), and hintRotateTheSame(). |
|
Definition at line 136 of file ps_face.h. Referenced by checkHintRotateTheSame(), and hintRotateTheSame(). |
|
|
Definition at line 1031 of file ps_located.h. |
|
|
|
|
|
a set of precomp basis, before and after transfomation in world space, used if the hint 'RotateTheSame' has been called
Definition at line 140 of file ps_face.h. Referenced by checkHintRotateTheSame(), deleteElement(), NL3D::CPSFaceHelper::drawFaces(), fillIndexesInPrecompBasis(), hintRotateTheSame(), newElement(), resize(), and step(). |
|
|
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. |