NL3D::CPSQuad Class Reference

#include <ps_quad.h>

Inheritance diagram for NL3D::CPSQuad:

NL3D::CPSParticle NL3D::CPSColoredParticle NL3D::CPSTexturedParticle NL3D::CPSMultiTexturedParticle NL3D::CPSSizedParticle NL3D::CPSMaterial NL3D::CPSLocatedBindable NLMISC::IStreamable NLMISC::IClassable NL3D::CPSFace NL3D::CPSFaceLookAt

Detailed Description

This abstract class holds what is needed with quad particles (CPSFaceLookAt, CPSFace) e.g Index and vertex buffer and method to setup them Material, and method to setup them

Definition at line 44 of file ps_quad.h.

Public Types

enum  { quadBufSize = 800 }
 The number of quad to batche for each driver call. More...

enum  TBlendingMode { add, modulate, alphaBlend, alphaTest }
 this enum summarize the useful modes for blending to the framebuffer More...

enum  TOperator {
  Add = 0, Modulate, Decal, EnvBumpMap,
  Last = 0xff
}
 we only use a useful set of operations More...


Public Member Functions

virtual void basisChanged (TPSMatrixMode systemBasis)
NLMISC::CVector computeI (void) const
NLMISC::CVector computeJ (void) const
NLMISC::CVector computeK (void) const
 CPSQuad (CSmartPtr< ITexture > tex=NULL)
 ==================================================================================

void disableAutoLOD (bool disable=true)
 Force the Auto-LOD to be disbaled. When set to false, the default behaviour set in the system is used.

virtual bool doesProduceBBox (void) const
virtual void draw (bool opaque)
 derivers draw the particles here

void enableAlternateTex (bool enabled=true)
void enableGlobalColorLighting (bool enabled)
void enableMultiTexture (bool enabled=true)
 when set to false, this discard the textures that have been set

void enableZTest (bool enabled)
 ===================================================================================

void enumTexs (std::vector< NLMISC::CSmartPtr< ITexture > > &dest)
virtual void enumTexs (std::vector< NLMISC::CSmartPtr< ITexture > > &dest, IDriver &drv)
void forceModulateConstantColor (bool force, const NLMISC::CRGBA &col=NLMISC::CRGBA::White)
 ===================================================================================

void forceTexturedMaterialStages (uint numStages)
 ===================================================================================

const NLMISC::CVector2fgetAlternateScrollSpeed (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)

IDrivergetDriver () const
 shortcut to get an instance of the driver

uint32 getExternID (void) const
 get the extern ID of this located bindable

const CFontGeneratorgetFontGenerator (void) const
 Shortcut to get the font generator if one was set (const version).

CFontGeneratorgetFontGenerator (void)
 Shortcut to get the font generator if one was set.

const CFontManagergetFontManager (void) const
 Shortcut to get the font manager if one was set (const version).

CFontManagergetFontManager (void)
 ***************************************************************************************

const NLMISC::CMatrixgetInvertedSysMat (void) const
 shortcut to get the inverted matrix of the system

const NLMISC::CMatrixgetInvertedViewMat (void) const
 shortcut to get the inverted view matrix

const NLMISC::CMatrixgetLocalToWorldMatrix () 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 CPSLocatedgetOwner (void) const
 get the located that owns this bindable (const version)

CPSLocatedgetOwner (void)
 get the located that owns this bindable

virtual uint32 getPriority (void) const
 return priority

const NLMISC::CVector2fgetScrollSpeed (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::CMatrixgetSysMat (void) const
 ***************************************************************************************

const ITexturegetTexture (void) const
ITexturegetTexture (void)
 get the constant texture

ITexturegetTexture2 ()
const ITexturegetTexture2 () const
 Get the main texture for multitexturing.

ITexturegetTexture2Alternate ()
const ITexturegetTexture2Alternate () const
 Get the alternate texture for multitexturing.

const CTextureGroupedgetTextureGroup (void) const
 get the texture group used if there's a texture scheme, const version. (if null, there's no texture animation)

CTextureGroupedgetTextureGroup (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::CMatrixgetViewMat (void) const
 shortcut to get the view matrix

virtual bool hasEmitters (void) const
 tells wether there are alive emitters

virtual bool hasLightableFaces ()=0
virtual bool hasOpaqueFaces (void)
 ==================================================================================

virtual bool hasParticles (void) const
 return true if this located bindable derived class holds alive particles

virtual bool hasTransparentFaces (void)
 ==================================================================================

bool isActive () const
bool isAlternateTexEnabled () const
bool isAutoLODDisabled () const
 Test wether Auto-LOD is disabled.

bool isMultiTextureEnabled () const
bool isZTestEnabled () const
 ===================================================================================

virtual void motionTypeChanged (bool parametric)
 called when a located has switch between incrmental / parametric motion. The default does nothing

virtual void notifyTargetRemoved (CPSLocated *ptr)
 ***************************************************************************************

virtual void releaseAllRef ()
 ***************************************************************************************

virtual void releaseRefTo (const CParticleSystemProcess *other)
void serialColorScheme (NLMISC::IStream &f) throw (NLMISC::EStream)
 serialization.

void serialMaterial (NLMISC::IStream &f) throw (NLMISC::EStream)
 ===================================================================================

void serialMultiTex (NLMISC::IStream &f) throw (NLMISC::EStream)
 serial this object

void serialSizeScheme (NLMISC::IStream &f) throw (NLMISC::EStream)
 serialization. We choose a different name because of multiple-inheritance

void serialTextureScheme (NLMISC::IStream &f) throw (NLMISC::EStream)
 ===================================================================================

void setActive (bool active)
 Activate / Deactivate this object. When not active, the owning system won't try to call the 'step' method.

void setAlternateScrollSpeed (uint stage, const NLMISC::CVector2f &sp)
void setAlternateTexOp (TOperator op)
 Set the operation for the alternate texture. Convert the texture to / from a bumpmap if needed.

void setBlendingMode (CPSMaterial::TBlendingMode mode)
 ===================================================================================

void setBumpFactor (float bumpFactor)
 Set a bump factor (when embm is used).

void setColor (NLMISC::CRGBA col)
 Set a constant color for the particles. remove any previous scheme.

void setColorScheme (CPSAttribMaker< CRGBA > *col)
void setExternID (uint32 id)
 ***************************************************************************************

void setLOD (TPSLod lod)
void setMainTexOp (TOperator op)
void setName (const std::string &name)
 set the located bindable name (edition purpose)

void setScrollSpeed (uint stage, const NLMISC::CVector2f &sp)
void setSize (float size)
 Set a constant size for the particles.

void setSizeScheme (CPSAttribMaker< float > *size)
void setTexture (CSmartPtr< ITexture > tex)
 ===================================================================================

void setTexture2 (ITexture *tex)
 Set the main texture for multitexturing. Convert the texture to / from a bumpmap if needed (so you just provide its heightmap).

void setTexture2Alternate (ITexture *tex)
 Set the alternate texture for multitexturing. It is used when the main operator is not supported by the gfx board.

void setTextureGroup (NLMISC::CSmartPtr< CTextureGrouped > texGroup)
 ===================================================================================

void setTextureIndex (sint32 index)
 ===================================================================================

void setTextureIndexScheme (CPSAttribMaker< sint32 > *animOrder)
 ===================================================================================

void setupDriverModelMatrix (void)
 shortcut to setup the model matrix (system basis or world basis)

void setupMaterial (ITexture *primary, IDriver *drv, CMaterial &mat)
void setUseLocalDate (bool use)
 Use the particle age rather than the global time to compute textures coordinates.

void setUseLocalDateAlt (bool use)
 Use the particle age rather than the global time to compute textures coordinates. (when alternate texture is used).

virtual void setZBias (float value)
virtual void showTool ()
 draw the particles for edition mode. The default behaviour just draw a wireframe model

virtual void step (TPSProcessPass pass, TAnimationTime ellapsedTime, TAnimationTime realEt)
virtual bool supportGlobalColorLighting () const
virtual void systemDateChanged ()
bool usesGlobalColorLighting ()

Static Public Member Functions

bool areBasicCapsForced ()
 test wether basic caps are forced

void forceBasicCaps (bool force=true)
void initVertexBuffers ()
 init the vertex buffers


Protected Types

enum  TMultiTexState {
  TouchFlag = 0x01, MultiTextureEnabled = 0x02, AlternateTextureEnabled = 0x04, AlternateTextureUsed = 0x08,
  EnvBumpMapUsed = 0x10, BasicCapsForced = 0x20, ScrollUseLocalDate = 0x40, ScrollUseLocalDateAlternate = 0x80
}
enum  VBType {
  VBCol = 0x0001, VBTex = 0x0002, VBTexAnimated = 0x0004, VBTex2 = 0x0008,
  VBTex2Animated = 0x0010, VBFullMask = 0x001f
}

Protected Member Functions

bool areBasicCapsForcedLocal () const
virtual void bounceOccured (uint32 index)
virtual bool completeBBox (NLMISC::CAABBox &box) const
 ==================================================================================

void computeSrcStep (uint32 &step, uint &numToProcess)
void deleteColorElement (uint32 index)
void deleteElement (uint32 index)
 this is inlined to save cost of call by derived class

void deleteSizeElement (uint32 index)
void deleteTextureIndexElement (uint32 index)
void displayIcon2d (const NLMISC::CVector tab[], uint nbSegs, float scale)
 ***************************************************************************************

void forceBasicCapsLocal (bool force)
virtual CPSLocatedgetColorOwner (void)
 deriver must return their owner there

CVertexBuffergetNeededVB ()
 get the vertex buffer that is needed for drawing

virtual CPSLocatedgetSizeOwner (void)
 deriver must return their owner there

virtual CPSLocatedgetTextureIndexOwner (void)
 deriver must return their owner there

virtual void init (void)
 ==================================================================================

bool isAlternateTextureUsed () const
 test wether the alternate texture is used

bool isEnvBumpMapUsed () const
bool isTouched ()
void newColorElement (CPSLocated *emitterLocated, uint32 emitterIndex)
void newElement (CPSLocated *emitterLocated, uint32 emitterIndex)
 this is inlined to save cost of call by derived class

void newSizeElement (CPSLocated *emitterLocated, uint32 emitterIndex)
void newTextureIndexElement (CPSLocated *emitterLocated, uint32 emitterIndex)
void notifyOwnerMaxNumFacesChanged (void) const
void resize (uint32 capacity)
 ==================================================================================

void resizeColor (uint32 size)
void resizeSize (uint32 size)
void resizeTextureIndex (uint32 size)
void serial (NLMISC::IStream &f) throw (NLMISC::EStream)
 DERIVERS MUST CALL this.

virtual void setOwner (CPSLocated *psl)
 ***************************************************************************************

void setupMultiTexEnv (TOperator op, ITexture *tex1, ITexture *tex2, CMaterial &mat)
void touch ()
void unTouch ()
virtual void updateMatAndVbForColor (void)
 update the material and the vb so that they match the color scheme. Inherited from CPSColoredParticle

virtual void updateMatAndVbForTexture (void)
 ==================================================================================

void updateMatBeforeRendering (IDriver *drv)
 ==================================================================================

void updateVbColNUVForRender (CVertexBuffer &vb, uint32 startIndex, uint32 numQuad, uint32 srcStep)
virtual ~CPSQuad ()
 ==================================================================================


Protected Attributes

bool _Active
TOperator _AlternateOp
NLMISC::CSmartPtr< ITexture_AlternateTexture2
float _BumpFactor
CRGBA _Color
CPSAttribMaker< CRGBA > * _ColorScheme
uint32 _ExternID
TPSLod _LOD
 tells when this object must be dealt with

TOperator _MainOp
CMaterial _Mat
uint8 _MultiTexState
std::string _Name
CPSLocated_Owner
float _ParticleSize
CPSAttribMaker< float > * _SizeScheme
CSmartPtr< ITexture_Tex
CSmartPtr< CTextureGrouped_TexGroup
NLMISC::CVector2f _TexScroll [2]
 texture scrolling

NLMISC::CVector2f _TexScrollAlternate [2]
 alternate texture scrollMultiTextureEnabled

NLMISC::CSmartPtr< ITexture_Texture2
sint32 _TextureIndex
CPSAttribMaker< sint32 > * _TextureIndexScheme

Static Protected Attributes

bool _ForceBasicCaps = false
CVertexBuffer _VBPos
 the various kind of vertex buffers we need for quads

CVertexBuffer _VBPosCol
CVertexBuffer _VBPosTex1
CVertexBuffer _VBPosTex1Anim
CVertexBuffer _VBPosTex1AnimCol
CVertexBuffer _VBPosTex1AnimColTex2
CVertexBuffer _VBPosTex1AnimColTex2Anim
CVertexBuffer _VBPosTex1AnimTex2
CVertexBuffer _VBPosTex1AnimTex2Anim
CVertexBuffer _VBPosTex1Col
CVertexBuffer _VBPosTex1ColTex2
CVertexBuffer _VBPosTex1ColTex2Anim
CVertexBuffer _VBPosTex1Tex2
CVertexBuffer _VBPosTex1Tex2Anim

Friends

class CPSLocated


Member Enumeration Documentation

anonymous enum
 

The number of quad to batche for each driver call.

Enumeration values:
quadBufSize 

Definition at line 165 of file ps_quad.h.

00165 { quadBufSize = 800 };

enum NL3D::CPSMaterial::TBlendingMode [inherited]
 

this enum summarize the useful modes for blending to the framebuffer

Enumeration values:
add 
modulate 
alphaBlend 
alphaTest 

Definition at line 809 of file ps_particle_basic.h.

enum NL3D::CPSMultiTexturedParticle::TMultiTexState [protected, inherited]
 

Enumeration values:
TouchFlag 
MultiTextureEnabled 
AlternateTextureEnabled 
AlternateTextureUsed 
EnvBumpMapUsed 
BasicCapsForced 
ScrollUseLocalDate 
ScrollUseLocalDateAlternate 

Definition at line 626 of file ps_particle_basic.h.

enum NL3D::CPSMultiTexturedParticle::TOperator [inherited]
 

we only use a useful set of operations

Enumeration values:
Add 
Modulate 
Decal 
EnvBumpMap 
Last 

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 };

enum NL3D::CPSQuad::VBType [protected]
 

Enumeration values:
VBCol 
VBTex 
VBTexAnimated 
VBTex2 
VBTex2Animated 
VBFullMask 

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         };


Constructor & Destructor Documentation

NL3D::CPSQuad::CPSQuad CSmartPtr< ITexture tex = NULL  ) 
 

==================================================================================

create the quad by giving a texture. This can't be a CTextureGrouped (for animation) animation must be set later by using setTextureScheme

Definition at line 204 of file ps_quad.cpp.

References init(), and NL3D::CPSTexturedParticle::setTexture().

00205 {
00206         setTexture(tex);
00207         init();
00208         // we don't init the _IndexBuffer for now, as it will be when resize is called
00209         if (CParticleSystem::getSerializeIdentifierFlag()) _Name = std::string("quad");
00210 }

NL3D::CPSQuad::~CPSQuad  )  [protected, virtual]
 

==================================================================================

Definition at line 214 of file ps_quad.cpp.

00215 {
00216 }


Member Function Documentation

bool NL3D::CPSMultiTexturedParticle::areBasicCapsForced  )  [inline, static, inherited]
 

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; }

bool NL3D::CPSMultiTexturedParticle::areBasicCapsForcedLocal  )  const [inline, protected, inherited]
 

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; }

virtual void NL3D::CPSLocatedBindable::basisChanged TPSMatrixMode  systemBasis  )  [inline, virtual, inherited]
 

Called when the basis of the owner changed. the default behaviour does nothing

Parameters:
newBasis : True if in the system basis, false for the world basis.

Reimplemented in NL3D::CPSForce.

Definition at line 968 of file ps_located.h.

00968 {}

virtual void NL3D::CPSLocatedBindable::bounceOccured uint32  index  )  [inline, protected, virtual, inherited]
 

a bounce occured, so some action could be done. The default behaviour does nothing

Parameters:
index the index of the element that bounced

Reimplemented in NL3D::CPSEmitter.

Definition at line 1011 of file ps_located.h.

References index, and uint32.

01011 {}

bool NL3D::CPSQuad::completeBBox NLMISC::CAABBox box  )  const [protected, virtual]
 

==================================================================================

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 }

NLMISC::CVector NL3D::CPSLocatedBindable::computeI void   )  const [inline, inherited]
 

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(); }

NLMISC::CVector NL3D::CPSLocatedBindable::computeJ void   )  const [inline, inherited]
 

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(); }

NLMISC::CVector NL3D::CPSLocatedBindable::computeK void   )  const [inline, inherited]
 

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(); }

void NL3D::CPSParticle::computeSrcStep uint32 step,
uint numToProcess
[protected, inherited]
 

System may have hand-tuned LOD, or auto LOD. This compute the number of particles that must really be displayed, and the src step that allow to go through the whole collection. The step in the source is in a fixed point 16:16 format

Definition at line 82 of file ps_particle_basic.cpp.

References NL3D::CPSParticle::_DisableAutoLOD, NLMISC::clamp(), NL3D::CParticleSystem::getAutoLODDegradationExponent(), NL3D::CParticleSystem::getAutoLODMode(), NL3D::CParticleSystem::getAutoLODStartDistPercent(), NL3D::CParticleSystem::getOneMinusCurrentLODRatio(), NL3D::CParticleSystemProcess::getOwner(), NL3D::CPSLocated::getSize(), NL3D::CParticleSystem::isAutoLODEnabled(), NL3D::CParticleSystem::isSharingEnabled(), nlassert, r, uint, and uint32.

Referenced by NL3D::CPSShockWave::draw(), NL3D::CPSConstraintMesh::draw(), NL3D::CPSFanLight::draw(), NL3D::CPSFaceLookAt::draw(), NL3D::CPSDot::draw(), NL3D::CPSTailDot::step(), NL3D::CPSRibbonLookAt::step(), NL3D::CPSRibbon::step(), and NL3D::CPSFace::step().

00083 {               
00084         nlassert(_Owner && _Owner->getOwner());
00085         const CParticleSystem &ps = *(_Owner->getOwner());
00086         if (_DisableAutoLOD || !ps.isAutoLODEnabled() || !ps.isSharingEnabled() || _Owner->getSize() == 0) // Should Auto-LOD be used ?
00087         {
00088                 step = (1 << 16);
00089                 numToProcess = _Owner->getSize();
00090         }
00091         else
00092         {
00093                 float oneMinusLODRatio = ps.getOneMinusCurrentLODRatio();
00094                 float LODRatio = 1.f - oneMinusLODRatio;  
00095                 if (LODRatio > ps.getAutoLODStartDistPercent())
00096                 {
00097                         float factor = (LODRatio - 1.f) / (ps.getAutoLODStartDistPercent() - 1.f);
00098                         NLMISC::clamp(factor, 0.f, 1.f);
00099                         float r = factor;
00100                         for (uint k = 1; k < ps.getAutoLODDegradationExponent(); ++k)
00101                         {
00102                                 r *= factor;
00103                         }
00104                         numToProcess = (uint) (_Owner->getSize() * r);
00105                         if (numToProcess < 1) { numToProcess = 1; }
00106 
00107                         step =   ps.getAutoLODMode() ?                             // skip or limit number, depending on the mode
00108                                 (_Owner->getSize() << 16) / numToProcess : // skip particles
00109                                 (1 << 16);                                                         // just display less particles
00110                 }
00111                 else
00112                 {
00113                         step = (1 << 16);
00114                         numToProcess = _Owner->getSize();
00115                 }
00116         }
00117 
00118 }

void NL3D::CPSColoredParticle::deleteColorElement uint32  index  )  [inline, protected, inherited]
 

Definition at line 237 of file ps_particle_basic.h.

References NL3D::CPSAttribMaker< CRGBA >::deleteElement(), NL3D::CPSAttribMaker< CRGBA >::hasMemory(), index, and uint32.

Referenced by NL3D::CPSTailDot::deleteElement(), NL3D::CPSShockWave::deleteElement(), NL3D::CPSRibbonLookAt::deleteElement(), NL3D::CPSRibbon::deleteElement(), deleteElement(), NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSFanLight::deleteElement(), and NL3D::CPSDot::deleteElement().

00238                 {
00239                         if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->deleteElement(index);
00240                 }

void NL3D::CPSQuad::deleteElement uint32  index  )  [inline, protected, virtual]
 

this is inlined to save cost of call by derived class

Implements NL3D::CPSParticle.

Reimplemented in NL3D::CPSFace, and NL3D::CPSFaceLookAt.

Definition at line 105 of file ps_quad.h.

References NL3D::CPSColoredParticle::deleteColorElement(), NL3D::CPSSizedParticle::deleteSizeElement(), NL3D::CPSTexturedParticle::deleteTextureIndexElement(), index, and uint32.

00106         {
00107                 deleteColorElement(index);
00108                 deleteSizeElement(index);
00109                 deleteTextureIndexElement(index);
00110         }

void NL3D::CPSSizedParticle::deleteSizeElement uint32  index  )  [inline, protected, inherited]
 

Definition at line 295 of file ps_particle_basic.h.

References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSAttribMaker< float >::deleteElement(), NL3D::CPSAttribMaker< float >::hasMemory(), index, and uint32.

Referenced by NL3D::CPSShockWave::deleteElement(), NL3D::CPSRibbonLookAt::deleteElement(), NL3D::CPSRibbon::deleteElement(), deleteElement(), NL3D::CPSConstraintMesh::deleteElement(), NL3D::CPSMesh::deleteElement(), and NL3D::CPSFanLight::deleteElement().

00296                 {
00297                         if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->deleteElement(index);
00298                 }

void NL3D::CPSTexturedParticle::deleteTextureIndexElement uint32  index  )  [inline, protected, inherited]
 

Definition at line 489 of file ps_particle_basic.h.

References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSAttribMaker< sint32 >::deleteElement(), NL3D::CPSAttribMaker< sint32 >::hasMemory(), index, and uint32.

Referenced by NL3D::CPSShockWave::deleteElement(), and deleteElement().

00490                 {
00491                         if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->deleteElement(index);
00492                 }

void NL3D::CPSParticle::disableAutoLOD bool  disable = true  )  [inline, inherited]
 

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; }

void NL3D::CPSLocatedBindable::displayIcon2d const NLMISC::CVector  tab[],
uint  nbSegs,
float  scale
[protected, inherited]
 

***************************************************************************************

show an drawing to represent the object, and in red if it is selected

Parameters:
tab : a table of 2 * nbSeg vector. only the x and y coordinates are used
nbSeg : the number of segment
scale : the scale to use for drawing

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 }

virtual bool NL3D::CPSLocatedBindable::doesProduceBBox void   )  const [inline, virtual, inherited]
 

Reimplemented in NL3D::CPSForce.

Definition at line 888 of file ps_located.h.

00888 { return true; }

virtual void NL3D::CPSParticle::draw bool  opaque  )  [inline, virtual, inherited]
 

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 {}

void NL3D::CPSMultiTexturedParticle::enableAlternateTex bool  enabled = true  )  [inherited]
 

Definition at line 656 of file ps_particle_basic.cpp.

References NL3D::CPSMultiTexturedParticle::_AlternateOp, NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::_TexScrollAlternate, NL3D::CPSMultiTexturedParticle::_Texture2, NL3D::CPSMultiTexturedParticle::AlternateTextureEnabled, NL3D::CPSMultiTexturedParticle::isAlternateTexEnabled(), NL3D::CPSMultiTexturedParticle::isMultiTextureEnabled(), nlassert, NLMISC::CVector2f::set(), NL3D::CPSMultiTexturedParticle::touch(), and uint8.

00657 {       
00658         nlassert(isMultiTextureEnabled()); // multitexturing must have been enabled first
00659         if (enabled == isAlternateTexEnabled()) return;
00660 
00661         if (enabled)
00662         {
00663                 _TexScrollAlternate[0].set(0, 0);
00664                 _TexScrollAlternate[1].set(0, 0);
00665                 _AlternateOp = Modulate;
00666                 _MultiTexState |= (uint8) AlternateTextureEnabled;
00667         }
00668         else
00669         {
00670                 _Texture2 = NULL;
00671                 _MultiTexState &= ~(uint8) AlternateTextureEnabled;
00672         }
00673         touch();
00674 }

void NL3D::CPSParticle::enableGlobalColorLighting bool  enabled  )  [inline, inherited]
 

Definition at line 105 of file ps_particle_basic.h.

References NL3D::CPSParticle::_UsesGlobalColorLighting.

00105 { _UsesGlobalColorLighting = enabled; }         

void NL3D::CPSMultiTexturedParticle::enableMultiTexture bool  enabled = true  )  [inherited]
 

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 }

void NL3D::CPSMaterial::enableZTest bool  enabled  )  [inherited]
 

===================================================================================

Definition at line 508 of file ps_particle_basic.cpp.

References NL3D::CMaterial::setZFunc().

00509 {
00510         _Mat.setZFunc(enabled ? CMaterial::less : CMaterial::always);
00511 }

void NL3D::CPSTexturedParticle::enumTexs std::vector< NLMISC::CSmartPtr< ITexture > > &  dest  )  [inherited]
 

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 }

void NL3D::CPSQuad::enumTexs std::vector< NLMISC::CSmartPtr< ITexture > > &  dest,
IDriver drv
[virtual]
 

Reimplemented from NL3D::CPSMultiTexturedParticle.

Definition at line 578 of file ps_quad.cpp.

00579 {
00580         CPSTexturedParticle::enumTexs(dest);
00581         CPSMultiTexturedParticle::enumTexs(dest, drv);
00582 }

void NL3D::CPSLocatedBindable::finalize void   )  [virtual, inherited]
 

***************************************************************************************

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 }       

void NL3D::CPSMultiTexturedParticle::forceBasicCaps bool  force = true  )  [inline, static, inherited]
 

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; }

void NL3D::CPSMultiTexturedParticle::forceBasicCapsLocal bool  force  )  [inline, protected, inherited]
 

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         }

void NL3D::CPSMaterial::forceModulateConstantColor bool  force,
const NLMISC::CRGBA col = NLMISC::CRGBA::White
[inherited]
 

===================================================================================

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.

Parameters:
force true to force constant color modulation

Definition at line 573 of file ps_particle_basic.cpp.

References NL3D::CPSMaterial::forceTexturedMaterialStages(), NL3D::CMaterial::getTexture(), NL3D::CMaterial::setTexture(), NL3D::CMaterial::texConstantColor(), NL3D::CMaterial::texEnvArg0Alpha(), NL3D::CMaterial::texEnvArg0RGB(), NL3D::CMaterial::texEnvArg1Alpha(), NL3D::CMaterial::texEnvArg1RGB(), NL3D::CMaterial::texEnvOpAlpha(), and NL3D::CMaterial::texEnvOpRGB().

Referenced by NL3D::CPSRibbonLookAt::displayRibbons(), NL3D::CPSShockWave::draw(), and updateMatBeforeRendering().

00574 {
00575         if (force)
00576         {
00578                 _Mat.texConstantColor(1, col);
00579                 _Mat.texEnvOpRGB(1, CMaterial::Modulate);
00580                 _Mat.texEnvOpAlpha(1, CMaterial::Modulate);
00581                 _Mat.texEnvArg0RGB(1, CMaterial::Previous, CMaterial::SrcColor);
00582                 _Mat.texEnvArg1RGB(1, CMaterial::Constant, CMaterial::SrcColor);
00583                 _Mat.texEnvArg0Alpha(1, CMaterial::Previous, CMaterial::SrcAlpha);
00584                 _Mat.texEnvArg1Alpha(1, CMaterial::Constant, CMaterial::SrcAlpha);
00585                 forceTexturedMaterialStages(2);
00586         }
00587         else
00588         {               
00589                 if (_Mat.getTexture(1) != NULL)
00590                 {
00591                         _Mat.setTexture(1, NULL);
00592                 }
00593         }
00594 }

void NL3D::CPSMaterial::forceTexturedMaterialStages uint  numStages  )  [inherited]
 

===================================================================================

This setup n stage of a material with at least texture.

  • If a texture was present for a given stage it still is
  • If a texture wasn't present, it create a dummy white texture there
  • Above numStages, textures are disabled. It can be used to do extra math with stages that have no textures (required by the driver)

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 }

const NLMISC::CVector2f& NL3D::CPSMultiTexturedParticle::getAlternateScrollSpeed uint  stage  )  const [inline, inherited]
 

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         }

TOperator NL3D::CPSMultiTexturedParticle::getAlternateTexOp  )  const [inline, inherited]
 

Definition at line 550 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_AlternateOp, and NL3D::CPSMultiTexturedParticle::TOperator.

00551         {               
00552                 return _AlternateOp; 
00553         }

CPSMaterial::TBlendingMode NL3D::CPSMaterial::getBlendingMode void   )  const [inherited]
 

===================================================================================

Definition at line 551 of file ps_particle_basic.cpp.

References NL3D::CPSMaterial::alphaBlend, NL3D::CPSMaterial::alphaTest, NL3D::CMaterial::getBlend(), NL3D::CMaterial::getDstBlend(), NL3D::CMaterial::getSrcBlend(), and nlassert.

Referenced by NL3D::CPSTailDot::hasTransparentFaces(), NL3D::CPSShockWave::hasTransparentFaces(), NL3D::CPSRibbonLookAt::hasTransparentFaces(), NL3D::CPSRibbon::hasTransparentFaces(), hasTransparentFaces(), NL3D::CPSFanLight::hasTransparentFaces(), and NL3D::CPSDot::hasTransparentFaces().

00552 {
00553         if (_Mat.getBlend())
00554         {
00555                 CMaterial::TBlend srcBlend = _Mat.getSrcBlend();        
00556                 CMaterial::TBlend destBlend = _Mat.getDstBlend();
00557 
00558                 if (srcBlend == CMaterial::one && destBlend == CMaterial::one) return add;
00559                 if (srcBlend == CMaterial::zero && destBlend == CMaterial::srccolor) return modulate;
00560                 if (srcBlend == CMaterial::srcalpha && destBlend == CMaterial::invsrcalpha) return alphaBlend;
00561 
00562                 // unrecognized mode
00563                 nlassert(0);
00564                 return alphaTest; // to avoid a warning only ...
00565         }
00566         else
00567         {
00568                 return alphaTest;
00569         }
00570 }

float NL3D::CPSMultiTexturedParticle::getBumpFactor  )  const [inline, inherited]
 

Definition at line 610 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_BumpFactor.

00610 { return _BumpFactor; }

virtual std::string NLMISC::IClassable::getClassName  )  [pure virtual, inherited]
 

Implemented in NLAIAGENT::CNumericIndex, NLAIC::IPointerGestion, NLAIC::CIdentType, and CAutomataDesc.

Referenced by NLMISC::CClassRegistry::checkObject(), and NL3D::GetTextureSize().

NLMISC::CRGBA NL3D::CPSColoredParticle::getColor void   )  const [inline, inherited]
 

Get the color.

Definition at line 211 of file ps_particle_basic.h.

00211 { return _Color; }

virtual CPSLocated* NL3D::CPSQuad::getColorOwner void   )  [inline, protected, virtual]
 

deriver must return their owner there

Implements NL3D::CPSColoredParticle.

Definition at line 124 of file ps_quad.h.

00124 { return _Owner; }

const CPSAttribMaker<CRGBA>* NL3D::CPSColoredParticle::getColorScheme void   )  const [inline, inherited]
 

get the color scheme (NULL if none) const version

Definition at line 205 of file ps_particle_basic.h.

00205 { return _ColorScheme; }

CPSAttribMaker<CRGBA>* NL3D::CPSColoredParticle::getColorScheme void   )  [inline, inherited]
 

get the color scheme (NULL if none)

Definition at line 202 of file ps_particle_basic.h.

00202 { return _ColorScheme; }

IDriver* NL3D::CPSLocatedBindable::getDriver void   )  const [inline, inherited]
 

shortcut to get an instance of the driver

Definition at line 890 of file ps_located.h.

References NL3D::CPSLocated::getDriver(), and nlassert.

Referenced by NL3D::CPSLocatedBindable::displayIcon2d(), NL3D::CPSTailDot::displayRibbons(), NL3D::CPSRibbonLookAt::displayRibbons(), NL3D::CPSRibbon::displayRibbons(), NL3D::CPSDot::draw(), NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSFaceLookAtHelper::drawLookAt(), NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(), NL3D::CPSConstraintMeshHelper::drawMeshs(), NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs(), NL3D::CPSZoneRectangle::show(), NL3D::CPSZoneCylinder::show(), NL3D::CPSZoneDisc::show(), NL3D::CPSZoneSphere::show(), NL3D::CPSZonePlane::show(), NL3D::CPSLight::show(), NL3D::CPSCylindricVortex::show(), NL3D::CPSGravity::show(), NL3D::CPSDirectionnalForce::show(), NL3D::CPSSphericalEmitter::showTool(), NL3D::CPSEmitterRectangle::showTool(), and NL3D::CPSEmitter::showTool().

00891          { 
00892                  nlassert(_Owner);
00893                  nlassert(_Owner->getDriver());
00894                  return _Owner->getDriver();
00895          }              

uint32 NL3D::CPSLocatedBindable::getExternID void   )  const [inline, inherited]
 

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; }

const CFontGenerator* NL3D::CPSLocatedBindable::getFontGenerator void   )  const [inline, inherited]
 

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.

00905          {
00906                 nlassert(_Owner);
00907                 return _Owner->getFontGenerator();
00908          }

CFontGenerator* NL3D::CPSLocatedBindable::getFontGenerator void   )  [inline, inherited]
 

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().

00898          {
00899                 nlassert(_Owner);
00900                 return _Owner->getFontGenerator();
00901          }

const CFontManager * NL3D::CPSLocatedBindable::getFontManager void   )  const [inherited]
 

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.

02100 {
02101         nlassert(_Owner);
02102         return _Owner->getFontManager();
02103 }

CFontManager * NL3D::CPSLocatedBindable::getFontManager void   )  [inherited]
 

***************************************************************************************

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().

02092 {
02093         nlassert(_Owner);
02094         return _Owner->getFontManager();
02095 }

const NLMISC::CMatrix & NL3D::CPSLocatedBindable::getInvertedSysMat void   )  const [inherited]
 

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.

02117 {
02118         nlassert(_Owner);
02119                 return _Owner->getOwner()->getInvertedSysMat();
02120 
02121 }

const NLMISC::CMatrix & NL3D::CPSLocatedBindable::getInvertedViewMat void   )  const [inherited]
 

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.

02135 {
02136         nlassert(_Owner);
02137         return _Owner->getOwner()->getInvertedViewMat();        
02138 }       

const NLMISC::CMatrix & NL3D::CPSLocatedBindable::getLocalToWorldMatrix  )  const [inline, inherited]
 

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().

01145 {
01146         nlassert(_Owner);
01147         return _Owner->getLocalToWorldMatrix();
01148 }

TPSLod NL3D::CPSLocatedBindable::getLOD void   )  const [inline, inherited]
 

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; }

TOperator NL3D::CPSMultiTexturedParticle::getMainTexOp  )  const [inline, inherited]
 

Definition at line 533 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_MainOp, and NL3D::CPSMultiTexturedParticle::TOperator.

00533 { return _MainOp; }

uint32 NL3D::CPSQuad::getMaxNumFaces void   )  const [virtual]
 

==================================================================================

Implements NL3D::CPSParticle.

Definition at line 219 of file ps_quad.cpp.

References NL3D::CPSLocated::getMaxSize(), nlassert, and uint32.

00220 {
00221         nlassert(_Owner);
00222         return _Owner->getMaxSize() << 1;
00223 }

std::string NL3D::CPSLocatedBindable::getName void   )  const [inline, inherited]
 

get the located bindable name (edition purpose)

Definition at line 948 of file ps_located.h.

00948 { return _Name; }       

CVertexBuffer & NL3D::CPSQuad::getNeededVB  )  [protected]
 

get the vertex buffer that is needed for drawing

================================================================================== choose the vertex buffex that we need

check is multitexturing is enabled, and which texture are enabled and / or animated

Definition at line 146 of file ps_quad.cpp.

References NL3D::CPSMultiTexturedParticle::isAlternateTextureUsed(), nlassert, uint, VBCol, VBFullMask, VBTex, VBTex2, VBTex2Animated, VBTexAnimated, NLMISC::CVector2f::x, and NLMISC::CVector2f::y.

Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFaceLookAtHelper::drawLookAt(), and NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion().

00147 {
00148         uint flags = 0;
00149         if (_ColorScheme) flags |= (uint) VBCol;
00150         if (_TexGroup)
00151         {
00152                 flags |= VBTex | VBTexAnimated;
00153         }
00154         else if (_Tex)
00155         {
00156 
00157                 flags |= VBTex;                         
00158         }
00159 
00160         if (flags & VBTex)
00161         {       
00163                 if (CPSMultiTexturedParticle::isMultiTextureEnabled())
00164                 {
00165                         if (!isAlternateTextureUsed())
00166                         {
00167                                 if ((flags & VBTex) && (_TexScroll[0].x != 0 || _TexScroll[0].y != 0)) flags |= VBTexAnimated;
00168                                 if (_Texture2)
00169                                 {                               
00170                                         if (_MainOp != Decal && (_TexScroll[1].x != 0 || _TexScroll[1].y != 0))
00171                                         {
00172                                                 flags |= VBTex2 | VBTex2Animated;
00173                                         }
00174                                         else
00175                                         {
00176                                                 flags |= VBTex2;
00177                                         }
00178                                 }
00179                         }
00180                         else
00181                         {
00182                                 if ((flags & VBTex) && (_TexScrollAlternate[0].x != 0 || _TexScrollAlternate[0].y       != 0)) flags |= VBTexAnimated;
00183                                 if (_AlternateTexture2)
00184                                 {                               
00185                                         if (_AlternateOp != Decal && (_TexScrollAlternate[1].x != 0 || _TexScrollAlternate[1].y != 0)) 
00186                                         {
00187                                                 flags |= VBTex2 | VBTex2Animated;
00188                                         }
00189                                         else
00190                                         {
00191                                                 flags |= VBTex2;
00192                                         }
00193                                 }
00194                         }
00195                 }
00196         }
00197 
00198         nlassert((flags & ~VBFullMask) == 0); // check for overflow
00199         nlassert(_VbTab[flags] != NULL);
00200         return *(_VbTab[flags]); // get the vb
00201 }

const CPSLocated* NL3D::CPSLocatedBindable::getOwner void   )  const [inline, inherited]
 

get the located that owns this bindable (const version)

Definition at line 944 of file ps_located.h.

00944 { return _Owner; }              

CPSLocated* NL3D::CPSLocatedBindable::getOwner void   )  [inline, inherited]
 

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; }

virtual uint32 NL3D::CPSParticle::getPriority void   )  const [inline, virtual, inherited]
 

return priority

Implements NL3D::CPSLocatedBindable.

Definition at line 66 of file ps_particle_basic.h.

References uint32.

00066 { return 1000; }

const NLMISC::CVector2f& NL3D::CPSMultiTexturedParticle::getScrollSpeed uint  stage  )  const [inline, inherited]
 

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         }

float NL3D::CPSSizedParticle::getSize void   )  const [inline, inherited]
 

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; }

virtual CPSLocated* NL3D::CPSQuad::getSizeOwner void   )  [inline, protected, virtual]
 

deriver must return their owner there

Implements NL3D::CPSSizedParticle.

Definition at line 125 of file ps_quad.h.

00125 { return _Owner; }

const CPSAttribMaker<float>* NL3D::CPSSizedParticle::getSizeScheme void   )  const [inline, inherited]
 

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; }

CPSAttribMaker<float>* NL3D::CPSSizedParticle::getSizeScheme void   )  [inline, inherited]
 

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; }

const NLMISC::CMatrix & NL3D::CPSLocatedBindable::getSysMat void   )  const [inherited]
 

***************************************************************************************

Definition at line 2108 of file ps_located.cpp.

References NL3D::CParticleSystemProcess::getOwner(), NL3D::CParticleSystem::getSysMat(), and nlassert.

02109 {
02110         nlassert(_Owner);               
02111         return _Owner->getOwner()->getSysMat();
02112 }

const ITexture* NL3D::CPSTexturedParticle::getTexture void   )  const [inline, inherited]
 

Definition at line 453 of file ps_particle_basic.h.

00453 { return _Tex; }

ITexture* NL3D::CPSTexturedParticle::getTexture void   )  [inline, inherited]
 

get the constant texture

Definition at line 451 of file ps_particle_basic.h.

00451 { return _Tex; }

ITexture* NL3D::CPSMultiTexturedParticle::getTexture2  )  [inline, inherited]
 

Definition at line 526 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_Texture2.

00526 { return _Texture2; }

const ITexture* NL3D::CPSMultiTexturedParticle::getTexture2  )  const [inline, inherited]
 

Get the main texture for multitexturing.

Definition at line 525 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_Texture2.

00525 { return _Texture2; }

ITexture* NL3D::CPSMultiTexturedParticle::getTexture2Alternate  )  [inline, inherited]
 

Definition at line 545 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_AlternateTexture2.

00545 { return _AlternateTexture2; }

const ITexture* NL3D::CPSMultiTexturedParticle::getTexture2Alternate  )  const [inline, inherited]
 

Get the alternate texture for multitexturing.

Definition at line 544 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_AlternateTexture2.

00544 { return _AlternateTexture2; }

const CTextureGrouped* NL3D::CPSTexturedParticle::getTextureGroup void   )  const [inline, inherited]
 

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; }

CTextureGrouped* NL3D::CPSTexturedParticle::getTextureGroup void   )  [inline, inherited]
 

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; }

sint32 NL3D::CPSTexturedParticle::getTextureIndex void   )  const [inline, inherited]
 

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; }               

virtual CPSLocated* NL3D::CPSQuad::getTextureIndexOwner void   )  [inline, protected, virtual]
 

deriver must return their owner there

Implements NL3D::CPSTexturedParticle.

Definition at line 126 of file ps_quad.h.

00126 { return _Owner; }

const CPSAttribMaker<sint32>* NL3D::CPSTexturedParticle::getTextureIndexScheme void   )  const [inline, inherited]
 

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; }

CPSAttribMaker<sint32>* NL3D::CPSTexturedParticle::getTextureIndexScheme void   )  [inline, inherited]
 

get the texture scheme (null if none)

Definition at line 424 of file ps_particle_basic.h.

References NL3D::CPSTexturedParticle::_TextureIndexScheme.

00424 { return _TextureIndexScheme; }

uint32 NL3D::CPSParticle::getType void   )  const [inline, virtual, inherited]
 

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; }

bool NL3D::CPSMultiTexturedParticle::getUseLocalDate  )  [inline, inherited]
 

Definition at line 602 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::ScrollUseLocalDate.

Referenced by updateVbColNUVForRender().

00602 { return (_MultiTexState & ScrollUseLocalDate) != 0; }

bool NL3D::CPSMultiTexturedParticle::getUseLocalDateAlt  )  [inline, inherited]
 

Definition at line 606 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::ScrollUseLocalDateAlternate.

Referenced by updateVbColNUVForRender().

00606 { return (_MultiTexState & ScrollUseLocalDateAlternate) != 0; }

virtual bool NL3D::CPSLocatedBindable::getUserMatrixUsageCount  )  const [inline, virtual, inherited]
 

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; }

const NLMISC::CMatrix & NL3D::CPSLocatedBindable::getViewMat void   )  const [inherited]
 

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().

02126 {
02127         nlassert(_Owner);
02128         return _Owner->getOwner()->getViewMat();        
02129 }       

virtual bool NL3D::CPSLocatedBindable::hasEmitters void   )  const [inline, virtual, inherited]
 

tells wether there are alive emitters

Definition at line 958 of file ps_located.h.

00958 { return false; }

virtual bool NL3D::CPSParticle::hasLightableFaces  )  [pure virtual, inherited]
 

Returns true if there are lightable faces in the object

Implemented in NL3D::CPSDot, NL3D::CPSFace, NL3D::CPSFaceLookAt, NL3D::CPSFanLight, NL3D::CPSMesh, NL3D::CPSConstraintMesh, NL3D::CPSRibbon, NL3D::CPSRibbonLookAt, NL3D::CPSShockWave, and NL3D::CPSTailDot.

bool NL3D::CPSQuad::hasOpaqueFaces void   )  [virtual]
 

==================================================================================

Implements NL3D::CPSParticle.

Definition at line 232 of file ps_quad.cpp.

References hasTransparentFaces().

Referenced by NL3D::CPSFace::step().

00233 {
00234         return !hasTransparentFaces();
00235 }

virtual bool NL3D::CPSParticle::hasParticles void   )  const [inline, virtual, inherited]
 

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.

00069 { nlassert(_Owner); return _Owner->getSize() != 0; }

bool NL3D::CPSQuad::hasTransparentFaces void   )  [virtual]
 

==================================================================================

Implements NL3D::CPSParticle.

Definition at line 226 of file ps_quad.cpp.

References NL3D::CPSMaterial::getBlendingMode().

Referenced by hasOpaqueFaces(), and NL3D::CPSFace::step().

00227 {
00228         return getBlendingMode() != CPSMaterial::alphaTest ;
00229 }

void NL3D::CPSQuad::init void   )  [protected, virtual]
 

==================================================================================

Definition at line 238 of file ps_quad.cpp.

References NL3D::CMaterial::setDoubleSided(), NL3D::CMaterial::setLighting(), updateMatAndVbForColor(), and updateMatAndVbForTexture().

Referenced by CPSQuad().

00239 {       
00240         _Mat.setLighting(false);        
00241         _Mat.setDoubleSided(true);
00242 
00243 
00244         updateMatAndVbForColor();
00245         updateMatAndVbForTexture();
00246 }

void NL3D::CPSQuad::initVertexBuffers  )  [static]
 

init the vertex buffers

================================================================================== this static method init vertex buffers

setup vertex format

Definition at line 115 of file ps_quad.cpp.

References quadBufSize, NL3D::CVertexBuffer::setNumVertices(), NL3D::SetupQuadVBTexCoords(), NL3D::CVertexBuffer::setVertexFormat(), uint, uint32, VBCol, VBTex, VBTex2, VBTex2Animated, and VBTexAnimated.

00116 {
00117         for (uint k = 0; k < 32; ++k)
00118         {
00119                 CVertexBuffer *vb = _VbTab[k];
00120                 if (_VbTab[k]) // valid vb ?
00121                 {
00122                         uint32 vf = CVertexBuffer::PositionFlag;
00124                         if (k & (uint) VBCol) vf |= CVertexBuffer::PrimaryColorFlag;
00125                         if (k & (uint) VBTex  || k & (uint) VBTexAnimated) vf |= CVertexBuffer::TexCoord0Flag;
00126                         if (k & (uint) VBTex2 || k & (uint) VBTex2Animated) vf |= CVertexBuffer::TexCoord1Flag;
00127                         vb->setVertexFormat(vf);
00128                         vb->setNumVertices(quadBufSize << 2);
00129 
00130                         if ((k & (uint) VBTex) && !(k & (uint) VBTexAnimated))
00131                         {
00132                                 SetupQuadVBTexCoords(*vb, 0);
00133                         }
00134 
00135                         if ((k & (uint) VBTex2) && !(k & (uint) VBTex2Animated))
00136                         {
00137                                 SetupQuadVBTexCoords(*vb, 1);
00138                         }
00139                         
00140                 }
00141         }
00142 }

bool NL3D::CPSLocatedBindable::isActive  )  const [inline, inherited]
 

Definition at line 844 of file ps_located.h.

References NL3D::CPSLocatedBindable::_Active.

Referenced by NL3D::CParticleSystem::hasActiveEmitters().

00844 { return _Active; }                             

bool NL3D::CPSMultiTexturedParticle::isAlternateTexEnabled  )  const [inline, inherited]
 

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; }

bool NL3D::CPSMultiTexturedParticle::isAlternateTextureUsed  )  const [inline, protected, inherited]
 

test wether the alternate texture is used

Definition at line 632 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::AlternateTextureUsed.

Referenced by getNeededVB(), and updateVbColNUVForRender().

00632 { return (_MultiTexState & AlternateTextureUsed) != 0; }

bool NL3D::CPSParticle::isAutoLODDisabled  )  const [inline, inherited]
 

Test wether Auto-LOD is disabled.

Definition at line 140 of file ps_particle_basic.h.

References NL3D::CPSParticle::_DisableAutoLOD.

00140 { return _DisableAutoLOD; }     

bool NL3D::CPSMultiTexturedParticle::isEnvBumpMapUsed  )  const [inline, protected, inherited]
 

Definition at line 633 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_MultiTexState, and NL3D::CPSMultiTexturedParticle::EnvBumpMapUsed.

00633 { return (_MultiTexState & EnvBumpMapUsed) != 0; }

bool NL3D::CPSMultiTexturedParticle::isMultiTextureEnabled  )  const [inline, inherited]
 

Definition at line 519 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::MultiTextureEnabled, and uint8.

Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSMultiTexturedParticle::enableAlternateTex(), NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::setupMaterial(), and updateMatBeforeRendering().

00519 { return (_MultiTexState & (uint8) MultiTextureEnabled) != 0; }

bool NL3D::CPSMultiTexturedParticle::isTouched  )  [inline, protected, inherited]
 

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; }   

bool NL3D::CPSMaterial::isZTestEnabled  )  const [inherited]
 

===================================================================================

Definition at line 514 of file ps_particle_basic.cpp.

References NL3D::CMaterial::getZFunc().

00515 {
00516         return _Mat.getZFunc() != CMaterial::always;
00517 }

virtual void NL3D::CPSLocatedBindable::motionTypeChanged bool  parametric  )  [inline, virtual, inherited]
 

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 {}

void NL3D::CPSColoredParticle::newColorElement CPSLocated emitterLocated,
uint32  emitterIndex
[inline, protected, inherited]
 

Definition at line 233 of file ps_particle_basic.h.

References NL3D::CPSAttribMaker< CRGBA >::hasMemory(), NL3D::CPSAttribMaker< CRGBA >::newElement(), and uint32.

Referenced by NL3D::CPSTailDot::newElement(), NL3D::CPSShockWave::newElement(), NL3D::CPSRibbonLookAt::newElement(), NL3D::CPSRibbon::newElement(), newElement(), NL3D::CPSConstraintMesh::newElement(), NL3D::CPSFanLight::newElement(), and NL3D::CPSDot::newElement().

00234                 {
00235                         if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->newElement(emitterLocated, emitterIndex);
00236                 }       

void NL3D::CPSQuad::newElement CPSLocated emitterLocated,
uint32  emitterIndex
[inline, protected, virtual]
 

this is inlined to save cost of call by derived class

Implements NL3D::CPSParticle.

Reimplemented in NL3D::CPSFace, and NL3D::CPSFaceLookAt.

Definition at line 97 of file ps_quad.h.

References NL3D::CPSColoredParticle::newColorElement(), NL3D::CPSSizedParticle::newSizeElement(), NL3D::CPSTexturedParticle::newTextureIndexElement(), and uint32.

00098         {
00099                 newColorElement(emitterLocated, emitterIndex);
00100                 newSizeElement(emitterLocated, emitterIndex);
00101                 newTextureIndexElement(emitterLocated, emitterIndex);
00102         }

void NL3D::CPSSizedParticle::newSizeElement CPSLocated emitterLocated,
uint32  emitterIndex
[inline, protected, inherited]
 

Definition at line 291 of file ps_particle_basic.h.

References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSAttribMaker< float >::hasMemory(), NL3D::CPSAttribMaker< float >::newElement(), and uint32.

Referenced by NL3D::CPSShockWave::newElement(), NL3D::CPSRibbonLookAt::newElement(), NL3D::CPSRibbon::newElement(), newElement(), NL3D::CPSConstraintMesh::newElement(), NL3D::CPSMesh::newElement(), and NL3D::CPSFanLight::newElement().

00292                 {
00293                         if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->newElement(emitterLocated, emitterIndex);
00294                 }       

void NL3D::CPSTexturedParticle::newTextureIndexElement CPSLocated emitterLocated,
uint32  emitterIndex
[inline, protected, inherited]
 

Definition at line 485 of file ps_particle_basic.h.

References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSAttribMaker< sint32 >::hasMemory(), NL3D::CPSAttribMaker< sint32 >::newElement(), and uint32.

Referenced by NL3D::CPSShockWave::newElement(), and newElement().

00486                 {
00487                         if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->newElement(emitterLocated, emitterIndex);
00488                 }       

void NL3D::CPSParticle::notifyOwnerMaxNumFacesChanged void   )  const [inline, protected, inherited]
 

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().

00152         {
00153                 if (_Owner)
00154                 {
00155                         _Owner->notifyMaxNumFacesChanged();
00156                 }
00157         }

void NL3D::CPSLocatedBindable::notifyTargetRemoved CPSLocated ptr  )  [virtual, inherited]
 

***************************************************************************************

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

See also:
CPSLocated::registerDTorObserver()

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 }

void NL3D::CPSLocatedBindable::releaseAllRef  )  [virtual, inherited]
 

***************************************************************************************

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 }

virtual void NL3D::CPSLocatedBindable::releaseRefTo const CParticleSystemProcess other  )  [inline, virtual, inherited]
 

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 {}

void NL3D::CPSQuad::resize uint32  capacity  )  [protected, virtual]
 

==================================================================================

Implements NL3D::CPSParticle.

Reimplemented in NL3D::CPSFace, and NL3D::CPSFaceLookAt.

Definition at line 276 of file ps_quad.cpp.

References nlassert, NL3D::CPSColoredParticle::resizeColor(), NL3D::CPSSizedParticle::resizeSize(), NL3D::CPSTexturedParticle::resizeTextureIndex(), size, and uint32.

00277 {
00278         nlassert(size < (1 << 16));
00279         resizeSize(size);
00280         resizeColor(size);
00281         resizeTextureIndex(size);       
00282 }

void NL3D::CPSColoredParticle::resizeColor uint32  size  )  [inline, protected, inherited]
 

Definition at line 241 of file ps_particle_basic.h.

References NL3D::CPSColoredParticle::getColorOwner(), NL3D::CPSAttribMaker< CRGBA >::hasMemory(), nlassert, NL3D::CPSAttribMaker< CRGBA >::resize(), size, and uint32.

Referenced by NL3D::CPSTailDot::resize(), NL3D::CPSShockWave::resize(), NL3D::CPSRibbonLookAt::resize(), NL3D::CPSRibbon::resize(), resize(), NL3D::CPSConstraintMesh::resize(), NL3D::CPSFanLight::resize(), and NL3D::CPSDot::resize().

00242                 {
00243                         nlassert(size < (1 << 16));
00244                         if (_ColorScheme && _ColorScheme->hasMemory()) _ColorScheme->resize(size, getColorOwner()->getSize());
00245                 }

void NL3D::CPSSizedParticle::resizeSize uint32  size  )  [inline, protected, inherited]
 

Definition at line 299 of file ps_particle_basic.h.

References NL3D::CPSSizedParticle::_SizeScheme, NL3D::CPSSizedParticle::getSize(), NL3D::CPSSizedParticle::getSizeOwner(), NL3D::CPSAttribMaker< float >::hasMemory(), nlassert, NL3D::CPSAttribMaker< float >::resize(), size, and uint32.

Referenced by NL3D::CPSShockWave::resize(), NL3D::CPSRibbonLookAt::resize(), NL3D::CPSRibbon::resize(), resize(), NL3D::CPSConstraintMesh::resize(), NL3D::CPSMesh::resize(), and NL3D::CPSFanLight::resize().

00300                 {
00301                         nlassert(size < (1 << 16));
00302                         if (_SizeScheme && _SizeScheme->hasMemory()) _SizeScheme->resize(size, getSizeOwner()->getSize());
00303                 }

void NL3D::CPSTexturedParticle::resizeTextureIndex uint32  size  )  [inline, protected, inherited]
 

Definition at line 493 of file ps_particle_basic.h.

References NL3D::CPSTexturedParticle::_TextureIndexScheme, NL3D::CPSTexturedParticle::getTextureIndexOwner(), NL3D::CPSAttribMaker< sint32 >::hasMemory(), nlassert, NL3D::CPSAttribMaker< sint32 >::resize(), size, and uint32.

Referenced by NL3D::CPSShockWave::resize(), and resize().

00494                 {
00495                         nlassert(size < (1 << 16));
00496                         if (_TextureIndexScheme && _TextureIndexScheme->hasMemory()) _TextureIndexScheme->resize(size, getTextureIndexOwner()->getSize() );
00497                 }

void NL3D::CPSQuad::serial NLMISC::IStream f  )  throw (NLMISC::EStream) [protected, virtual]
 

DERIVERS MUST CALL this.

Reimplemented from NL3D::CPSParticle.

Reimplemented in NL3D::CPSFace, and NL3D::CPSFaceLookAt.

Definition at line 299 of file ps_quad.cpp.

References sint.

00300 {
00301         sint ver = f.serialVersion(2);          
00302         CPSParticle::serial(f); 
00303         CPSSizedParticle::serialSizeScheme(f);
00304         CPSColoredParticle::serialColorScheme(f);
00305         CPSTexturedParticle::serialTextureScheme(f);
00306         serialMaterial(f);
00307         if (ver > 1)
00308         {
00309                 CPSMultiTexturedParticle::serialMultiTex(f);
00310         }
00311 }

void NL3D::CPSColoredParticle::serialColorScheme NLMISC::IStream f  )  throw (NLMISC::EStream) [inherited]
 

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 }

void NL3D::CPSMaterial::serialMaterial NLMISC::IStream f  )  throw (NLMISC::EStream) [inherited]
 

===================================================================================

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 }

void NL3D::CPSMultiTexturedParticle::serialMultiTex NLMISC::IStream f  )  throw (NLMISC::EStream) [inherited]
 

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 }

void NL3D::CPSSizedParticle::serialSizeScheme NLMISC::IStream f  )  throw (NLMISC::EStream) [inherited]
 

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 };

void NL3D::CPSTexturedParticle::serialTextureScheme NLMISC::IStream f  )  throw (NLMISC::EStream) [inherited]
 

===================================================================================

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 }

void NL3D::CPSLocatedBindable::setActive bool  active  )  [inline, inherited]
 

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; }

void NL3D::CPSMultiTexturedParticle::setAlternateScrollSpeed uint  stage,
const NLMISC::CVector2f sp
[inline, inherited]
 

set the scroll speed for tex 1 & 2 when the alternate op is used

Parameters:
stage can be set to 0 or one

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         }

void NL3D::CPSMultiTexturedParticle::setAlternateTexOp TOperator  op  )  [inherited]
 

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 }

void NL3D::CPSMaterial::setBlendingMode CPSMaterial::TBlendingMode  mode  )  [inherited]
 

===================================================================================

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 }

void NL3D::CPSMultiTexturedParticle::setBumpFactor float  bumpFactor  )  [inline, inherited]
 

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(); }

void NL3D::CPSColoredParticle::setColor NLMISC::CRGBA  col  )  [inherited]
 

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 }

void NL3D::CPSColoredParticle::setColorScheme CPSAttribMaker< CRGBA > *  col  )  [inherited]
 

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 }

void NL3D::CPSLocatedBindable::setExternID uint32  id  )  [inherited]
 

***************************************************************************************

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 }

void NL3D::CPSLocatedBindable::setLOD TPSLod  lod  )  [inline, inherited]
 

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; }

void NL3D::CPSMultiTexturedParticle::setMainTexOp TOperator  op  )  [inherited]
 

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 }

void NL3D::CPSLocatedBindable::setName const std::string &  name  )  [inline, inherited]
 

set the located bindable name (edition purpose)

Definition at line 946 of file ps_located.h.

00946 { _Name = name; }

void NL3D::CPSLocatedBindable::setOwner CPSLocated psl  )  [protected, virtual, inherited]
 

***************************************************************************************

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 }

void NL3D::CPSMultiTexturedParticle::setScrollSpeed uint  stage,
const NLMISC::CVector2f sp
[inline, inherited]
 

set the scroll speed for tex 1 & 2 when the main op is used

Parameters:
stage can be set to 0 or one

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         }

void NL3D::CPSSizedParticle::setSize float  size  )  [inherited]
 

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 }

void NL3D::CPSSizedParticle::setSizeScheme CPSAttribMaker< float > *  size  )  [inherited]
 

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 }

void NL3D::CPSTexturedParticle::setTexture CSmartPtr< ITexture tex  )  [inherited]
 

===================================================================================

Set a constant texture for the particle This discard any previous scheme

See also:
setTextureScheme()

Definition at line 349 of file ps_particle_basic.cpp.

References NL3D::CPSTexturedParticle::_TexGroup, NL3D::CPSTexturedParticle::_TextureIndexScheme, and NL3D::CPSTexturedParticle::updateMatAndVbForTexture().

Referenced by CPSQuad(), and NL3D::CPSShockWave::CPSShockWave().

00350 {       
00351         delete _TextureIndexScheme;
00352         _TextureIndexScheme = NULL;     
00353         _Tex = tex;
00354         _TexGroup = NULL; // release any grouped texture if one was set before
00355         updateMatAndVbForTexture();
00356 }

void NL3D::CPSMultiTexturedParticle::setTexture2 ITexture tex  )  [inherited]
 

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 }

void NL3D::CPSMultiTexturedParticle::setTexture2Alternate ITexture tex  )  [inherited]
 

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 }

void NL3D::CPSTexturedParticle::setTextureGroup NLMISC::CSmartPtr< CTextureGrouped texGroup  )  [inherited]
 

===================================================================================

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 }

void NL3D::CPSTexturedParticle::setTextureIndex sint32  index  )  [inherited]
 

===================================================================================

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 }

void NL3D::CPSTexturedParticle::setTextureIndexScheme CPSAttribMaker< sint32 > *  animOrder  )  [inherited]
 

===================================================================================

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 }

void NL3D::CPSLocatedBindable::setupDriverModelMatrix void   )  [inherited]
 

shortcut to setup the model matrix (system basis or world basis)

Definition at line 2142 of file ps_located.cpp.

References nlassert, and NL3D::CPSLocated::setupDriverModelMatrix().

Referenced by NL3D::CPSLocatedBindable::displayIcon2d(), NL3D::CPSTailDot::displayRibbons(), NL3D::CPSRibbonLookAt::displayRibbons(), NL3D::CPSRibbon::displayRibbons(), NL3D::CPSDot::draw(), NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSFaceLookAtHelper::drawLookAt(), NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(), NL3D::CPSConstraintMeshHelper::drawMeshs(), NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs(), NL3D::CPSZoneRectangle::show(), NL3D::CPSZoneCylinder::show(), NL3D::CPSZoneDisc::show(), NL3D::CPSZoneSphere::show(), NL3D::CPSZonePlane::show(), NL3D::CPSCylindricVortex::show(), NL3D::CPSDirectionnalForce::show(), NL3D::CPSSphericalEmitter::showTool(), NL3D::CPSEmitterRectangle::showTool(), and NL3D::CPSEmitter::showTool().

02143 {
02144         nlassert(_Owner);
02145         _Owner->setupDriverModelMatrix();
02146 }

void NL3D::CPSMultiTexturedParticle::setupMaterial ITexture primary,
IDriver drv,
CMaterial mat
[inherited]
 

setup a material from this object and a primary texture drv is used to check the device caps. Must be called before display when multitextureing is used

Definition at line 733 of file ps_particle_basic.cpp.

References NL3D::CPSMultiTexturedParticle::_AlternateOp, NL3D::CPSMultiTexturedParticle::_AlternateTexture2, NL3D::CPSMultiTexturedParticle::_BumpFactor, NL3D::CPSMultiTexturedParticle::_ForceBasicCaps, NL3D::CPSMultiTexturedParticle::_MainOp, NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::_Texture2, NL3D::CPSMultiTexturedParticle::AlternateTextureUsed, NL3D::CPSMultiTexturedParticle::areBasicCapsForced(), NL3D::CPSMultiTexturedParticle::areBasicCapsForcedLocal(), NL3D::CPSMultiTexturedParticle::Decal, NL3D::CPSMultiTexturedParticle::EnvBumpMap, NL3D::CPSMultiTexturedParticle::EnvBumpMapUsed, NL3D::ITexture::generate(), NL3D::CTextureBump::getNormalizationFactor(), NL3D::CPSMultiTexturedParticle::isAlternateTexEnabled(), NL3D::CPSMultiTexturedParticle::isMultiTextureEnabled(), NL3D::IDriver::isTextureAddrModeSupported(), NL3D::CPSMultiTexturedParticle::isTouched(), NL3D::CTextureBump::release(), NL3D::IDriver::setMatrix2DForTextureOffsetAddrMode(), NL3D::CMaterial::setTexture(), NL3D::CPSMultiTexturedParticle::setupMultiTexEnv(), NL3D::CMaterial::texEnvOpRGB(), uint8, and NL3D::CPSMultiTexturedParticle::unTouch().

Referenced by NL3D::CPSFaceHelper::drawFaces(), and updateMatBeforeRendering().

00734 {
00736         if (isMultiTextureEnabled() && _MainOp  == EnvBumpMap && driver->isTextureAddrModeSupported(CMaterial::OffsetTexture))
00737         {
00738                 CTextureBump *tb = dynamic_cast<CTextureBump *>((ITexture *) _Texture2);
00739                 if (tb != NULL)
00740                 {                                       
00741                         float normFactor = tb->getNormalizationFactor();
00742                         if (normFactor == 0.f) // have we computed the normalization factor ?
00743                         {
00745                                 tb->generate();
00746                                 normFactor = tb->getNormalizationFactor();
00747                                 tb->release();
00748                         }
00749                         const float bMat[] = { _BumpFactor * normFactor, 0.f, 0.f, _BumpFactor * normFactor};   
00750                         driver->setMatrix2DForTextureOffsetAddrMode(1, bMat);
00751                 }               
00752         }
00753 
00754         if (!isTouched() && areBasicCapsForcedLocal() == areBasicCapsForced()) return;
00755         if (!isMultiTextureEnabled())           
00756         {               
00757                 mat.setTexture(0, primary);
00758                 mat.texEnvOpRGB(0, CMaterial::Modulate);
00759                 mat.setTexture(1, NULL);
00760         }
00761         else
00762         {                               
00763                 if (_MainOp  != EnvBumpMap)
00764                 {                       
00765                         setupMultiTexEnv(_MainOp, primary, _Texture2, mat);
00766                         _MultiTexState &= ~(uint8) EnvBumpMapUsed;
00767                         _MultiTexState &= ~(uint8) AlternateTextureUsed;
00768                 }
00769                 else
00770                 {
00771                         if (!_ForceBasicCaps && driver->isTextureAddrModeSupported(CMaterial::OffsetTexture)) // envbumpmap supported ?
00772                         {
00773                                 CTextureBump *tb = dynamic_cast<CTextureBump *>((ITexture *) _Texture2);
00774                                 if (tb != NULL)
00775                                 {                                       
00776                                         float normFactor = tb->getNormalizationFactor();
00777                                         if (normFactor == 0.f) // have we computed the normalization factor ?
00778                                         {
00780                                                 tb->generate();
00781                                                 normFactor = tb->getNormalizationFactor();
00782                                                 tb->release();
00783                                         }                                       
00784                                         setupMultiTexEnv(_MainOp, primary, _Texture2, mat);     
00785                                 }
00786                                 _MultiTexState &= ~(uint8) AlternateTextureUsed;
00787                                 _MultiTexState |= (uint8) EnvBumpMapUsed;                               
00788                         }
00789                         else // switch to alternate
00790                         {
00791                                 if (isAlternateTexEnabled())
00792                                 {
00793                                         _MultiTexState |= (uint8) AlternateTextureUsed;
00794                                         setupMultiTexEnv(_AlternateOp, primary, _AlternateTexture2, mat);
00795                                         _MultiTexState &= ~(uint8) EnvBumpMapUsed;
00796                                 }
00797                                 else // display the texture as it
00798                                 {
00799                                         setupMultiTexEnv(Decal, primary, NULL, mat);
00800                                         _MultiTexState &= ~(uint8) AlternateTextureUsed;
00801                                         _MultiTexState &= ~(uint8) EnvBumpMapUsed;
00802                                 }
00803                         }
00804                 }
00805         }
00806         
00807         (areBasicCapsForced());
00808         unTouch();
00809 }

void NL3D::CPSMultiTexturedParticle::setupMultiTexEnv TOperator  op,
ITexture tex1,
ITexture tex2,
CMaterial mat
[protected, inherited]
 

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 }

void NL3D::CPSMultiTexturedParticle::setUseLocalDate bool  use  )  [inherited]
 

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 }

void NL3D::CPSMultiTexturedParticle::setUseLocalDateAlt bool  use  )  [inherited]
 

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 }

void NL3D::CPSQuad::setZBias float  value  )  [virtual]
 

Implements NL3D::CPSParticle.

Definition at line 585 of file ps_quad.cpp.

References value.

00586 {
00587         CPSMaterial::setZBias(value);
00588 }

void NL3D::CPSParticle::showTool  )  [virtual, inherited]
 

draw the particles for edition mode. The default behaviour just draw a wireframe model

Definition at line 55 of file ps_particle_basic.cpp.

References NL3D::CPSLocatedBindable::displayIcon2d(), PARTICLES_CHECK_MEM, and uint.

Referenced by NL3D::CPSParticle::step(), NL3D::CPSConstraintMesh::step(), NL3D::CPSMesh::step(), and NL3D::CPSFace::step().

00056 {
00057         PARTICLES_CHECK_MEM;
00058 
00059         CVector I = CVector::I;
00060         CVector J = CVector::J;
00061 
00062         const CVector tab[] = { 2 * J, I + J
00063                                                         , I + J, 2 * I + J
00064                                                         , 2 * I + J, I
00065                                                         , I,  2 * I - J
00066                                                         , 2 * I - J, - .5f * J
00067                                                         , - .5f * J, -2 * I - J
00068                                                         , -2 * I - J, - I
00069                                                         , - I, -2 * I + J
00070                                                         , -2 * I + J, - I + J
00071                                                         , - I + J, 2 * J
00072                                                 };
00073         const uint tabSize = sizeof(tab) / (2 * sizeof(CVector));
00074 
00075         const float sSize = 0.1f;
00076         displayIcon2d(tab, tabSize, sSize);
00077 
00078         PARTICLES_CHECK_MEM;
00079 }

virtual void NL3D::CPSParticle::step TPSProcessPass  pass,
TAnimationTime  ellapsedTime,
TAnimationTime  realEt
[inline, virtual, inherited]
 

process one pass for the particles. The default behaviour shows the particles

Implements NL3D::CPSLocatedBindable.

Reimplemented in NL3D::CPSFace, NL3D::CPSMesh, NL3D::CPSConstraintMesh, NL3D::CPSRibbon, NL3D::CPSRibbonLookAt, and NL3D::CPSTailDot.

Definition at line 74 of file ps_particle_basic.h.

References NL3D::CPSParticle::draw(), NL3D::CPSParticle::hasOpaqueFaces(), NL3D::CPSParticle::hasTransparentFaces(), NL3D::PSBlendRender, NL3D::PSSolidRender, NL3D::PSToolRender, NL3D::CPSParticle::showTool(), and NL3D::TAnimationTime.

00075         {
00076                 if (
00077                         (pass == PSBlendRender && hasTransparentFaces())
00078                         || (pass == PSSolidRender && hasOpaqueFaces())
00079                         )
00080                 {
00081                         draw(pass == PSSolidRender);
00082                 }
00083                 else 
00084                 if (pass == PSToolRender) // edition mode only
00085                 {                       
00086                         showTool();
00087                 }
00088         }

virtual bool NL3D::CPSQuad::supportGlobalColorLighting  )  const [inline, virtual]
 

Implements NL3D::CPSParticle.

Definition at line 71 of file ps_quad.h.

00071 { return true; }

virtual void NL3D::CPSLocatedBindable::systemDateChanged  )  [inline, virtual, inherited]
 

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 {}

void NL3D::CPSMultiTexturedParticle::touch  )  [inline, protected, inherited]
 

Definition at line 635 of file ps_particle_basic.h.

References NL3D::CPSMultiTexturedParticle::_MultiTexState, NL3D::CPSMultiTexturedParticle::TouchFlag, and uint8.

Referenced by NL3D::CPSMultiTexturedParticle::enableAlternateTex(), NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::setAlternateTexOp(), NL3D::CPSMultiTexturedParticle::setBumpFactor(), NL3D::CPSMultiTexturedParticle::setMainTexOp(), NL3D::CPSMultiTexturedParticle::setTexture2(), NL3D::CPSMultiTexturedParticle::setTexture2Alternate(), and updateMatAndVbForTexture().

00635 { _MultiTexState |= (uint8) TouchFlag; }

void NL3D::CPSMultiTexturedParticle::unTouch  )  [inline, protected, inherited]
 

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; }

void NL3D::CPSQuad::updateMatAndVbForColor void   )  [protected, virtual]
 

update the material and the vb so that they match the color scheme. Inherited from CPSColoredParticle

Implements NL3D::CPSColoredParticle.

Definition at line 285 of file ps_quad.cpp.

Referenced by init().

00286 {
00287         // no vb to setup, now..
00288 /*      if (!_ColorScheme)
00289         {               
00290                 _Mat.setColor(_Color);
00291         }
00292         else
00293         {       
00294                 _Mat.setColor(CRGBA::White);
00295         }       */
00296 }

void NL3D::CPSQuad::updateMatAndVbForTexture void   )  [protected, virtual]
 

==================================================================================

Implements NL3D::CPSTexturedParticle.

Definition at line 249 of file ps_quad.cpp.

References NL3D::CMaterial::setTexture(), and NL3D::CPSMultiTexturedParticle::touch().

Referenced by init().

00250 {       
00251         if (CPSMultiTexturedParticle::isMultiTextureEnabled())
00252         {
00253                 touch();
00254         }
00255         else
00256         {
00257                 _Mat.setTexture(0, _TexGroup ? (ITexture *) _TexGroup : (ITexture *) _Tex);
00258         }       
00259 }

void NL3D::CPSQuad::updateMatBeforeRendering IDriver drv  )  [protected]
 

==================================================================================

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 }

void NL3D::CPSQuad::updateVbColNUVForRender CVertexBuffer vb,
uint32  startIndex,
uint32  numQuad,
uint32  srcStep
[protected]
 

calculate current color and texture coordinate before any rendering size can't be higher that quadBufSize ...

Definition at line 386 of file ps_quad.cpp.

References NL3D::FillQuadCoords(), NL3D::FillQuadCoordsLocalTime(), NL3D::CVertexBuffer::getColorPointer(), NL3D::CParticleSystemProcess::getOwner(), NL3D::CParticleSystem::getSystemDate(), NL3D::CVertexBuffer::getTexCoordPointer(), NL3D::CPSMultiTexturedParticle::getUseLocalDate(), NL3D::CPSMultiTexturedParticle::getUseLocalDateAlt(), NL3D::CVertexBuffer::getVertexSize(), NL3D::CPSMultiTexturedParticle::isAlternateTextureUsed(), NL3D::CPSAttribMaker< sint32 >::make(), NL3D::CPSAttribMaker< CRGBA >::make4(), nlassert, quadBufSize, sint32, size, stride, uint32, uint8, NL3D::CTextureGrouped::TFourUV::uv0, NL3D::CTextureGrouped::TFourUV::uv1, NL3D::CTextureGrouped::TFourUV::uv2, NL3D::CTextureGrouped::TFourUV::uv3, and NLMISC::CVector2f::x.

Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFaceLookAtHelper::drawLookAt(), and NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion().

00387 {
00388         nlassert(_Owner);
00389 
00390         if (!size) return;
00391 
00392         if (_ColorScheme)
00393         {
00394                 // compute the colors, each color is replicated 4 times
00395                 _ColorScheme->make4(_Owner, startIndex, vb.getColorPointer(), vb.getVertexSize(), size, srcStep);
00396         }
00397 
00398 
00399         if (_TexGroup) // if it has a constant texture we are sure it has been setupped before...
00400         {       
00401                 sint32 textureIndex[quadBufSize];
00402                 const uint32 stride = vb.getVertexSize(), stride2 = stride << 1, stride3 = stride2 + stride, stride4 = stride2 << 1;
00403                 uint8 *currUV = (uint8 *) vb.getTexCoordPointer();                              
00404                 
00405 
00406                 const sint32 *currIndex;                
00407                 uint32 currIndexIncr; 
00408 
00409                 if (_TextureIndexScheme)
00410                 {
00411                         currIndex = (sint32 *) _TextureIndexScheme->make(_Owner, startIndex, textureIndex, sizeof(sint32), size, true, srcStep);                        
00412                         currIndexIncr = 1;
00413                 }
00414                 else
00415                 {
00416                         currIndex = &_TextureIndex;
00417                         currIndexIncr  = 0;
00418                 }
00419                 
00420                 uint32 left = size;
00421                 while (left--)
00422                 {
00423                         // for now, we don't make texture index wrapping
00424                         const CTextureGrouped::TFourUV &uvGroup = _TexGroup->getUVQuad((uint32) *currIndex);
00425 
00426                         // copy the 4 uv's for this face
00427                         *(CUV *) currUV = uvGroup.uv0;
00428                         *(CUV *) (currUV + stride) = uvGroup.uv1;
00429                         *(CUV *) (currUV + stride2) = uvGroup.uv2;
00430                         *(CUV *) (currUV + stride3) = uvGroup.uv3;
00431 
00432                         // point the next face
00433                         currUV += stride4;
00434                         currIndex += currIndexIncr;
00435                 }               
00436         }
00437 
00438         nlassert(_Owner && _Owner->getOwner());
00439         const float date= (float) _Owner->getOwner()->getSystemDate();
00440         
00441 
00443 
00444         if (CPSMultiTexturedParticle::isMultiTextureEnabled())
00445         {
00446                 
00447                 // perform tex1 animation if needed
00448                 if (!_TexGroup) // doesn't work with texGroup enabled
00449                 {
00450                         if (!isAlternateTextureUsed())
00451                         {
00452                                 if (_Tex && (_TexScroll[0].x != 0 || _TexScroll[0].y != 0))
00453                                 {
00454                                         // animation of texture 1 with main speed
00455                                         if (!getUseLocalDate())
00456                                         {
00457                                                 FillQuadCoords((uint8 *) vb.getTexCoordPointer(0, 0), vb.getVertexSize(), _TexScroll[0], date, size);
00458                                         }
00459                                         else
00460                                         {
00461                                                 FillQuadCoordsLocalTime((uint8 *) vb.getTexCoordPointer(0, 0), vb.getVertexSize(), _TexScroll[0], *_Owner, startIndex, size, srcStep);
00462                                         }
00463                                 }
00464                         }
00465                         else
00466                         {
00467                                 if (_Tex && (_TexScrollAlternate[0].x != 0 || _TexScrollAlternate[0].y != 0))
00468                                 {
00469                                         // animation of texture 1 with alternate speed
00470                                         if (!getUseLocalDateAlt())
00471                                         {
00472                                                 FillQuadCoords((uint8 *) vb.getTexCoordPointer(0, 0), vb.getVertexSize(), _TexScrollAlternate[0], date, size);
00473                                         }
00474                                         else
00475                                         {
00476                                                 FillQuadCoordsLocalTime((uint8 *) vb.getTexCoordPointer(0, 0), vb.getVertexSize(), _TexScrollAlternate[0], *_Owner, startIndex, size, srcStep);
00477                                         }
00478                                 }
00479                         }
00480                 }
00481 
00482                 // perform tex2 animation if needed
00483                 if (!isAlternateTextureUsed())
00484                 {
00485                         if (_Texture2 && (_TexScroll[1].x != 0 || _TexScroll[1].y != 0))
00486                         {
00487                                 // animation of texture 2 with main speed
00488                                 if (!getUseLocalDate())
00489                                 {
00490                                         FillQuadCoords((uint8 *) vb.getTexCoordPointer(0, 1), vb.getVertexSize(), _TexScroll[1], date, size);
00491                                 }
00492                                 else
00493                                 {
00494                                         FillQuadCoordsLocalTime((uint8 *) vb.getTexCoordPointer(0, 1), vb.getVertexSize(), _TexScroll[1], *_Owner, startIndex, size, srcStep);
00495                                 }
00496                         }
00497                 }
00498                 else
00499                 {
00500                         if (_AlternateTexture2 && (_TexScrollAlternate[1].x != 0 || _TexScrollAlternate[1].y != 0))
00501                         {
00502                                 // animation of texture 2 with alternate speed
00503                                 if (!getUseLocalDateAlt())
00504                                 {
00505                                         FillQuadCoords((uint8 *) vb.getTexCoordPointer(0, 1), vb.getVertexSize(), _TexScrollAlternate[1], date, size);
00506                                 }                               
00507                                 else
00508                                 {
00509                                         FillQuadCoordsLocalTime((uint8 *) vb.getTexCoordPointer(0, 1), vb.getVertexSize(), _TexScrollAlternate[1], *_Owner, startIndex, size, srcStep);
00510                                 }
00511                         }
00512                 }
00513 
00514         }       
00515 }

bool NL3D::CPSParticle::usesGlobalColorLighting  )  [inline, inherited]
 

Returns true if the object can use global lighting color. (example : 'lookat' particle do not have normals, so they use global lighting color instead

Definition at line 103 of file ps_particle_basic.h.

References NL3D::CPSParticle::_UsesGlobalColorLighting.

Referenced by NL3D::CPSTailDot::displayRibbons(), NL3D::CPSRibbonLookAt::displayRibbons(), NL3D::CPSRibbon::displayRibbons(), NL3D::CPSShockWave::draw(), NL3D::CPSDot::draw(), NL3D::CPSTailDot::setupGlobalColor(), NL3D::CPSFanLight::setupMaterial(), NL3D::CPSRibbon::setupTexturedGlobalColor(), NL3D::CPSRibbon::setupUntexturedGlobalColor(), NL3D::CPSTailDot::step(), NL3D::CPSRibbonLookAt::step(), NL3D::CPSRibbon::step(), updateMatBeforeRendering(), NL3D::CPSTailDot::updateMaterial(), NL3D::CPSRibbon::updateTexturedMaterial(), and NL3D::CPSRibbon::updateUntexturedMaterial().

00103 { return _UsesGlobalColorLighting; }


Friends And Related Function Documentation

friend class CPSLocated [friend, inherited]
 

Reimplemented in NL3D::CPSForce.

Definition at line 986 of file ps_located.h.


Field Documentation

bool NL3D::CPSLocatedBindable::_Active [protected, inherited]
 

Definition at line 1033 of file ps_located.h.

Referenced by NL3D::CPSLocatedBindable::isActive(), and NL3D::CPSLocatedBindable::setActive().

TOperator NL3D::CPSMultiTexturedParticle::_AlternateOp [protected, inherited]
 

Definition at line 617 of file ps_particle_basic.h.

Referenced by NL3D::CPSMultiTexturedParticle::enableAlternateTex(), NL3D::CPSMultiTexturedParticle::getAlternateTexOp(), NL3D::CPSMultiTexturedParticle::setAlternateTexOp(), NL3D::CPSMultiTexturedParticle::setTexture2Alternate(), and NL3D::CPSMultiTexturedParticle::setupMaterial().

NLMISC::CSmartPtr<ITexture> NL3D::CPSMultiTexturedParticle::_AlternateTexture2 [protected, inherited]
 

Definition at line 619 of file ps_particle_basic.h.

Referenced by NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::enumTexs(), NL3D::CPSMultiTexturedParticle::getTexture2Alternate(), NL3D::CPSMultiTexturedParticle::setAlternateTexOp(), NL3D::CPSMultiTexturedParticle::setTexture2Alternate(), and NL3D::CPSMultiTexturedParticle::setupMaterial().

float NL3D::CPSMultiTexturedParticle::_BumpFactor [protected, inherited]
 

Definition at line 644 of file ps_particle_basic.h.

Referenced by NL3D::CPSMultiTexturedParticle::getBumpFactor(), NL3D::CPSMultiTexturedParticle::setBumpFactor(), and NL3D::CPSMultiTexturedParticle::setupMaterial().

CRGBA NL3D::CPSColoredParticle::_Color [protected, inherited]
 

Definition at line 226 of file ps_particle_basic.h.

CPSAttribMaker<CRGBA>* NL3D::CPSColoredParticle::_ColorScheme [protected, inherited]
 

Definition at line 228 of file ps_particle_basic.h.

Referenced by NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSConstraintMeshHelper::drawMeshs(), and NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs().

uint32 NL3D::CPSLocatedBindable::_ExternID [protected, inherited]
 

Definition at line 1027 of file ps_located.h.

Referenced by NL3D::CPSLocatedBindable::getExternID(), NL3D::CPSLocatedBindable::setExternID(), and NL3D::CPSLocatedBindable::~CPSLocatedBindable().

bool NL3D::CPSMultiTexturedParticle::_ForceBasicCaps = false [static, protected, inherited]
 

Definition at line 628 of file ps_particle_basic.cpp.

Referenced by NL3D::CPSMultiTexturedParticle::areBasicCapsForced(), NL3D::CPSMultiTexturedParticle::forceBasicCaps(), and NL3D::CPSMultiTexturedParticle::setupMaterial().

TPSLod NL3D::CPSLocatedBindable::_LOD [protected, inherited]
 

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().

TOperator NL3D::CPSMultiTexturedParticle::_MainOp [protected, inherited]
 

Definition at line 617 of file ps_particle_basic.h.

Referenced by NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::enumTexs(), NL3D::CPSMultiTexturedParticle::getMainTexOp(), NL3D::CPSMultiTexturedParticle::setMainTexOp(), NL3D::CPSMultiTexturedParticle::setTexture2(), and NL3D::CPSMultiTexturedParticle::setupMaterial().

CMaterial NL3D::CPSMaterial::_Mat [protected, inherited]
 

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().

uint8 NL3D::CPSMultiTexturedParticle::_MultiTexState [protected, inherited]
 

Definition at line 629 of file ps_particle_basic.h.

Referenced by NL3D::CPSMultiTexturedParticle::areBasicCapsForcedLocal(), NL3D::CPSMultiTexturedParticle::enableAlternateTex(), NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::forceBasicCapsLocal(), NL3D::CPSMultiTexturedParticle::getUseLocalDate(), NL3D::CPSMultiTexturedParticle::getUseLocalDateAlt(), NL3D::CPSMultiTexturedParticle::isAlternateTexEnabled(), NL3D::CPSMultiTexturedParticle::isAlternateTextureUsed(), NL3D::CPSMultiTexturedParticle::isEnvBumpMapUsed(), NL3D::CPSMultiTexturedParticle::isMultiTextureEnabled(), NL3D::CPSMultiTexturedParticle::isTouched(), NL3D::CPSMultiTexturedParticle::setupMaterial(), NL3D::CPSMultiTexturedParticle::setUseLocalDate(), NL3D::CPSMultiTexturedParticle::setUseLocalDateAlt(), NL3D::CPSMultiTexturedParticle::touch(), and NL3D::CPSMultiTexturedParticle::unTouch().

std::string NL3D::CPSLocatedBindable::_Name [protected, inherited]
 

Definition at line 1031 of file ps_located.h.

CPSLocated* NL3D::CPSLocatedBindable::_Owner [protected, inherited]
 

Definition at line 1026 of file ps_located.h.

Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSFaceLookAtHelper::drawLookAt(), NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(), NL3D::CPSConstraintMeshHelper::drawMeshs(), and NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs().

float NL3D::CPSSizedParticle::_ParticleSize [protected, inherited]
 

Definition at line 289 of file ps_particle_basic.h.

Referenced by NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSFaceLookAtHelper::drawLookAt(), NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(), NL3D::CPSConstraintMeshHelper::drawMeshs(), NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs(), NL3D::CPSSizedParticle::getSize(), and NL3D::CPSSizedParticle::setSize().

CPSAttribMaker<float>* NL3D::CPSSizedParticle::_SizeScheme [protected, inherited]
 

Definition at line 290 of file ps_particle_basic.h.

Referenced by NL3D::CPSSizedParticle::deleteSizeElement(), NL3D::CPSFaceHelper::drawFaces(), NL3D::CPSFanLightHelper::drawFanLight(), NL3D::CPSFaceLookAtHelper::drawLookAt(), NL3D::CPSFaceLookAtHelper::drawLookAtAlignOnMotion(), NL3D::CPSConstraintMeshHelper::drawMeshs(), NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs(), NL3D::CPSSizedParticle::getSizeScheme(), NL3D::CPSSizedParticle::newSizeElement(), NL3D::CPSSizedParticle::resizeSize(), NL3D::CPSSizedParticle::setSize(), NL3D::CPSSizedParticle::setSizeScheme(), and NL3D::CPSSizedParticle::~CPSSizedParticle().

CSmartPtr<ITexture> NL3D::CPSTexturedParticle::_Tex [protected, inherited]
 

Definition at line 472 of file ps_particle_basic.h.

Referenced by NL3D::CPSFaceHelper::drawFaces().

CSmartPtr<CTextureGrouped> NL3D::CPSTexturedParticle::_TexGroup [protected, inherited]
 

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().

NLMISC::CVector2f NL3D::CPSMultiTexturedParticle::_TexScroll[2] [protected, inherited]
 

texture scrolling

Definition at line 622 of file ps_particle_basic.h.

Referenced by NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::getScrollSpeed(), and NL3D::CPSMultiTexturedParticle::setScrollSpeed().

NLMISC::CVector2f NL3D::CPSMultiTexturedParticle::_TexScrollAlternate[2] [protected, inherited]
 

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().

NLMISC::CSmartPtr<ITexture> NL3D::CPSMultiTexturedParticle::_Texture2 [protected, inherited]
 

Definition at line 618 of file ps_particle_basic.h.

Referenced by NL3D::CPSMultiTexturedParticle::enableAlternateTex(), NL3D::CPSMultiTexturedParticle::enableMultiTexture(), NL3D::CPSMultiTexturedParticle::enumTexs(), NL3D::CPSMultiTexturedParticle::getTexture2(), NL3D::CPSMultiTexturedParticle::setMainTexOp(), NL3D::CPSMultiTexturedParticle::setTexture2(), and NL3D::CPSMultiTexturedParticle::setupMaterial().

sint32 NL3D::CPSTexturedParticle::_TextureIndex [protected, inherited]
 

Definition at line 480 of file ps_particle_basic.h.

Referenced by NL3D::CPSTexturedParticle::getTextureIndex(), and NL3D::CPSTexturedParticle::setTextureIndex().

CPSAttribMaker<sint32>* NL3D::CPSTexturedParticle::_TextureIndexScheme [protected, inherited]
 

Definition at line 477 of file ps_particle_basic.h.

Referenced by NL3D::CPSTexturedParticle::deleteTextureIndexElement(), NL3D::CPSTexturedParticle::getTextureIndexScheme(), NL3D::CPSTexturedParticle::newTextureIndexElement(), NL3D::CPSTexturedParticle::resizeTextureIndex(), NL3D::CPSTexturedParticle::setTexture(), NL3D::CPSTexturedParticle::setTextureIndex(), NL3D::CPSTexturedParticle::setTextureIndexScheme(), and NL3D::CPSTexturedParticle::~CPSTexturedParticle().

CVertexBuffer NL3D::CPSQuad::_VBPos [static, protected]
 

the various kind of vertex buffers we need for quads

Definition at line 53 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosCol [static, protected]
 

Definition at line 54 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1 [static, protected]
 

Definition at line 55 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1Anim [static, protected]
 

Definition at line 57 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1AnimCol [static, protected]
 

Definition at line 58 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1AnimColTex2 [static, protected]
 

Definition at line 63 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1AnimColTex2Anim [static, protected]
 

Definition at line 68 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1AnimTex2 [static, protected]
 

Definition at line 62 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1AnimTex2Anim [static, protected]
 

Definition at line 67 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1Col [static, protected]
 

Definition at line 56 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1ColTex2 [static, protected]
 

Definition at line 61 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1ColTex2Anim [static, protected]
 

Definition at line 66 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1Tex2 [static, protected]
 

Definition at line 60 of file ps_quad.cpp.

CVertexBuffer NL3D::CPSQuad::_VBPosTex1Tex2Anim [static, protected]
 

Definition at line 65 of file ps_quad.cpp.


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 07:21:01 2004 for NeL by doxygen 1.3.6