# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

NL3D::CPSFace Class Reference

A face particle Unlike FaceLookAt, these particle can have an orientation in space. More...

#include <ps_face.h>

Inheritance diagram for NL3D::CPSFace:

NL3D::CPSQuad NL3D::CPSRotated3DPlaneParticle NL3D::CPSHintParticleRotateTheSame NL3D::CPSParticle NL3D::CPSColoredParticle NL3D::CPSTexturedParticle NL3D::CPSMultiTexturedParticle NL3D::CPSSizedParticle NL3D::CPSMaterial NL3D::CPSLocatedBindable NLMISC::IStreamable NLMISC::IClassable List of all members.

Public Methods

 CPSFace (CSmartPtr< ITexture > tex=NULL)
 ======================================================================================. More...

void serial (NLMISC::IStream &f) throw (NLMISC::EStream)
 ======================================================================================. More...

 NLMISC_DECLARE_CLASS (CPSFace)
void hintRotateTheSame (uint32 nbConfiguration, float minAngularVelocity=NLMISC::Pi, float maxAngularVelocity=NLMISC::Pi)
 ======================================================================================. More...

void disableHintRotateTheSame (void)
 disable the hint 'hintRotateTheSame' The previous set scheme for roation is used. More...

uint32 checkHintRotateTheSame (float &min, float &max) const
 check wether a call to hintRotateTheSame was performed. More...


Protected Methods

virtual void step (TPSProcessPass pass, TAnimationTime ellapsedTime, TAnimationTime realEllapsedTime)
 ======================================================================================. More...

virtual void newElement (CPSLocated *emitterLocated, uint32 emitterIndex)
 ======================================================================================. More...

virtual void deleteElement (uint32 index)
 ======================================================================================. More...

virtual void resize (uint32 size)
 ======================================================================================. More...

void fillIndexesInPrecompBasis (void)
 ======================================================================================. More...

virtual CPSLocatedgetPlaneBasisOwner (void)
 if this is false, constant size will be used instead of a scheme deriver must return their owner there. More...


Protected Attributes

float _MinAngularVelocity
float _MaxAngularVelocity
std::vector< CPlaneBasisPair_PrecompBasis
 a set of precomp basis, before and after transfomation in world space, used if the hint 'RotateTheSame' has been called. More...

std::vector< uint32_IndexInPrecompBasis
 this contain an index in _PrecompBasis for each particle. More...


Friends

class CPSFaceHelper

Detailed Description

A face particle Unlike FaceLookAt, these particle can have an orientation in space.

They are drawn with an angle bias of 45° in their local basis (for optimisation purpose)

^ y | 0 / \ / \ 3 1--> x \ / \ / 2 If all particle must rotate the same, but with a rotattionnal bias, a hint can be provided, so that there are batch of particle that share the same orientation. The users must give the number of various phase This is the fastest. Other cases need an attribute maker that produce a couple of vectors , giving the x & y direction of the local basis (plane particle)

Definition at line 60 of file ps_face.h.


Constructor & Destructor Documentation

NL3D::CPSFace::CPSFace CSmartPtr< ITexture   tex = NULL
 

======================================================================================.

Definition at line 205 of file ps_face.cpp.

References NL3D::CPSLocatedBindable::_Name.


Member Function Documentation

uint32 NL3D::CPSFace::checkHintRotateTheSame float &    min,
float &    max
const [inline, virtual]
 

check wether a call to hintRotateTheSame was performed.

Returns:
0 if the hint is disabled, the number of configurations else
See also:
hintRotateTheSame(), CPSRotated3dPlaneParticle

Implements NL3D::CPSHintParticleRotateTheSame.

Definition at line 101 of file ps_face.h.

References _MaxAngularVelocity, _MinAngularVelocity, _PrecompBasis, and min.

void NL3D::CPSFace::deleteElement uint32    index [protected, virtual]
 

======================================================================================.

Reimplemented from NL3D::CPSQuad.

Definition at line 379 of file ps_face.cpp.

References _IndexInPrecompBasis, NL3D::CPSLocatedBindable::_Owner, _PrecompBasis, NL3D::CPSRotated3DPlaneParticle::deletePlaneBasisElement, and index.

void NL3D::CPSFace::disableHintRotateTheSame void    [inline, virtual]
 

disable the hint 'hintRotateTheSame' The previous set scheme for roation is used.

See also:
hintRotateTheSame(), CPSRotated3dPlaneParticle

Implements NL3D::CPSHintParticleRotateTheSame.

Definition at line 91 of file ps_face.h.

References hintRotateTheSame.

void NL3D::CPSFace::fillIndexesInPrecompBasis void    [protected]
 

======================================================================================.

Definition at line 353 of file ps_face.cpp.

References _IndexInPrecompBasis, NL3D::CPSLocatedBindable::_Owner, and _PrecompBasis.

Referenced by hintRotateTheSame.

virtual CPSLocated* NL3D::CPSFace::getPlaneBasisOwner void    [inline, protected, virtual]
 

if this is false, constant size will be used instead of a scheme deriver must return their owner there.

Implements NL3D::CPSRotated3DPlaneParticle.

Definition at line 119 of file ps_face.h.

References NL3D::CPSLocatedBindable::_Owner, and NL3D::CPSLocatedBindable::CPSLocated.

void NL3D::CPSFace::hintRotateTheSame uint32    nbConfiguration,
float    minAngularVelocity = NLMISC::Pi,
float    maxAngularVelocity = NLMISC::Pi
[virtual]
 

======================================================================================.

Any previous set scheme for 3d rotation is kept.

am: the number of rotation configuration we have. The more high it is, the slower it'll be
If this is too low, a lot of particles will have the same orientation If it is 0, then the hint is disabled
Parameters:
minAngularVelocity  : the maximum angular velocity for particle rotation
maxAngularVelocity  : the maximum angular velocity for particle rotation
See also:
CPSRotated3dPlaneParticle

Implements NL3D::CPSHintParticleRotateTheSame.

Definition at line 327 of file ps_face.cpp.

References _MaxAngularVelocity, _MinAngularVelocity, _PrecompBasis, fillIndexesInPrecompBasis, NL3D::MakeRandomUnitVect, and v.

Referenced by disableHintRotateTheSame.

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

======================================================================================.

Reimplemented from NL3D::CPSQuad.

Definition at line 367 of file ps_face.cpp.

References _IndexInPrecompBasis, NL3D::CPSLocatedBindable::_Owner, _PrecompBasis, and NL3D::CPSRotated3DPlaneParticle::newPlaneBasisElement.

NL3D::CPSFace::NLMISC_DECLARE_CLASS CPSFace   
 

void NL3D::CPSFace::resize uint32    size [protected, virtual]
 

======================================================================================.

Reimplemented from NL3D::CPSQuad.

Definition at line 391 of file ps_face.cpp.

References _IndexInPrecompBasis, _PrecompBasis, nlassert, and NL3D::CPSRotated3DPlaneParticle::resizePlaneBasis.

void NL3D::CPSFace::serial NLMISC::IStream   f throw (NLMISC::EStream) [virtual]
 

======================================================================================.

Reimplemented from NL3D::CPSQuad.

Definition at line 284 of file ps_face.cpp.

void NL3D::CPSFace::step TPSProcessPass    pass,
TAnimationTime    ellapsedTime,
TAnimationTime    realEllapsedTime
[protected, virtual]
 

======================================================================================.

Reimplemented from NL3D::CPSParticle.

Definition at line 211 of file ps_face.cpp.

References _IndexInPrecompBasis, NL3D::CPSLocatedBindable::_Owner, _PrecompBasis, NL3D::CPSParticle::computeSrcStep, NL3D::CPSQuad::hasOpaqueFaces, NL3D::CPSQuad::hasTransparentFaces, NL3D::PSBlendRender, NL3D::PSMotion, NL3D::PSSolidRender, NL3D::PSToolRender, NL3D::CPSParticle::showTool, step, NL3D::TAnimationTime, NL3D::TIteratorVectStep1616, and NL3D::TPSProcessPass.

Referenced by step.


Friends And Related Function Documentation

friend class CPSFaceHelper [friend]
 

Definition at line 111 of file ps_face.h.


Member Data Documentation

std::vector<uint32> NL3D::CPSFace::_IndexInPrecompBasis [protected]
 

this contain an index in _PrecompBasis for each particle.

Definition at line 135 of file ps_face.h.

Referenced by deleteElement, fillIndexesInPrecompBasis, newElement, resize, and step.

float NL3D::CPSFace::_MaxAngularVelocity [protected]
 

Definition at line 123 of file ps_face.h.

Referenced by checkHintRotateTheSame, and hintRotateTheSame.

float NL3D::CPSFace::_MinAngularVelocity [protected]
 

Definition at line 122 of file ps_face.h.

Referenced by checkHintRotateTheSame, and hintRotateTheSame.

std::vector< CPlaneBasisPair > NL3D::CPSFace::_PrecompBasis [protected]
 

a set of precomp basis, before and after transfomation in world space, used if the hint 'RotateTheSame' has been called.

Definition at line 132 of file ps_face.h.

Referenced by checkHintRotateTheSame, deleteElement, fillIndexesInPrecompBasis, hintRotateTheSame, newElement, resize, and step.


The documentation for this class was generated from the following files: