#include <particle_system_model.h>
Inheritance diagram for NL3D::CParticleSystemModel:
Definition at line 63 of file particle_system_model.h.
User params / animation | |
enum | TAnimValues { OwnerBit = CTransformShape::AnimValueLast, PSParam0, PSParam1, PSParam2, PSParam3, PSTrigger, AnimValueLast } |
for now, we have 4 animatables value in a system More... | |
void | bypassGlobalUserParamValue (uint userParamIndex, bool byPass=true) |
for now, we have 4 animatables value in a system | |
virtual ITrack * | getDefaultTrack (uint valueId) |
===================================================================================== | |
virtual IAnimatedValue * | getValue (uint valueId) |
===================================================================================== | |
virtual const char * | getValueName (uint valueId) const |
===================================================================================== | |
bool | isGlobalUserParamValueBypassed (uint userParamIndex) const |
for now, we have 4 animatables value in a system | |
virtual void | registerToChannelMixer (CChannelMixer *chanMixer, const std::string &prefix="") |
===================================================================================== | |
const char * | getPSParamName (uint valueId) |
===================================================================================== | |
Object | |
CParticleSystemModel () | |
ctor | |
~CParticleSystemModel () | |
===================================================================================== | |
void | registerBasic () |
===================================================================================== | |
Skinning Behavior. | |
virtual const std::vector< NLMISC::CBSphere > * | getSkinBoneSphere () const |
virtual const std::vector< sint32 > * | getSkinBoneUsage () const |
virtual bool | isSkinnable () const |
Deriver must change this method if the model can be skinned. called rarely. | |
virtual sint | renderShadowSkinGeom (uint remainingVertices, uint8 *vbDest) |
virtual void | renderShadowSkinPrimitives (CMaterial &castMat, IDriver *drv, uint baseVertex) |
virtual void | renderSkin (float alphaMRM) |
virtual sint | renderSkinGroupGeom (float alphaMRM, uint remainingVertices, uint8 *dest) |
virtual void | renderSkinGroupPrimitives (uint baseVertex, std::vector< CSkinSpecularRdrPass > &specularRdrPasses, uint skinIndex) |
virtual void | renderSkinGroupSpecularRdrPass (uint rdrPass) |
Render a specific specular renderPass returned by renderSkinGroupPrimitives. | |
virtual void | setApplySkin (bool state) |
virtual bool | supportShadowSkinGrouping () const |
Special Skinning For ShadowMapping. | |
virtual bool | supportSkinGrouping () const |
uint | _FatherBoneId |
CSkeletonModel * | _FatherSkeletonModel |
[NOHEADER] | |
uint32 | isNeedUpdateFrozenStaticLightSetup () const |
non-zero if the object has a FrozenStaticLightSetup not correclty updated. | |
uint32 | isNeedUpdateLighting () const |
non-zero if the object needs to updatelighting. | |
CLightContribution | _LightContribution |
The contribution of all lights. This enlarge the struct only of approx 15%. | |
CLightingManager::CQGItLightedModel | _LightedModelIt |
each transform may be in a quadGird of lighted models (see CLightingManager) | |
Hrc Traversal | |
void | updateClipTravForAncestorSkeleton () |
void | updateWorld () |
Update the world state according to the parent world state and the local states. | |
CSkeletonModel * | _AncestorSkeletonModel |
bool | _ClipLinkedInSonsOfAncestorSkeletonModelGroup |
bool | _DontUnfreezeChildren |
bool | _Frozen |
sint64 | _LocalDate |
CMatrix | _LocalMatrix |
Hrc IN variables. | |
CHrcTrav::TVisibility | _LocalVis |
sint64 | _WorldDate |
CMatrix | _WorldMatrix |
Hrc OUT variables. | |
bool | _WorldVis |
Public Types | |
enum | TTransformMode { DirectMatrix = 0, RotEuler, RotQuat, TransformModeCount } |
Public Member Functions | |
void | activateEmitters (bool active) |
virtual bool | canStartStop () |
Test if there is a start/stop caps in the objects (some fxs such as remanence). | |
bool | compareMatrixDate (uint64 callerDate) const |
void | forceInstanciate () |
void | forceSetUserMatrix (const NLMISC::CMatrix &userMatrix) |
void | freeze () |
void | freezeHRC () |
virtual void | getAABBox (NLMISC::CAABBox &bbox) const |
===================================================================================== | |
CSkeletonModel * | getAncestorSkeletonModel () const |
bool | getChannelMixerOwnerShip () const |
CInstanceGroup * | getClusterSystem () |
float | getDistMax () const |
bool | getForceClipRoot () const |
CLightContribution & | getLightContribution () |
virtual void | getLightHotSpotInWorld (CVector &modelPos, float &modelRadius) const |
virtual CMaterial * | getMaterial (uint materialId) |
virtual const CMaterial * | getMaterial (uint materialId) const |
const CMatrix & | getMatrix () const |
Get the matrix, compute her if necessary (work in all modes). | |
uint64 | getMatrixDate () const |
virtual uint | getNumMaterial () const |
virtual float | getNumTriangles (float distance) |
===================================================================================== | |
uint | getOrderingLayer () const |
Get the ordering layer. | |
CScene * | getOwnerScene () const |
get the scene which has created us | |
const sint & | getRefCount () const |
CSkeletonModel * | getSkeletonModel () const |
Get the skeleton model. Returnr NULL in normal mode. | |
bool | getUserClipping () const |
Return the user clipping state. | |
NLMISC::CRGBA | getUserColor () const |
const NLMISC::CMatrix & | getUserMatrix () const |
CHrcTrav::TVisibility | getVisibility () |
Get the local visibility state. | |
const CMatrix & | getWorldMatrix () const |
bool | hasActiveEmitters () const |
void | heritVisibility () |
herit the visibility from his father. (default behavior). | |
void | hide () |
Hide the object and his sons. | |
bool | isClipVisible () const |
bool | isHrcVisible () const |
bool | isLinkToQuadCluster () const |
true if the model is linked to a quadCluster | |
uint32 | isOpaque () |
uint32 | isQuadGridClipEnabled () const |
virtual bool | isStarted () const |
uint32 | isTransparent () |
void | setChannelMixerOwnerShip (bool enable=true) |
void | setClusterSystem (CInstanceGroup *pCS) |
void | setDistMax (float distMax) |
void | setDontUnfreezeChildren (bool val) |
void | setForceClipRoot (bool forceClipRoot) |
void | setLogicInfo (ILogicInfo *logicInfo) |
void | setOpacity (bool v) |
void | setOrderingLayer (uint layer) |
void | setTransparency (bool v) |
void | setUserClipping (bool enable) |
void | setUserColor (NLMISC::CRGBA userColor) |
void | setUserMatrix (const NLMISC::CMatrix &userMatrix) |
void | setWorldMatrix (const CMatrix &mat) |
void | setZBias (float value) |
void | show () |
Show the objet and his sons. | |
virtual void | start () |
virtual void | stop () |
void | unfreezeHRC () |
void | updateLightingInfos (void) |
===================================================================================== | |
void | updateOpacityInfos (void) |
===================================================================================== | |
CTransform traverse specialisation | |
virtual bool | clip () |
clip method called by traverseClip(). deafult is always visible | |
virtual void | traverseAnimDetail () |
===================================================================================== | |
virtual void | traverseClip () |
virtual void | traverseRender () |
no-op by default | |
void | enableAutoGetEllapsedTime (bool enable=true) |
TAnimationTime | getEllapsedTime (void) const |
get the ellapsed time used for animation | |
float | getEllapsedTimeRatio () const |
bool | isAutoGetEllapsedTimeEnabled (void) const |
tells wether the model will querry himself for the ellapsed time | |
void | setEllapsedTime (TAnimationTime ellapsedTime) |
set the ellapsed time (in second) used for animation. | |
void | setEllapsedTimeRatio (float value) |
Edition related methods | |
void | enableDisplayTools (bool enable=true) |
activate the display of tool (for edition purpose) | |
bool | getEditionMode (void) const |
test if edition mode is activated | |
bool | isToolDisplayEnabled (void) const |
activate the display of tool (for edition purpose) | |
void | setEditionMode (bool enable=true) |
===================================================================================== | |
void | touchLightableState (void) |
edition purpose : touch the system to tell that the lightable state of the system has changed (added/removed lightable faces ) | |
void | touchTransparencyState (void) |
edition purpose : touch the system to tell that the transparency state of the system has changed (added/removed opaque/tansparent faces ) | |
Embedded particle system | |
const CParticleSystem * | getPS (void) const |
CParticleSystem * | getPS (void) |
void | setParticleSystem (CParticleSystem *ps) |
Life managment | |
bool | isInvalid (void) const |
bool | isPSModelObserver (IPSModelObserver *obs) |
===================================================================================== | |
void | registerPSModelObserver (IPSModelObserver *obs) |
===================================================================================== | |
void | removePSModelObserver (IPSModelObserver *obs) |
===================================================================================== | |
Static Public Member Functions | |
CTransform * | creator () |
create an instance of this class | |
const char * | getPivotValueName () |
const char * | getPosValueName () |
const char * | getRotEulerValueName () |
const char * | getRotQuatValueName () |
const char * | getScaleValueName () |
Data Fields | |
sint | crefs |
CPtrInfo * | pinfo |
CSmartPtr< IShape > | Shape |
The shape, the object instancied. | |
Static Public Attributes | |
CPtrInfo | NullPtrInfo |
Protected Member Functions | |
sint | addValue (CChannelMixer *chanMixer, uint valueId, uint ownerValueId, const std::string &prefix, bool detail) |
void | clearFlag (uint valueId) |
This method clear a bit in the bitset. | |
void | forceCompute () |
CChannelMixer * | getChannelMixer () const |
bool | getShowWhenLODSticked () const |
Test if obj must be displayed when sticked to an object displayed as a LOD (example: sword in hand of a character displayed as a LOD state). | |
void | setFlag (uint valueId) |
This method set a bit in the bitset. | |
void | setupCurrentLightContribution (CLightContribution *lightContrib, bool useLocalAtt) |
virtual void | unlinkFromQuadCluster () |
special feature for CQuadGridClipManager. remove from it. | |
Protected Attributes | |
uint32 | _RenderFilterType |
Private Member Functions | |
bool | checkAgainstPyramid (const std::vector< CPlane > &worldFrustumPyramid) const |
========================================================================================= | |
bool | checkDestroyCondition (CParticleSystem *ps) |
void | doAnimate () |
===================================================================================== | |
void | insertInVisibleList () |
void | invalidateAutoAnimatedHandle () |
void | reallocRsc () |
Called when the resource (attached system) for this system must be reallocated. | |
void | refreshRscDeletion (const std::vector< CPlane > &worldFrustumPyramid, const NLMISC::CVector &viewerPos) |
===================================================================================== | |
void | releasePSPointer () |
===================================================================================== | |
void | releaseRsc () |
===================================================================================== | |
void | releaseRscAndInvalidate () |
===================================================================================== | |
Private Attributes | |
CParticleSystemManager::TAlwaysAnimatedModelHandle | _AnimatedModelHandle |
CParticleSystem::TAnimType | _AnimType |
bool | _AutoGetEllapsedTime: 1 |
uint8 | _BypassGlobalUserParam |
bool | _EditionMode: 1 |
TAnimationTime | _EllapsedTime |
float | _EllapsedTimeRatio |
bool | _EmitterActive: 1 |
bool | _InClusterAndVisible: 1 |
bool | _InsertedInVisibleList: 1 |
if false, system should be recreated | |
bool | _Invalidated: 1 |
bool | _LightableStateTouched: 1 |
CParticleSystemManager::TModelHandle | _ModelHandle |
std::vector< IPSModelObserver * > | _Observers |
NLMISC::CSmartPtr< CParticleSystem > | _ParticleSystem |
CScene * | _Scene |
bool | _ToolDisplayEnabled: 1 |
bool | _TransparencyStateTouched: 1 |
CAnimatedValueBool | _TriggerAnimatedValue |
NLMISC::CRGBA | _UserColor |
NLMISC::CMatrix | _UserMatrix |
CAnimatedValueFloat | _UserParam [MaxPSUserParam] |
user params of the system | |
float | _ZBias |
Friends | |
class | CParticleSystemManager |
class | CParticleSystemShape |
struct | CPtrInfo |
|
for now, we have 4 animatables value in a system
Reimplemented from NL3D::ITransformable. Definition at line 210 of file particle_system_model.h.
|
|
Definition at line 58 of file transformable.h. Referenced by NL3D::ITransformable::getTransformMode().
00059 { 00060 DirectMatrix=0, // DirectMatrixMode. 00061 RotEuler, // Matrix is computed from sperated composantes, with euler rotation. 00062 RotQuat, // Matrix is computed from sperated composantes, with quat rotation (default). 00063 00064 TransformModeCount 00065 }; |
|
ctor ===================================================================================== ctor Definition at line 117 of file particle_system_model.cpp. References _TriggerAnimatedValue, NL3D::CTransform::setOpacity(), NL3D::CTransform::setTransparency(), and NL3D::CAnimatedValueNotBlendable< bool >::Value.
00117 : _AutoGetEllapsedTime(true), 00118 _ParticleSystem(NULL), 00119 _Scene(NULL), 00120 _EllapsedTime(0.01f), 00121 _EllapsedTimeRatio(1.f), 00122 _ToolDisplayEnabled(false), 00123 _TransparencyStateTouched(true), 00124 _LightableStateTouched(true), 00125 _EditionMode(false), 00126 _Invalidated(false), 00127 _InsertedInVisibleList(false), 00128 _InClusterAndVisible(false), 00129 _EmitterActive(true), 00130 _BypassGlobalUserParam(0), 00131 _AnimType(CParticleSystem::AnimVisible), 00132 _UserColor(CRGBA::White), 00133 _ZBias(0.f) 00134 { 00135 setOpacity(false); 00136 setTransparency(true); 00137 IAnimatable::resize(AnimValueLast); 00138 _TriggerAnimatedValue.Value = true; 00139 00140 // AnimDetail behavior: Must be traversed in AnimDetail, even if no channel mixer registered 00141 CTransform::setIsForceAnimDetail(true); 00142 00143 // RenderFilter: We are a Landscape 00144 _RenderFilterType= UScene::FilterPS; 00145 } |
|
=====================================================================================
Definition at line 232 of file particle_system_model.cpp. References NL3D::CSkeletonModel::detachSkeletonSon(), nlassert, and releaseRsc().
00233 { 00234 nlassert(_Scene); 00235 releaseRsc(); 00236 // Auto detach me from skeleton. Must do it here, not in ~CTransform(). 00237 if(_FatherSkeletonModel) 00238 { 00239 // detach me from the skeleton. 00240 // clip and hrc hierarchy is modified. 00241 _FatherSkeletonModel->detachSkeletonSon(this); 00242 nlassert(_FatherSkeletonModel==NULL); 00243 } 00244 } |
|
Definition at line 1040 of file particle_system_model.cpp. References _EmitterActive, and _ParticleSystem.
01041 { 01042 if (active == _EmitterActive) return; 01043 _EmitterActive = active; 01044 if (_ParticleSystem) _ParticleSystem->activateEmitters(active); 01045 } |
|
This is a tool function which add a given value to a channel.
Definition at line 37 of file animatable.cpp. References NL3D::CChannelMixer::addChannel(), NL3D::IAnimatable::getDefaultTrack(), NL3D::IAnimatable::getValue(), NL3D::IAnimatable::getValueName(), nlassert, sint, and uint. Referenced by NL3D::CTransform::registerToChannelMixer(), registerToChannelMixer(), NL3D::CCamera::registerToChannelMixer(), NL3D::CBone::registerToChannelMixer(), NL3D::CAnimatedMorph::registerToChannelMixer(), NL3D::CAnimatedMaterial::registerToChannelMixer(), and NL3D::CAnimatedLightmap::registerToChannelMixer().
00038 { 00039 nlassert(chanMixer); 00040 return chanMixer->addChannel(prefix+getValueName(valueId), this, getValue(valueId), getDefaultTrack(valueId), valueId, ownerValueId, detail); 00041 } |
|
for now, we have 4 animatables value in a system
Definition at line 1009 of file particle_system_model.cpp. References NL3D::MaxPSUserParam, nlassert, nlctassert, and uint. Referenced by NL3D::CParticleSystemInstanceUser::bypassGlobalUserParamValue().
01010 { 01011 nlctassert(MaxPSUserParam < 8); // there should be less than 8 parameters because of mask stored in a byte 01012 nlassert(userParamIndex < MaxPSUserParam); 01013 if (byPass) _BypassGlobalUserParam |= (1 << userParamIndex); 01014 else _BypassGlobalUserParam &= ~(1 << userParamIndex); 01015 } |
|
true if the instance cast shadow. By default false
Definition at line 470 of file transform.h. References NL3D::CTransform::getStateFlag(), and NL3D::CTransform::IsFinalShadowMapCaster. Referenced by NL3D::CClipTrav::clipSkeletonShadowMaps(), NL3D::CTransform::enableCastShadowMap(), NL3D::CTransform::setGeneratingShadowMap(), and NL3D::CMeshInstance::traverseRender().
00470 {return getStateFlag(IsFinalShadowMapCaster)!=0;} |
|
true if the instance receive shadow. By default false
Definition at line 477 of file transform.h. References NL3D::CTransform::getStateFlag(), and NL3D::CTransform::IsFinalShadowMapReceiver. Referenced by NL3D::CLandscapeUser::canReceiveShadowMap(), and NL3D::CLandscapeModel::traverseRender().
00477 {return getStateFlag(IsFinalShadowMapReceiver)!=0;} |
|
Test if there is a start/stop caps in the objects (some fxs such as remanence).
Reimplemented in NL3D::CSegRemanence. Definition at line 126 of file transform_shape.h. Referenced by NL3D::CInstanceUser::canStartStop().
00126 { return false; } |
|
setup lighting for this instance into driver. The traverseRender().
Definition at line 105 of file transform_shape.cpp. References NL3D::CTransformShape::_CurrentLightContribution, NL3D::CTransformShape::_CurrentUseLocalAttenuation, and NL3D::CRenderTrav::changeLightSetup(). Referenced by NL3D::CMeshMRMGeom::activeInstance(), NL3D::CMeshGeom::activeInstance(), NL3D::CSkeletonModel::renderSkins(), and NL3D::CTransformShape::traverseRender().
00106 {
00107 // setup the instance lighting.
00108 rdrTrav->changeLightSetup(_CurrentLightContribution, _CurrentUseLocalAttenuation);
00109 }
|
|
=========================================================================================
Definition at line 490 of file particle_system_model.cpp. References _ParticleSystem, NLMISC::CAABBox::clipBack(), NL3D::CTransform::getWorldMatrix(), MINI_TIMER, nlassert, NL3D::PSStatsCheckAgainstPyramid, and sint. Referenced by refreshRscDeletion(), and traverseClip().
00491 { 00492 MINI_TIMER(PSStatsCheckAgainstPyramid) 00493 nlassert(_ParticleSystem); 00494 NLMISC::CAABBox bbox; 00495 _ParticleSystem->computeBBox(bbox); 00496 const CMatrix &mat = getWorldMatrix(); 00497 00498 // Transform the pyramid in Object space. 00499 for(sint i=0; i < (sint) pyramid.size(); i++) 00500 { 00501 // test wether the bbox is entirely in the neg side of the plane 00502 if (!bbox.clipBack(pyramid[i] * mat )) 00503 { 00504 return false; 00505 } 00506 } 00507 return true; 00508 00509 } |
|
Definition at line 987 of file particle_system_model.cpp. References _EditionMode, NL3D::CParticleSystem::getAnimType(), NL3D::CParticleSystem::isDestroyConditionVerified(), MINI_TIMER, nlassert, NL3D::PSStatsCheckDestroyCondition, and releaseRscAndInvalidate(). Referenced by traverseClip().
00988 { 00989 MINI_TIMER(PSStatsCheckDestroyCondition) 00990 nlassert(ps); 00991 if (!_EditionMode) 00992 { 00996 if (ps->getAnimType() != CParticleSystem::AnimAlways) 00997 { 00998 if (ps->isDestroyConditionVerified()) 00999 { 01000 releaseRscAndInvalidate(); 01001 return true; 01002 } 01003 } 01004 } 01005 return false; 01006 } |
|
This method clear a bit in the bitset.
Definition at line 233 of file animatable.h. References NL3D::IAnimatable::_BitSet, and uint. Referenced by NL3D::ITransformable::clearTransformFlags(), doAnimate(), and NL3D::CAnimatedMaterial::update().
00234 { 00235 _BitSet&= ~(1<<valueId); 00236 } |
|
clip method called by traverseClip(). deafult is always visible
Reimplemented from NL3D::CTransformShape. Definition at line 979 of file particle_system_model.cpp.
00980 { 00981 // no-op clip() because all done in special traverse() 00982 return true; 00983 } |
|
Definition at line 1217 of file transform.cpp. References NL3D::CTransform::_ClipParents, NL3D::CTransform::_ClipSons, NL3D::CTransform::clipHasParent(), NL3D::CTransform::CClipNode::ClipNode, NL3D::CFastPtrList< CTransform >::insert(), and NL3D::CTransform::CClipNode::Parent. Referenced by NL3D::CScene::createModel(), NL3D::CSkeletonModel::detachSkeletonSon(), NL3D::CLandscapeModel::initModel(), NL3D::CScene::initQuadGridClipManager(), NL3D::CQuadGridClipClusterListDist::resetSons(), NL3D::CClipTrav::traverse(), and NL3D::CTransform::updateClipTravForAncestorSkeleton().
01218 { 01219 if(!son) 01220 return; 01221 01222 // if already linked, no-op. 01223 if(son->clipHasParent(this)) 01224 return; 01225 01226 // add a new parent entry for our son. 01227 CClipNode *clipNode= new CClipNode; 01228 son->_ClipParents.push_back(clipNode); 01229 01230 // link the son to us 01231 clipNode->Parent= this; 01232 01233 // link us to the son 01234 _ClipSons.insert(son, &clipNode->ClipNode); 01235 } |
|
Definition at line 1238 of file transform.cpp. References NL3D::CTransform::clipDelFromParent(). Referenced by NL3D::CScene::initDefaultRoots(), NL3D::CLandscapeModel::initModel(), NL3D::CClipTrav::traverse(), and NL3D::CTransform::~CTransform().
01239 { 01240 if(!son) 01241 return; 01242 01243 // try to remove from me from my parent 01244 son->clipDelFromParent(this); 01245 } |
|
Definition at line 1265 of file transform.cpp. References NL3D::CTransform::_ClipSons, index, nlassert, NL3D::CFastPtrList< CTransform >::size(), and uint. Referenced by NL3D::CCluster::recursTraverseClip(), NL3D::CTransform::traverseClip(), NL3D::CRootModel::traverseClip(), traverseClip(), and NL3D::CTransform::~CTransform().
|
|
Definition at line 237 of file transform.h. References NL3D::CTransform::_ClipSons, NL3D::CFastPtrList< CTransform >::size(), and uint. Referenced by NL3D::CCluster::recursTraverseClip(), NL3D::CTransform::traverseClip(), NL3D::CRootModel::traverseClip(), traverseClip(), and NL3D::CTransform::~CTransform().
00237 {return _ClipSons.size();}
|
|
Definition at line 234 of file transform.h. References NL3D::CTransform::_ClipParents, and uint. Referenced by NL3D::CTransform::clipUnlinkFromAll(), NL3D::CClipTrav::traverse(), and NL3D::CTransform::updateClipTravForAncestorSkeleton().
00234 {return _ClipParents.size();}
|
|
Definition at line 1258 of file transform.cpp. References NL3D::CTransform::_ClipParents, index, nlassert, and uint. Referenced by NL3D::CTransform::clipUnlinkFromAll(), NL3D::CClipTrav::traverse(), and NL3D::CTransform::updateClipTravForAncestorSkeleton().
|
|
Definition at line 1248 of file transform.cpp. References NL3D::CTransform::clipDelFromParent(), NL3D::CTransform::clipGetNumParents(), and NL3D::CTransform::clipGetParent(). Referenced by NL3D::CSkeletonModel::bindSkin(), NL3D::CScene::initQuadGridClipManager(), NL3D::CTransform::updateClipTravForAncestorSkeleton(), and NL3D::CTransform::~CTransform().
01249 { 01250 // unlink from all parent clip 01251 while( clipGetNumParents() ) 01252 { 01253 clipDelFromParent( clipGetParent(0) ); 01254 } 01255 } |
|
Tells if the LocalMatrix is newer than what caller except. This return true either if the matrix components (pos/rot etc...) are touched, or if matrix is newer than caller date. Definition at line 82 of file transformable.h. References NL3D::ITransformable::_LocalMatrixDate, NL3D::ITransformable::needCompute(), and uint64. Referenced by NL3D::CWaterModel::updateDiffuseMapMatrix().
00083 { 00084 return callerDate<_LocalMatrixDate || needCompute(); 00085 } |
|
Special For Skeleton Caster. When Skeletons cast shadows, they first compute the WorldBBox. The model should compute its bbox in World (best fit).
Reimplemented in NL3D::CMeshInstance, and NL3D::CSkeletonModel. Definition at line 521 of file transform.h. Referenced by NL3D::CSkeletonModel::computeWorldBBoxForShadow().
00521 {return false;} |
|
To implement for ShadowCaster support. typically allocate a CShadowMap and store NB: the texture doesn't have to be inited at this time. Update it each frame in generateShadowMap() Reimplemented in NL3D::CMeshInstance, and NL3D::CSkeletonModel. Definition at line 902 of file transform.h. Referenced by NL3D::CTransform::enableCastShadowMap().
00902 {} |
|
create an instance of this class
Reimplemented from NL3D::CTransformShape. Definition at line 242 of file particle_system_model.h.
00243 { 00244 return new CParticleSystemModel; 00245 } |
|
To implement for ShadowCaster support. typically free the shadowMap.
Reimplemented in NL3D::CMeshInstance, and NL3D::CSkeletonModel. Definition at line 904 of file transform.h. Referenced by NL3D::CTransform::enableCastShadowMap().
00904 {} |
|
=====================================================================================
Definition at line 619 of file particle_system_model.cpp. References NL3D::CParticleSystem::_BypassGlobalUserParam, _UserMatrix, NL3D::IAnimatable::clearFlag(), NL3D::CScene::getClipTrav(), getEllapsedTime(), NL3D::CScene::getEllapsedTime(), getEllapsedTimeRatio(), NL3D::CTransformShape::getNumTrianglesAfterLoadBalancing(), NL3D::CTransform::getOwnerScene(), getPS(), NL3D::CParticleSystem::getScene(), NL3D::CTransform::getWorldMatrix(), NL3D::CParticleSystem::hide(), isAutoGetEllapsedTimeEnabled(), NL3D::IAnimatable::isTouched(), NL3D::MaxPSUserParam, MINI_TIMER, nlassert, nlctassert, NL3D::PSStatsDoAnimate, NL3D::PSStatsDoAnimatePart1, NL3D::PSStatsDoAnimatePart2, NL3D::PSStatsDoAnimatePart3, NL3D::PSStatsNumDoAnimateCalls, setEllapsedTime(), NL3D::CParticleSystem::setNumTris(), NL3D::CParticleSystem::setSysMat(), NL3D::CParticleSystem::setUserMatrix(), NL3D::CParticleSystem::setUserParam(), NL3D::CParticleSystem::setViewMat(), NL3D::CParticleSystem::step(), NL3D::TAnimationTime, uint, updateLightingInfos(), updateOpacityInfos(), and NL3D::CTravCameraScene::ViewMatrix. Referenced by NL3D::CParticleSystemManager::processAnimate(), and traverseAnimDetail().
00620 { 00621 ++ PSStatsNumDoAnimateCalls; 00622 MINI_TIMER(PSStatsDoAnimate) 00623 nlassert(!_Invalidated); 00624 CParticleSystem *ps = getPS(); 00625 CClipTrav &clipTrav= getOwnerScene()->getClipTrav(); 00626 const CMatrix &mat= getWorldMatrix(); 00627 // 00628 { 00629 MINI_TIMER(PSStatsDoAnimatePart1) 00630 00631 // Set the 'hide' flag. This prevent trails from being created is the system is hidden, moved, and then showed in the next frame. 00632 ps->hide(!this->isHrcVisible()); 00633 ps->setSysMat(&mat); 00634 ps->setUserMatrix(&_UserMatrix); 00635 ps->setViewMat(clipTrav.ViewMatrix); 00636 updateOpacityInfos(); 00637 updateLightingInfos(); 00638 } 00639 //ps->setSysMat(getWorldMatrix()); 00640 nlassert(ps->getScene()); 00641 00642 00643 { 00644 MINI_TIMER(PSStatsDoAnimatePart2) 00645 00646 // setup the number of faces we allow 00647 ps->setNumTris((uint) getNumTrianglesAfterLoadBalancing()); 00648 00649 00650 // set the global user param that are bypassed 00651 nlctassert(MaxPSUserParam < 8); // there should be less than 8 parameters because of mask stored in a byte 00652 ps->_BypassGlobalUserParam = _BypassGlobalUserParam; 00653 00654 // setup system user parameters for parameters that have been touched 00655 for (uint k = 0; k < MaxPSUserParam; ++k) 00656 { 00657 if (isTouched((uint)CParticleSystemModel::PSParam0 + k)) 00658 { 00659 ps->setUserParam(k, _UserParam[k].Value); 00660 clearFlag((uint)CParticleSystemModel::PSParam0 + k); 00661 } 00662 } 00663 if (isAutoGetEllapsedTimeEnabled()) 00664 { 00665 setEllapsedTime(ps->getScene()->getEllapsedTime() * getEllapsedTimeRatio()); 00666 } 00667 } 00668 { 00669 MINI_TIMER(PSStatsDoAnimatePart3) 00670 TAnimationTime delay = getEllapsedTime(); 00671 // animate particles 00672 ps->step(CParticleSystem::Anim, delay); 00673 } 00674 } |
|
when called with true, this force the model to querry himself the ellapsed time to the scene. This is the default. Otherwise, setEllapsedTime must be called Definition at line 141 of file particle_system_model.h. References _AutoGetEllapsedTime.
00142 { 00143 _AutoGetEllapsedTime = enable; 00144 } |
|
By default, map shadow casting is disabled. This enabled shadow for this model. Fails if the model don't support dynamic Map Shadow Casting (eg landscape) Dervier note: createShadowMap() and deleteShadowMap() is called here. Definition at line 1335 of file transform.cpp. References NL3D::CTransform::canCastShadowMap(), NL3D::CTransform::createShadowMap(), NL3D::CTransform::deleteShadowMap(), NL3D::CTransform::getShadowMap(), NL3D::CTransform::IsFinalShadowMapCaster, NL3D::CTransform::modelCanCastShadowMap(), nlassert, and NL3D::CTransform::setStateFlag().
01336 { 01337 bool precState= canCastShadowMap(); 01338 01339 if(modelCanCastShadowMap()) 01340 setStateFlag(IsFinalShadowMapCaster, state); 01341 else 01342 setStateFlag(IsFinalShadowMapCaster, false); 01343 01344 // if just enabled, create the shadowMap 01345 if(canCastShadowMap() && !precState) 01346 { 01347 createShadowMap(); 01348 // The user must have created it. 01349 nlassert(getShadowMap()); 01350 } 01351 // if just disabled, free ressource 01352 else if(!canCastShadowMap() && precState) 01353 { 01354 deleteShadowMap(); 01355 } 01356 } |
|
activate the display of tool (for edition purpose)
Definition at line 1026 of file particle_system_model.cpp. References _ToolDisplayEnabled, touchLightableState(), and touchTransparencyState().
01027 { 01028 _ToolDisplayEnabled = enable; 01029 touchTransparencyState(); 01030 touchLightableState(); 01031 } |
|
By default, map shadow receiving is disabled. This enabled shadow for this model. Fails if the model don't support dynamic Map Shadow Receiving (eg Particle system) Definition at line 475 of file transform.h. References NL3D::CTransform::IsFinalShadowMapReceiver, NL3D::CTransform::modelCanReceiveShadowMap(), and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CLandscapeUser::enableReceiveShadowMap().
00475 {if(modelCanReceiveShadowMap()) setStateFlag(IsFinalShadowMapReceiver, state);} |
|
Definition at line 1359 of file transform.cpp. References NL3D::CTransform::_FatherBoneId, NL3D::CTransform::_FatherSkeletonModel, NL3D::CTransform::_HrcParent, NL3D::CSkeletonModel::forceComputeBone(), NL3D::CTransform::update(), and NL3D::CTransform::updateWorldMatrixFromFather(). Referenced by NL3D::CParticleSystemManager::processAnimate().
01360 { 01361 // if father is a skeleton, force to compute the bone we are sticked to 01362 if (_FatherSkeletonModel) 01363 { 01364 _FatherSkeletonModel->forceComputeBone(_FatherBoneId); 01365 } 01366 else 01367 { 01368 // force to compûte the father 01369 if (_HrcParent) 01370 { 01371 _HrcParent->forceCompute(); 01372 } 01373 } 01374 // compute 01375 update(); 01376 updateWorldMatrixFromFather(); 01377 } |
|
Definition at line 1070 of file particle_system_model.cpp. References _ParticleSystem, MINI_TIMER, NL3D::PSStatsForceInstanciate, and reallocRsc().
01071 { 01072 MINI_TIMER(PSStatsForceInstanciate) 01073 if (_Invalidated) return; 01074 if (_ParticleSystem) return; 01075 reallocRsc(); 01076 } |
|
Definition at line 1087 of file particle_system_model.cpp. References _UserMatrix, getPS(), and NL3D::CParticleSystem::setUserMatrix().
01088 { 01089 _UserMatrix = userMatrix; 01090 if (getPS()) 01091 { 01092 getPS()->setUserMatrix(&_UserMatrix); 01093 } 01094 } |
|
freeze the preceding position of the model. Do not use, special code for cluster. This inform the scene that preceding position setuped by user is "frozen". ie at next render(), this object won't be added to the "object moving list" (usefull for cluster mgt). The "frozen" state is disabled (at render() time) if:
Definition at line 367 of file transform.cpp. References NL3D::CTransform::_Frozen, and NL3D::CTransform::update(). Referenced by NL3D::CInstanceGroup::addToSceneWhenAllShapesLoaded(), and NL3D::CScene::initDefaultRoots().
|
|
freeze the HRC so the WorldMatrix computed at next render() will be kept for long, and the model won't either be tested in HRC (which is still expensive, even if the worldmatrix doesn't need to be recomputed). The model won't either be validated. It is suposed to not change at all. Also, if it is not a son of a CCluster, it may be accelerated during Cliping (with CQuadGridClipManager). NB: the model won't be tested in HRC anymore. calling freezeHRC() on a model in a hierarchy without calling it to the root of the hierarchy will result in that the model won't be validated nor be HRC traversed. To be simplier, you should freezeHRC() all the models of a hierarchy, from base root to leaves. NB: if the hierarchy of this object must change, or if the object must moves, you must call unfreezeHRC() first, and you should do this for all the parents of this model. Definition at line 385 of file transform.cpp. References NL3D::CTransform::_FreezeHRCState, NL3D::CTransform::_Frozen, NL3D::CTransform::_TransformDirty, NL3D::CTransform::FreezeHRCStateDisabled, NL3D::CTransform::FreezeHRCStateRequest, NL3D::CTransform::QuadGridClipEnabled, and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CInstanceGroup::freezeHRC().
00386 { 00387 // if disabled, say we are ready to validate our worldMatrix for long. 00388 if(_FreezeHRCState==FreezeHRCStateDisabled) 00389 { 00390 _FreezeHRCState= FreezeHRCStateRequest; 00391 setStateFlag(QuadGridClipEnabled, true); 00392 00393 /* If the transform is not frozen (ie staticaly inserted in a cluster), 00394 We must be sure it will be tested against QuadGridClipManager at next ClipTrav pass. 00395 => must make this object a "moving object" at next render=> dirt _LocalMatrixDate. 00396 */ 00397 if(!_Frozen) 00398 { 00399 _TransformDirty= true; 00400 } 00401 } 00402 } |
|
Freeze and set the Static Light Setup. Called by CInstanceGroup::addToScene() NB: it calls resetLighting() first. NB: nlassert(numPointLights<=NL3D_MAX_LIGHT_CONTRIBUTION) Definition at line 1028 of file transform.cpp. References NL3D::CTransform::_LightContribution, NL3D::CLightContribution::Factor, NL3D::CLightContribution::FrozenAmbientLight, NL3D::CLightContribution::FrozenStaticLightSetup, NL3D::CTransform::IsNeedUpdateFrozenStaticLightSetup, NL3D_MAX_LIGHT_CONTRIBUTION, nlassert, NL3D::CLightContribution::NumFrozenStaticLight, NL3D::CLightContribution::PointLight, NL3D::CTransform::resetLighting(), NL3D::CTransform::setStateFlag(), NL3D::CLightContribution::SunContribution, uint, and uint8.
01030 { 01031 nlassert(numPointLights <= NL3D_MAX_LIGHT_CONTRIBUTION); 01032 01033 // resetLighting() first. 01034 resetLighting(); 01035 01036 // Enable StaticLightSetup. 01037 _LightContribution.FrozenStaticLightSetup= true; 01038 _LightContribution.NumFrozenStaticLight= numPointLights; 01039 _LightContribution.SunContribution= sunContribution; 01040 // setup the FrozenAmbientLight 01041 _LightContribution.FrozenAmbientLight= frozenAmbientlight; 01042 // Setup other pointLights 01043 uint i; 01044 for(i=0;i<numPointLights;i++) 01045 { 01046 // set the light 01047 _LightContribution.PointLight[i]= pointLight[i]; 01048 // Enable at max. 01049 _LightContribution.Factor[i]= 255; 01050 // Compute static AttFactor Later because don't have WorlPosition of the model here!! 01051 setStateFlag(IsNeedUpdateFrozenStaticLightSetup, true); 01052 01053 // Do NOT set the iterator, because it is a staticLight. 01054 } 01055 // End the list 01056 if(i<NL3D_MAX_LIGHT_CONTRIBUTION) 01057 _LightContribution.PointLight[i]= NULL; 01058 } |
|
For Casters. Display the Shadow to the "Auxiliary Driver". This method should only write to AlphaBuffer (since RGB may be the current rendered scene!), with Alpha==1 when pixel is shadowed. The ShadowMapManager has already cleared the AlphaBuffer to black, and has already enabled alpha write only. The ShadowMapManager has already setuped Viewport/Scissor as its convenience. The extra blurring is a work of the ShadowMapManager (which blurs multiple shadows in a same pass) NB: you can overwrite the current driver frustum/ViewMatrix/modelMatrix without backuping it (ShadowMapManager work) Reimplemented in NL3D::CMeshInstance, and NL3D::CSkeletonModel. Definition at line 492 of file transform.h. Referenced by NL3D::CShadowMapManager::renderGenerate().
00492 {} |
|
=====================================================================================
Reimplemented from NL3D::CTransformShape. Definition at line 218 of file particle_system_model.cpp. References _ParticleSystem, MINI_TIMER, and NL3D::PSStatsGetAABBox.
00219 { 00220 MINI_TIMER(PSStatsGetAABBox) 00221 if (_ParticleSystem) 00222 { 00223 _ParticleSystem->computeBBox(bbox); 00224 } 00225 else 00226 { 00227 NLMISC::safe_cast<CParticleSystemShape *>((IShape *) Shape)->getAABBox(bbox); 00228 } 00229 } |
|
Definition at line 207 of file transform.h. References NL3D::CTransform::_AncestorSkeletonModel. Referenced by NL3D::CParticleSystemManager::processAnimate().
00207 { return _AncestorSkeletonModel; } |
|
get the channelMixer owned by the transform. return result of a refPtr => may be NULL. Definition at line 641 of file transform.h. Referenced by NL3D::CSkeletonModel::computeCurrentBBox(), NL3D::CMeshBaseInstance::traverseHrc(), and NL3D::CSkeletonModel::updateBoneToCompute().
00641 {return _ChannelMixer;}
|
|
Definition at line 257 of file transform.h. References NL3D::CTransform::getStateFlag(), and NL3D::CTransform::IsDeleteChannelMixer. Referenced by NL3D::CTransform::registerToChannelMixer(), and NL3D::CTransform::~CTransform().
00257 { return getStateFlag(IsDeleteChannelMixer)!=0; } |
|
Definition at line 320 of file transform.h. References NL3D::CTransform::_ClusterSystem. Referenced by NL3D::CScene::findCameraClusterSystemFromRay(), and NL3D::CClipTrav::traverse().
00320 { return _ClusterSystem; }
|
|
=====================================================================================
Reimplemented from NL3D::CTransform. Definition at line 446 of file particle_system_model.cpp. References NL3D::CParticleSystemShape::getDefaultPos(), NL3D::CParticleSystemShape::getDefaultRotQuat(), NL3D::CParticleSystemShape::getDefaultScale(), NL3D::CParticleSystemShape::getDefaultTriggerTrack(), NL3D::CParticleSystemShape::getUserParamDefaultTrack(), nlassert, PSParam0, PSTrigger, and uint.
00447 { 00448 nlassert(valueId < AnimValueLast); 00449 nlassert(Shape); 00450 00451 CParticleSystemShape *pss = NLMISC::safe_cast<CParticleSystemShape *>((IShape *) Shape); 00452 00453 switch (valueId) 00454 { 00455 case PosValue: return pss->getDefaultPos(); 00456 case RotQuatValue: return pss->getDefaultRotQuat(); 00457 case ScaleValue: return pss->getDefaultScale(); 00458 } 00459 if (valueId < OwnerBit) return CTransformShape::getDefaultTrack(valueId); // delegate to parent 00460 00461 // this value belong to us 00462 if (valueId < PSTrigger) 00463 { 00464 return pss->getUserParamDefaultTrack(valueId - (uint) PSParam0); 00465 } 00466 return pss->getDefaultTriggerTrack(); 00467 } |
|
Definition at line 135 of file transform_shape.h. Referenced by NL3D::CQuadGridClipCluster::addModel(), NL3D::CTransformShape::clip(), and NL3D::CInstanceUser::getDistMax().
00135 { return _DistMax; }
|
|
test if edition mode is activated
Definition at line 191 of file particle_system_model.h. References _EditionMode. Referenced by NL3D::CParticleSystemManager::processAnimate().
00192 { 00193 return _EditionMode; 00194 } |
|
get the ellapsed time used for animation
Definition at line 167 of file particle_system_model.h. References _EllapsedTime, and NL3D::TAnimationTime. Referenced by doAnimate(), and NL3D::CParticleSystemShape::render().
00168 { 00169 return _EllapsedTime; 00170 } |
|
when called with true, this force the model to querry himself the ellapsed time to the scene. This is the default. Otherwise, setEllapsedTime must be called Definition at line 155 of file particle_system_model.h. References _EllapsedTimeRatio. Referenced by doAnimate().
00155 { return _EllapsedTimeRatio; } |
|
Definition at line 538 of file transform.h. References NL3D::CTransform::ForceClipRoot, and NL3D::CTransform::getStateFlag(). Referenced by NL3D::CTransformUser::getForceClipRoot().
00538 { return getStateFlag(ForceClipRoot) != 0; } |
|
Return the current light contribution of this model Definition at line 373 of file transform.h. References NL3D::CTransform::_LightContribution. Referenced by NL3D::CShadowMapManager::computeShadowColors(), and NL3D::CShadowMapManager::computeShadowDirection().
00373 { return _LightContribution; } |
|
Reimplemented in NL3D::CMeshMultiLodInstance. Definition at line 155 of file transform_shape.h. Referenced by NL3D::CTransformShape::traverseRender(), and traverseRender().
00155 { return _LightContribution;} |
|
get the HotSpot of the model for Light computation. For models with global attenuation, this is the point taken for attenuation computes. NB: should return the current world position. NB: return also the modelRadius (only for bigLightable) Default to NULL. Reimplemented from NL3D::CTransform. Reimplemented in NL3D::CSkeletonModel. Definition at line 316 of file transform_shape.cpp. References NL3D::CTransformShape::getAABBox(), NLMISC::CMatrix::getPos(), NLMISC::CAABBox::getRadius(), NL3D::CTransform::getWorldMatrix(), and NL3D::CTransform::isBigLightable().
00317 { 00318 /* 00319 // get the untransformed bbox from the model. 00320 CAABBox bbox; 00321 getAABBox(bbox); 00322 // get transformed center pos of bbox 00323 modelPos= getWorldMatrix() * bbox.getCenter(); 00324 // If the model is a big lightable, must take radius from aabbox, else suppose 0 radius. 00325 if(isBigLightable()) 00326 { 00327 // get size of the bbox (bounding sphere) 00328 modelRadius= bbox.getRadius(); 00329 } 00330 else 00331 { 00332 // Assume 0 radius => faster computeLinearAttenuation() 00333 modelRadius= 0; 00334 } 00335 */ 00336 00337 // This method works well for Big Trees. 00338 // TODO: generalize, saving a LightHotSpot per shape. 00339 00340 // get pos of object. Ie the hotSpot is the pivot. 00341 modelPos= getWorldMatrix().getPos(); 00342 // If the model is a big lightable, must take radius from aabbox, else suppose 0 radius. 00343 if(isBigLightable()) 00344 { 00345 // get the untransformed bbox from the model. 00346 CAABBox bbox; 00347 getAABBox(bbox); 00348 // get size of the bbox (bounding sphere) 00349 modelRadius= bbox.getRadius(); 00350 } 00351 else 00352 { 00353 // Assume 0 radius => faster computeLinearAttenuation() 00354 modelRadius= 0; 00355 } 00356 00357 } |
|
Get the load Balancing group of a model. see setLoadBalancingGroup(). Definition at line 532 of file transform.cpp. References NL3D::CTransform::_LoadBalancingGroup, and NL3D::CLoadBalancingGroup::Name.
00533 { 00534 // get the group name 00535 return _LoadBalancingGroup->Name; 00536 } |
|
Get a material of the transform shape Reimplemented in NL3D::CMeshBaseInstance. Definition at line 127 of file transform_shape.cpp. References uint.
00128 {
00129 return NULL;
00130 }
|
|
Get a material of the transform shape Reimplemented in NL3D::CMeshBaseInstance. Definition at line 120 of file transform_shape.cpp. References uint.
00121 {
00122 return NULL;
00123 }
|
|
Get the matrix, compute her if necessary (work in all modes).
Definition at line 76 of file transformable.h. References NL3D::ITransformable::updateMatrix(). Referenced by NL3D::CInstanceGroup::addToSceneWhenAllShapesLoaded(), NL3D::CCamera::buildCameraPyramid(), NL3D::CBone::compute(), NL3D::CWaterShape::createInstance(), NL3D::CWaterModel::getAttenuatedHeight(), NL3D::CTransformableUser::getMatrix(), NL3D::CCloudScape::render(), NL3D::CMeshMultiLod::renderCoarseMesh(), and NL3D::CTransform::update().
00076 {updateMatrix(); return _LocalMatrix;} |
|
return the last date of computed matrix. updateMatrix() if necessary. Definition at line 90 of file transformable.h. References NL3D::ITransformable::_LocalMatrixDate, uint64, and NL3D::ITransformable::updateMatrix(). Referenced by NL3D::CWaterModel::updateDiffuseMapMatrix().
00091 { 00092 updateMatrix(); 00093 return _LocalMatrixDate; 00094 } |
|
see setMeanColor()
Definition at line 437 of file transform.h. References NL3D::CTransform::_MeanColor.
00437 {return _MeanColor;}
|
|
If the model support MRM, return the level detail setup. default is return NULL.
Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 114 of file transform_shape.h. Referenced by NL3D::CSkeletonModel::updateSkinRenderLists().
00114 {return NULL;}
|
|
Get the count of material in this transform shape Reimplemented in NL3D::CMeshBaseInstance. Definition at line 113 of file transform_shape.cpp. References uint.
00114 {
00115 return 0;
00116 }
|
|
=====================================================================================
Reimplemented from NL3D::CTransformShape. Definition at line 482 of file particle_system_model.cpp. References _ParticleSystem, MINI_TIMER, and NL3D::PSStatsGetNumTriangles.
00483 { 00484 MINI_TIMER(PSStatsGetNumTriangles) 00485 if (!_ParticleSystem) return 0; 00486 return (float) _ParticleSystem->getWantedNumTris(distance); 00487 } |
|
get an approximation of the number of triangles this instance should render. This method is valid only for IShape classes (in render()), after LoadBalancing traversal is performed. NB: It is not guaranted that this instance will render those number of triangles. Definition at line 111 of file transform_shape.h. References NL3D::CTransformShape::_NumTrianglesAfterLoadBalancing. Referenced by doAnimate(), NL3D::CMeshMRMSkinned::profileSceneRender(), NL3D::CMeshMRM::profileSceneRender(), NL3D::CMeshMRMSkinned::render(), NL3D::CMeshMRM::render(), NL3D::CSkeletonModel::renderSkins(), NL3D::CMeshMRM::supportMeshBlockRendering(), and NL3D::CMeshMultiLodInstance::traverseLoadBalancing().
00111 {return _NumTrianglesAfterLoadBalancing;}
|
|
Get the ordering layer.
Definition at line 187 of file transform.h. References NL3D::CTransform::_OrderingLayer, and uint. Referenced by NL3D::CTransformUser::getOrderingLayer(), and NL3D::CRenderTrav::traverse().
00187 { return _OrderingLayer; }
|
|
|
Work only in Rot* mode (nlassert).
Definition at line 255 of file transformable.h. References NL3D::ITransformable::_Pivot, nlassert, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, and NL3D::CAnimatedValueBlendable< T >::Value.
00256 { 00257 nlassert(_Mode==RotEuler || _Mode==RotQuat); 00258 return _Pivot.Value; 00259 } |
|
Work only in Rot* mode (nlassert).
Definition at line 224 of file transformable.h. References NL3D::ITransformable::_Pivot, nlassert, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CTransformableUser::getPivot().
00225 { 00226 nlassert(_Mode==RotEuler || _Mode==RotQuat); 00227 pivot= _Pivot.Value; 00228 } |
|
Definition at line 117 of file transformable.cpp. Referenced by NL3D::ITransformable::getValueName().
00118 { 00119 return "pivot"; 00120 } |
|
Work only in Rot* mode(nlassert).
Definition at line 231 of file transformable.h. References nlassert, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CSkeletonModel::generateShadowMap(), NL3D::CWaterModel::getHeight(), NL3D::CSkeletonModel::renderIntoSkeletonShadowMap(), NL3D::CMeshInstance::renderIntoSkeletonShadowMap(), and NL3D::CPointLightModel::traverseLight().
00232 { 00233 nlassert(_Mode==RotEuler || _Mode==RotQuat); 00234 return _Pos.Value; 00235 } |
|
Work only in Rot* mode(nlassert).
Definition at line 200 of file transformable.h. References nlassert, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CTransformableUser::getPos(), NL3D::CInstanceGroup::getPos(), and NL3D::CPSLight::step().
00201 { 00202 nlassert(_Mode==RotEuler || _Mode==RotQuat); 00203 pos= _Pos.Value; 00204 } |
|
Definition at line 97 of file transformable.cpp. Referenced by NL3D::ITransformable::getValueName().
00098 { 00099 return "pos"; 00100 } |
|
Get the particle system (NB : This is shared by a smart ptr) contained in this transform shape. This may be null if the model is not visible. Definition at line 92 of file particle_system_model.h. References _ParticleSystem.
00093 { 00094 return _ParticleSystem; 00095 } |
|
Get the particle system contained in this transform shape. (NB: This is shared by a smart ptr)
Definition at line 84 of file particle_system_model.h. References _ParticleSystem. Referenced by doAnimate(), forceSetUserMatrix(), NL3D::CParticleSystemInstanceUser::getSystemBBox(), NL3D::CParticleSystemInstanceUser::isSystemPresent(), NL3D::CParticleSystemManager::processAnimate(), NL3D::CParticleSystemManager::reactivateSound(), NL3D::CParticleSystemShape::render(), NL3D::CParticleSystemManager::stopSound(), and traverseAnimDetail().
00085 { 00086 return _ParticleSystem; 00087 } |
|
=====================================================================================
Definition at line 429 of file particle_system_model.cpp. References nlassert, PSParam0, and uint. Referenced by getValueName().
|
|
For receivers. get the World Instance bbox that includes the receiver. Reimplemented in NL3D::CLandscapeModel. Definition at line 1328 of file transform.cpp. References NLMISC::CAABBox::setCenter(), and NLMISC::CAABBox::setHalfSize(). Referenced by NL3D::CShadowMapManager::addShadowReceiver().
01329 { 01330 bbox.setCenter(CVector::Null); 01331 bbox.setHalfSize(CVector::Null); 01332 } |
|
For receivers. Retrieve the WorldMatrix of the model used for IDriver::render(). By default it returns getWorldMatrix(). The exception is the Landscape and his "ZBuffer Problem" management. Reimplemented in NL3D::CLandscapeModel. Definition at line 511 of file transform.h. References NL3D::CTransform::getWorldMatrix(). Referenced by NL3D::CShadowMapManager::renderProject().
00511 {return getWorldMatrix();} |
|
Definition at line 70 of file smart_ptr.h. References NLMISC::CRefCount::crefs, and sint.
00071 { 00072 return crefs; 00073 } |
|
Work only in RotEuler mode(nlassert).
Definition at line 237 of file transformable.h. References NL3D::ITransformable::_RotEuler, nlassert, NL3D::ITransformable::RotEuler, and NL3D::CAnimatedValueBlendable< T >::Value.
00238 { 00239 nlassert(_Mode==RotEuler); 00240 return _RotEuler.Value; 00241 } |
|
Work only in RotEuler mode(nlassert).
Definition at line 206 of file transformable.h. References NL3D::ITransformable::_RotEuler, nlassert, NL3D::ITransformable::RotEuler, and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CTransformableUser::getRotEuler().
00207 { 00208 nlassert(_Mode==RotEuler); 00209 rot= _RotEuler.Value; 00210 } |
|
Definition at line 102 of file transformable.cpp. Referenced by NL3D::ITransformable::getValueName().
00103 { 00104 return "roteuler"; 00105 } |
|
get the current rotorder (information vlaid only when RotEuler mode).
Definition at line 194 of file transformable.h. References NL3D::ITransformable::_RotOrder. Referenced by NL3D::CTransformableUser::getRotOrder().
00195 {
00196 return _RotOrder;
00197 }
|
|
Work only in RotQuat mode (nlassert).
Definition at line 243 of file transformable.h. References NL3D::ITransformable::_RotQuat, nlassert, NL3D::ITransformable::RotQuat, and NL3D::CAnimatedValueBlendable< T >::Value.
00244 { 00245 nlassert(_Mode==RotQuat); 00246 return _RotQuat.Value; 00247 } |
|
Work only in RotQuat mode (nlassert).
Definition at line 212 of file transformable.h. References NL3D::ITransformable::_RotQuat, nlassert, NL3D::ITransformable::RotQuat, and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CTransformableUser::getRotQuat(), and NL3D::CInstanceGroup::getRotQuat().
00213 { 00214 nlassert(_Mode==RotQuat); 00215 quat= _RotQuat.Value; 00216 } |
|
Definition at line 107 of file transformable.cpp. Referenced by NL3D::ITransformable::getValueName().
00108 { 00109 return "rotquat"; 00110 } |
|
Work only in Rot* mode (nlassert).
Definition at line 249 of file transformable.h. References nlassert, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, and NL3D::CAnimatedValueBlendable< T >::Value.
00250 { 00251 nlassert(_Mode==RotEuler || _Mode==RotQuat); 00252 return _Scale.Value; 00253 } |
|
Work only in Rot* mode (nlassert).
Definition at line 218 of file transformable.h. References nlassert, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CBone::compute(), and NL3D::CTransformableUser::getScale().
00219 { 00220 nlassert(_Mode==RotEuler || _Mode==RotQuat); 00221 scale= _Scale.Value; 00222 } |
|
Definition at line 112 of file transformable.cpp. Referenced by NL3D::ITransformable::getValueName().
00113 { 00114 return "scale"; 00115 } |
|
get The shadow Map result for receveing. If NULL, nothing is displayed. Reimplemented in NL3D::CMeshInstance, and NL3D::CSkeletonModel. Definition at line 495 of file transform.h. Referenced by NL3D::CClipTrav::clipSkeletonShadowMaps(), NL3D::CTransform::enableCastShadowMap(), NL3D::CShadowMapManager::renderGenerate(), NL3D::CShadowMapManager::renderProject(), and NL3D::CShadowMapManager::selectShadowMapsToGenerate().
00495 {return NULL;}
|
|
Test if obj must be displayed when sticked to an object displayed as a LOD (example: sword in hand of a character displayed as a LOD state).
Definition at line 680 of file transform.h. References NL3D::CTransform::_ForceCLodSticked. Referenced by traverseClip().
00680 { return _ForceCLodSticked; }
|
|
Get the skeleton model. Returnr NULL in normal mode.
Definition at line 205 of file transform.h. References NL3D::CTransform::_FatherSkeletonModel. Referenced by NL3D::CMeshMRMSkinnedGeom::render(), NL3D::CMeshMRMGeom::render(), NL3D::CMeshGeom::render(), NL3D::CMeshMRMSkinnedGeom::renderShadowSkinGeom(), NL3D::CMeshMRMGeom::renderShadowSkinGeom(), NL3D::CMeshMRMGeom::renderSkin(), NL3D::CMeshGeom::renderSkin(), NL3D::CMeshMRMSkinnedGeom::renderSkinGroupGeom(), NL3D::CMeshMRMGeom::renderSkinGroupGeom(), and NL3D::CTransformShape::traverseLoadBalancingPass0().
00205 {return _FatherSkeletonModel;} |
|
Deriver must change this method if isSkinnable(). It return a list of sphere relative to each bone of the father skeleton. Use with getSkinBoneUsage() to know to wich bone this sphere apply NB: if a sphere radius is -1, it means that the bone is not used (for any reason...) default is to return NULL. Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 584 of file transform.h. Referenced by NL3D::CSkeletonModel::updateSkinRenderLists().
00584 {return NULL;}
|
|
Deriver must change this method if isSkinnable(). It return the list of bone (correct skeleton index) used by the skins (NB: without the parents of the bone). NB: if an index is -1, it means that the skin bone has not been found in the skeleton (skip it) default is to return NULL. Reimplemented in NL3D::CMeshInstance, NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 578 of file transform.h. Referenced by NL3D::CSkeletonModel::computeCLodVertexAlpha(), and NL3D::CSkeletonModel::updateSkinRenderLists().
00578 {return NULL;}
|
|
get the current transform mode.
Definition at line 189 of file transformable.h. References NL3D::ITransformable::TTransformMode. Referenced by NL3D::CTargetAnimCtrl::execute(), and NL3D::CTransformableUser::getTransformMode().
00190 {
00191 return _Mode;
00192 }
|
|
Return the user clipping state.
Definition at line 1316 of file transform.cpp. References NL3D::CTransform::getStateFlag(), and NL3D::CTransform::UserClipping. Referenced by NL3D::CTransformUser::getUserClipping().
01317 { 01318 return getStateFlag(UserClipping) != 0; 01319 } |
|
Definition at line 271 of file particle_system_model.h.
00271 { return _UserColor; } |
|
Get the UserLightable flag. Definition at line 347 of file transform.h. References NL3D::CTransform::getStateFlag(), and NL3D::CTransform::IsUserLightable. Referenced by NL3D::CTransformUser::getUserLightable().
00347 {return getStateFlag(IsUserLightable)!=0;} |
|
Definition at line 284 of file particle_system_model.h. References _UserMatrix. Referenced by NL3D::CParticleSystemShape::render().
00284 { return _UserMatrix; } |
|
=====================================================================================
Reimplemented from NL3D::ITransformable. Definition at line 416 of file particle_system_model.cpp. References _TriggerAnimatedValue, nlassert, PSParam0, PSTrigger, and uint. Referenced by NL3D::CParticleSystemInstanceUser::getUserParam(), and NL3D::CParticleSystemInstanceUser::setUserParam().
00417 { 00418 nlassert(valueId < AnimValueLast); 00419 if (valueId < OwnerBit) return CTransformShape::getValue(valueId); 00420 if (valueId < PSTrigger) 00421 { 00422 00423 return &_UserParam[valueId - (uint) PSParam0]; 00424 } 00425 return &_TriggerAnimatedValue; 00426 } |
|
=====================================================================================
Reimplemented from NL3D::ITransformable. Definition at line 437 of file particle_system_model.cpp. References getPSParamName(), nlassert, PSTrigger, and uint.
00438 { 00439 nlassert(valueId < AnimValueLast); 00440 if (valueId < OwnerBit) return CTransformShape::getValueName(valueId); 00441 if (valueId < PSTrigger) return getPSParamName(valueId); 00442 return "PSTrigger"; 00443 } |
|
Get the local visibility state.
Definition at line 203 of file transform.h. References NL3D::CTransform::Visibility. Referenced by NL3D::CTransformUser::getVisibility(), NL3D::CParticleSystemManager::processAnimate(), NL3D::CMeshMRMSkinnedInstance::renderSkin(), NL3D::CMeshMRMInstance::renderSkin(), NL3D::CMeshInstance::renderSkin(), traverseAnimDetail(), and NL3D::CSkeletonModel::updateSkinRenderLists().
00203 {return Visibility;}
|
|
|
Definition at line 1048 of file particle_system_model.cpp. References _EmitterActive, _ParticleSystem, and nlassert.
01049 { 01050 #ifdef NL_DEBUG 01051 if (_ParticleSystem) 01052 { 01053 if (_ParticleSystem->hasEmittersTemplates()) 01054 { 01055 nlassert(_ParticleSystem->hasActiveEmitters() == _EmitterActive); 01056 } 01057 } 01058 #endif 01059 return _EmitterActive; 01060 } |
|
herit the visibility from his father. (default behavior).
Definition at line 287 of file transform.cpp. References NL3D::CTransform::_FatherSkeletonModel, NL3D::CTransform::_TransformDirty, NL3D::CSkeletonModel::dirtSkinRenderLists(), NL3D::CTransform::isSkinned(), nlassert, and NL3D::CTransform::Visibility. Referenced by NL3D::CTransformUser::heritVisibility().
00288 { 00289 // Optim: do nothing if already set 00290 if(Visibility!= CHrcTrav::Herit) 00291 { 00292 _TransformDirty= true; 00293 Visibility= CHrcTrav::Herit; 00294 // If skinned, then must inform skeleton parent that it must recompute skin render/animDetail lists 00295 if(isSkinned()) 00296 { 00297 nlassert(_FatherSkeletonModel); 00298 _FatherSkeletonModel->dirtSkinRenderLists(); 00299 } 00300 } 00301 } |
|
Hide the object and his sons.
Definition at line 223 of file transform.cpp. References NL3D::CTransform::_FatherSkeletonModel, NL3D::CTransform::_TransformDirty, NL3D::CSkeletonModel::dirtSkinRenderLists(), NL3D::CTransform::isSkinned(), nlassert, and NL3D::CTransform::Visibility. Referenced by NL3D::CTransformUser::hide(), NL3D::CLandscapeUser::hide(), NL3D::CPSMesh::newElement(), and NL3D::CPSMesh::updatePos().
00224 { 00225 // Optim: do nothing if already set 00226 if(Visibility!= CHrcTrav::Hide) 00227 { 00228 _TransformDirty= true; 00229 Visibility= CHrcTrav::Hide; 00230 // If skinned, then must inform skeleton parent that it must recompute skin render/animDetail lists 00231 if(isSkinned()) 00232 { 00233 nlassert(_FatherSkeletonModel); 00234 _FatherSkeletonModel->dirtSkinRenderLists(); 00235 } 00236 } 00237 } |
|
Definition at line 1202 of file transform.cpp. References NL3D::CTransform::_HrcSons, index, nlassert, NL3D::CFastPtrList< CTransform >::size(), and uint. Referenced by NL3D::CTransform::traverseHrc(), NL3D::CRootModel::traverseHrc(), NL3D::CAnimDetailTrav::traverseHrcRecurs(), and NL3D::CTransform::~CTransform().
|
|
Definition at line 220 of file transform.h. References NL3D::CTransform::_HrcSons, NL3D::CFastPtrList< CTransform >::size(), and uint. Referenced by NL3D::CTransform::traverseHrc(), NL3D::CRootModel::traverseHrc(), NL3D::CAnimDetailTrav::traverseHrcRecurs(), and NL3D::CTransform::~CTransform().
00220 {return _HrcSons.size();}
|
|
Definition at line 218 of file transform.h. References NL3D::CTransform::_HrcParent. Referenced by NL3D::CMeshBaseInstance::traverseHrc(), and NL3D::CTransform::updateWorldMatrixFromFather().
00218 {return _HrcParent;}
|
|
link son to this in Hierarchy traversal NB: link does nothing if the son node is HRC frozen Definition at line 1151 of file transform.cpp. References NL3D::CTransform::_FreezeHRCState, NL3D::CTransform::_HrcNode, NL3D::CTransform::_HrcParent, NL3D::CTransform::_HrcParentUnfreeze, NL3D::CTransform::_HrcSons, NL3D::CTransform::_WorldDate, NL3D::CTransform::hrcUnlink(), and NL3D::CFastPtrList< CTransform >::insert(). Referenced by NL3D::CInstanceGroup::addToSceneWhenAllShapesLoaded(), NL3D::CScene::createModel(), NL3D::CSkeletonModel::detachSkeletonSon(), NL3D::CInstanceGroup::linkRoot(), NL3D::CTransform::setForceClipRoot(), NL3D::CSkeletonModel::stickObjectEx(), and NL3D::CTransform::unfreezeHRC().
01152 { 01153 if(!son) 01154 return; 01155 01156 // If not unfrozen, can't link 01157 if (son->_FreezeHRCState != CTransform::FreezeHRCStateDisabled) 01158 return; 01159 01160 // no-op if already me. 01161 if(son->_HrcParent==this) 01162 return; 01163 01164 // unlink from anyone 01165 son->hrcUnlink(); 01166 01167 // link son to me 01168 _HrcSons.insert(son, &son->_HrcNode); 01169 01170 // link me to son 01171 son->_HrcParent= this; 01172 01173 // Backup parent 01174 son->_HrcParentUnfreeze= this; 01175 01176 // my son should recompute his worldMatrix! 01177 son->_WorldDate= -1; 01178 } |
|
unlink this from any Father in Hrc. No-op if no parent NB: unlink does nothing if the node is HRC frozen Definition at line 1181 of file transform.cpp. References NL3D::CTransform::_HrcNode, NL3D::CTransform::_HrcParent, NL3D::CTransform::_HrcParentUnfreeze, NL3D::CTransform::_WorldDate, NL3D::CTransform::ForceClipRoot, NL3D::CTransform::getStateFlag(), nlassert, and NL3D::CFastPtrListNode::unlink(). Referenced by NL3D::CSkeletonModel::bindSkin(), NL3D::CTransform::hrcLinkSon(), NL3D::CScene::initDefaultRoots(), NL3D::CScene::initQuadGridClipManager(), NL3D::CTransform::setForceClipRoot(), NL3D::CTransform::update(), and NL3D::CTransform::~CTransform().
01182 { 01183 // no-op if already NULL 01184 if(_HrcParent==NULL) 01185 return; 01186 01187 // if ForceClipRoot flag is set, then the fx can't be linked elsewhere in the hierarchy 01188 nlassert(!getStateFlag(ForceClipRoot)); 01189 01190 // unlink my parent from me. 01191 _HrcNode.unlink(); 01192 01193 // unlink me from parent 01194 _HrcParent= NULL; 01195 _HrcParentUnfreeze= NULL; 01196 01197 // I should recompute my worldMatrix (well not usefull since not linked, but still do it...) 01198 _WorldDate= -1; 01199 } |
|
Extra init for a model. this method is called by the framework at the very end of CScene::createModel() Warning! if the model is a CTransformShape, then when initModel() is called, Shape and other related member/setup of IShape::createInstance() are not yet done (because createModel() is called at the begining in createInstance()). Because initModel() is called at the very end, deriver could implement anything like creating other models, but not deleting this model... Default behavior is to do nothing. Reimplemented in NL3D::CLandscapeModel, NL3D::CPointLightModel, and NL3D::CSkeletonModel. Definition at line 214 of file transform.cpp. References NL3D::CTransform::_LoadBalancingGroup, NL3D::CLoadBalancingTrav::getDefaultGroup(), NL3D::CScene::getLoadBalancingTrav(), and NL3D::CTransform::getOwnerScene(). Referenced by NL3D::CScene::createModel().
00215 { 00216 // assign me to the default group 00217 _LoadBalancingGroup= getOwnerScene()->getLoadBalancingTrav().getDefaultGroup(); 00218 } |
|
Definition at line 315 of file particle_system_model.h. References _InsertedInVisibleList, NL3D::CLoadBalancingTrav::addVisibleModel(), NL3D::CAnimDetailTrav::addVisibleModel(), NL3D::CClipTrav::addVisibleModel(), NL3D::CScene::getAnimDetailTrav(), NL3D::CScene::getClipTrav(), NL3D::CScene::getLoadBalancingTrav(), and NL3D::CTransform::getOwnerScene(). Referenced by traverseClip().
00316 { 00317 // if not already not inserted 00318 if (!_InsertedInVisibleList) 00319 { 00320 _Visible = true; 00321 _InsertedInVisibleList = true; 00322 // add to clip/anim/load Trav. 00323 getOwnerScene()->getClipTrav().addVisibleModel(this); 00324 // NB: no need to test isAnimDetailable()... for PS, always add them 00325 getOwnerScene()->getAnimDetailTrav().addVisibleModel(this); 00326 getOwnerScene()->getLoadBalancingTrav().addVisibleModel(this); 00327 } 00328 } |
|
Definition at line 1034 of file particle_system_model.cpp. References _AnimatedModelHandle, and NL3D::CParticleSystemManager::TAlwaysAnimatedModelHandle::Valid. Referenced by NL3D::CParticleSystemManager::processAnimate().
01035 { 01036 _AnimatedModelHandle.Valid = false; 01037 } |
|
non-zero if the model is animDetailable (ie added to the animDetail list if visible)
Definition at line 440 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsAnimDetailable, and uint32. Referenced by NL3D::CClipTrav::clipSkeletonShadowMaps(), NL3D::CTransform::traverseClip(), and NL3D::CSkeletonModel::updateSkinRenderLists().
00440 {return getStateFlag(IsAnimDetailable);} |
|
tells wether the model will querry himself for the ellapsed time
Definition at line 157 of file particle_system_model.h. References _AutoGetEllapsedTime. Referenced by doAnimate().
00158 { 00159 return _AutoGetEllapsedTime; 00160 } |
|
non-zero if the lighting Manager must take into account the bbox of the transform. Default behavior is false. Deriver must call setIsBigLightable() at initialisation to change it. Definition at line 365 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsBigLightable, and uint32. Referenced by NL3D::CTransformShape::getLightHotSpotInWorld().
00365 {return getStateFlag(IsBigLightable);} |
|
tells if the transform has been clipped in the clip traversal. Definition at line 313 of file transform.h. References NL3D::CTransform::_Visible. Referenced by NL3D::CClipTrav::clipSkeletonShadowMaps(), NL3D::CSkeletonModel::computeDisplayLodCharacterPriority(), NL3D::CSkeletonModel::computeRenderedBBox(), NL3D::CTransformUser::getLastClippedState(), NL3D::CSkeletonModel::isBoneComputed(), NL3D::CParticleSystemManager::processAnimate(), NL3D::CTransform::traverseClip(), traverseClip(), and NL3D::CPointLightModel::traverseLight().
00314 { 00315 return _Visible; 00316 } |
|
non-zero if the CTransform can be casted to a CCluster
Definition at line 451 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsCluster, and uint32. Referenced by NL3D::CClipTrav::traverse().
00451 {return getStateFlag(IsCluster);} |
|
true if the instance cast shadow. By default false
Definition at line 515 of file transform.h. References NL3D::CTransform::getStateFlag(), and NL3D::CTransform::IsGeneratingShadowMap. Referenced by NL3D::CClipTrav::clipSkeletonShadowMaps(), and NL3D::CSkeletonModel::traverseAnimDetail().
00515 {return getStateFlag(IsGeneratingShadowMap)!=0;} |
|
for now, we have 4 animatables value in a system
Definition at line 1018 of file particle_system_model.cpp. References NL3D::MaxPSUserParam, nlassert, nlctassert, and uint.
01019 { 01020 nlctassert(MaxPSUserParam < 8); // there should be less than 8 parameters because of mask stored in a byte 01021 nlassert(userParamIndex < MaxPSUserParam); 01022 return (_BypassGlobalUserParam & (1 << userParamIndex)) != 0; 01023 } |
|
tells if the transform has been determined as visible in the hrc traversal Reimplemented in NL3D::CPointLightModel. Definition at line 306 of file transform.h. References NL3D::CTransform::_WorldVis. Referenced by NL3D::CClipTrav::clipSkeletonShadowMaps(), NL3D::CSkeletonModel::computeWorldBBoxForShadow(), NL3D::CMeshInstance::computeWorldBBoxForShadow(), NL3D::CTransformUser::getLastWorldVisState(), NL3D::CSkeletonModel::renderIntoSkeletonShadowMap(), NL3D::CMeshInstance::renderIntoSkeletonShadowMap(), and NL3D::CSkeletonModel::traverseAnimDetail().
00307 { 00308 return _WorldVis; 00309 } |
|
test wether the system has become invalid. The condition for a system to be invalid are encoded in the system itself (no more particles for example). When a system has become invalid, you may want to remove it most of the time Definition at line 114 of file particle_system_model.h.
00114 { return _Invalidated; } |
|
true if the model can be lighted (such as CMeshBaseInstance) Default behavior is false. Deriver must use setIsLightable(true) method if the instance can be lighted.
Definition at line 337 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsFinalLightable, and uint32. Referenced by NL3D::CClipTrav::clipSkeletonShadowMaps(), NL3D::CTransform::traverseClip(), NL3D::CTransformShape::traverseRender(), NL3D::CTransform::unfreezeHRC(), NL3D::CTransform::update(), and NL3D::CTransform::updateWorld().
00337 {return getStateFlag(IsFinalLightable);} |
|
true if the model is linked to a quadCluster
Definition at line 141 of file transform_shape.h. References NL3D::CTransformShape::_QuadClusterListNode, and NL3D::CFastPtrListNode::isLinked().
00141 {return _QuadClusterListNode.isLinked();}
|
|
non-zero if the model is loadBalancable (ie added to the loadBalancing list if visible)
Definition at line 442 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsLoadBalancable, and uint32. Referenced by NL3D::CTransform::traverseClip().
00442 {return getStateFlag(IsLoadBalancable);} |
|
non-zero if the CTransform can be casted to a CMeshBaseInstance
Definition at line 447 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsMeshBaseInstance, and uint32. Referenced by NL3D::CInstanceUser::enableAsyncTextureMode(), NL3D::CInstanceUser::getAsyncTextureDistance(), NL3D::CInstanceUser::getAsyncTextureMode(), NL3D::CInstanceUser::isAsyncTextureDirty(), NL3D::CInstanceUser::isAsyncTextureReady(), NL3D::CInstanceUser::setAsyncTextureDirty(), NL3D::CInstanceUser::setAsyncTextureDistance(), and NL3D::CInstanceUser::startAsyncTextureLoading().
00447 {return getStateFlag(IsMeshBaseInstance);} |
|
non-zero if the object has a FrozenStaticLightSetup not correclty updated.
Definition at line 631 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsNeedUpdateFrozenStaticLightSetup, and uint32. Referenced by NL3D::CTransform::traverseLight().
00631 {return getStateFlag(IsNeedUpdateFrozenStaticLightSetup);} |
|
non-zero if the object needs to updatelighting.
Definition at line 629 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsNeedUpdateLighting, and uint32. Referenced by NL3D::CTransform::resetLighting(), and NL3D::CTransform::traverseLight().
00629 {return getStateFlag(IsNeedUpdateLighting);} |
|
Definition at line 173 of file transform.h. References NL3D::CTransform::getStateFlag(), and uint32. Referenced by NL3D::CTransformUser::isOpaque(), NL3D::CRenderTrav::traverse(), and NL3D::CSkeletonModel::updateSkinRenderLists().
00173 { return getStateFlag(IsOpaque); } |
|
=====================================================================================
Definition at line 182 of file particle_system_model.cpp. Referenced by registerPSModelObserver(), and removePSModelObserver().
00183 { 00184 return std::find(_Observers.begin(), _Observers.end(), obs) != _Observers.end(); 00185 } |
|
special feature for CQuadGridClipManager. return a non-zero value if true Definition at line 294 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::QuadGridClipEnabled, and uint32. Referenced by NL3D::CClipTrav::traverse().
00294 {return getStateFlag(QuadGridClipEnabled);} |
|
non-zero if the model is renderable (ie something may appear on screen)
Definition at line 444 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsRenderable, and uint32. Referenced by NL3D::CTransform::traverseClip().
00444 {return getStateFlag(IsRenderable);} |
|
return non-zero if I am a skeleton. if yes, static_cast<CSkeletonModel*> may be used
Definition at line 421 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsSkeleton, and uint32. Referenced by NL3D::CSkeletonModel::forceComputeBone(), and NL3D::CAnimDetailTrav::traverse().
00421 {return getStateFlag(IsSkeleton);} |
|
Deriver must change this method if the model can be skinned. called rarely.
Reimplemented in NL3D::CMeshInstance, NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 567 of file transform.h. Referenced by NL3D::CSkeletonModel::bindSkin().
00567 {return false;} |
|
non-zero if the model is skinned onto a skeleton.
Definition at line 423 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsSkinned, and uint32. Referenced by NL3D::CSkeletonModel::detachSkeletonSon(), NL3D::CTransform::heritVisibility(), NL3D::CTransform::hide(), NL3D::CTransform::registerToChannelMixer(), NL3D::CMeshMRMSkinnedGeom::render(), NL3D::CMeshMRMGeom::render(), NL3D::CMeshGeom::render(), NL3D::CMeshMRMGeom::renderSkin(), NL3D::CMeshGeom::renderSkin(), NL3D::CMeshMRMSkinnedGeom::renderSkinGroupGeom(), NL3D::CMeshMRMGeom::renderSkinGroupGeom(), NL3D::CTransform::setIsForceAnimDetail(), NL3D::CTransform::setOpacity(), NL3D::CTransform::setTransparency(), NL3D::CTransform::show(), NL3D::CTransform::updateWorldMatrixFromFather(), and NL3D::CTransform::~CTransform().
00423 {return getStateFlag(IsSkinned);} |
|
Reimplemented in NL3D::CSegRemanence. Definition at line 132 of file transform_shape.h. Referenced by NL3D::CInstanceUser::isStarted().
00132 { return false; } |
|
activate the display of tool (for edition purpose)
Definition at line 179 of file particle_system_model.h. References _ToolDisplayEnabled. Referenced by NL3D::CParticleSystemShape::render().
00180 { 00181 return _ToolDisplayEnabled; 00182 } |
|
Return non 0 int if the value as been touched else 0.
Definition at line 184 of file animatable.h. References NL3D::IAnimatable::_BitSet, uint, and uint32. Referenced by doAnimate(), NL3D::ITransformable::needCompute(), NL3D::IAnimatable::propagateTouch(), and NL3D::CAnimatedMaterial::update().
00185 {
00186 return _BitSet&(1<<valueId);
00187 }
|
|
non-zero if the CTransform can be casted to a CTransformShape
Definition at line 449 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsTransformShape, and uint32. Referenced by NL3D::CTransform::updateWorld().
00449 {return getStateFlag(IsTransformShape);} |
|
Definition at line 174 of file transform.h. References NL3D::CTransform::getStateFlag(), and uint32. Referenced by NL3D::CTransformUser::isTransparent(), NL3D::CRenderTrav::traverse(), and NL3D::CSkeletonModel::updateSkinRenderLists().
00174 { return getStateFlag(IsTransparent); } |
|
Setup Matrix by the lookAt method. Work only in DirectMatrix mode and RotQuat mode (not euler...).
Definition at line 169 of file transformable.cpp. References NL3D::ITransformable::DirectMatrix, NLMISC::CMatrix::getPos(), NLMISC::CMatrix::getRot(), NLMISC::CMatrix::identity(), nlassert, NLMISC::CVector::normalize(), NLMISC::CMatrix::rotateY(), NL3D::ITransformable::RotQuat, NL3D::ITransformable::setMatrix(), NL3D::ITransformable::setPivot(), NL3D::ITransformable::setPos(), NLMISC::CMatrix::setPos(), NLMISC::CMatrix::setRot(), NL3D::ITransformable::setRotQuat(), and NL3D::ITransformable::setScale(). Referenced by NL3D::CTransformableUser::lookAt(), and NL3D::CCamera::update().
00170 { 00171 nlassert(_Mode==RotQuat || _Mode==DirectMatrix); 00172 00173 // Roll matrix 00174 CMatrix rollMT; 00175 rollMT.identity(); 00176 if (roll!=0.f) 00177 rollMT.rotateY (roll); 00178 00179 // Make the target base 00180 CVector j=target; 00181 j-=eye; 00182 j.normalize(); 00183 CVector i=j^CVector (0,0,1.f); 00184 CVector k=i^j; 00185 k.normalize(); 00186 i=j^k; 00187 i.normalize(); 00188 00189 // Make the target matrix 00190 CMatrix targetMT; 00191 targetMT.identity(); 00192 targetMT.setRot (i, j, k); 00193 targetMT.setPos (eye); 00194 00195 // Compose matrix 00196 targetMT*=rollMT; 00197 00198 // Set the matrix 00199 if(_Mode==DirectMatrix) 00200 setMatrix (targetMT); 00201 else 00202 { 00203 // transfrom to quaternion mode. 00204 setScale(CVector(1,1,1)); 00205 setPivot(CVector::Null); 00206 setPos(targetMT.getPos()); 00207 setRotQuat(targetMT.getRot()); 00208 } 00209 } |
|
true if the model provide a method to support shadowMap generation
Definition at line 480 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsShadowMapCaster, and uint32. Referenced by NL3D::CTransform::enableCastShadowMap().
00480 {return getStateFlag(IsShadowMapCaster);} |
|
true if the model provide a method to support shadowMap receiving
Definition at line 482 of file transform.h. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsShadowMapReceiver, and uint32. Referenced by NL3D::CTransform::enableReceiveShadowMap().
00482 {return getStateFlag(IsShadowMapReceiver);} |
|
Called at RenderTrav to profile current render. no-op per default.
Reimplemented from NL3D::CTransform. Definition at line 248 of file transform_shape.cpp. References NL3D::CTransform::getOwnerScene(), NL3D::CScene::getRenderTrav(), NL3D::CRenderTrav::isCurrentPassOpaque(), and NL3D::CTransformShape::Shape.
00249 { 00250 // profile the shape. 00251 if(Shape) 00252 { 00253 CRenderTrav &rdrTrav= getOwnerScene()->getRenderTrav(); 00254 bool currentPassOpaque= rdrTrav.isCurrentPassOpaque(); 00255 00256 Shape->profileSceneRender( &rdrTrav, this, currentPassOpaque ); 00257 } 00258 } |
|
Called when the resource (attached system) for this system must be reallocated. ===================================================================================== Called when the resource (attached system) for this system must be reallocated Definition at line 249 of file particle_system_model.cpp. References _AnimatedModelHandle, _EmitterActive, _ModelHandle, _ParticleSystem, NL3D::CParticleSystemManager::addPermanentlyAnimatedSystem(), NL3D::CParticleSystemManager::addSystemModel(), NL3D::CScene::getParticleSystemManager(), NL3D::CParticleSystemShape::instanciatePS(), NL3D::CParticleSystemShape::isShared(), NL3D::MaxPSUserParam, nlassert, NL3D::IAnimatable::touch(), and uint. Referenced by forceInstanciate(), setEditionMode(), and traverseAnimDetail().
00250 { 00251 //MINI_TIMER(PSStatsReallocRsc) 00252 nlassert(_ParticleSystem == NULL); 00253 #ifdef PS_FAST_ALLOC 00254 CParticleSystemShape *shape = NLMISC::safe_cast<CParticleSystemShape *>((IShape *) Shape); 00255 if (shape->isShared()) 00256 { 00257 // there's a single CparticleSystemInstance even if there are several models 00258 _ParticleSystem = shape->instanciatePS(*_Scene, &shape->Allocator); 00259 } 00260 else 00261 { 00262 _ParticleSystem = shape->instanciatePS(*_Scene, &_Allocator); 00263 } 00264 #else 00265 _ParticleSystem = NLMISC::safe_cast<CParticleSystemShape *>((IShape *) Shape)->instanciatePS(*_Scene); 00266 #endif 00267 nlassert(_ParticleSystem); 00268 nlassert(_Scene); 00269 CParticleSystemManager &psmgt = _Scene->getParticleSystemManager(); 00270 _ModelHandle = psmgt.addSystemModel(this); 00271 _AnimType = _ParticleSystem->getAnimType(); 00272 if (_ParticleSystem->getAnimType() == CParticleSystem::AnimAlways) 00273 { 00274 _AnimatedModelHandle = psmgt.addPermanentlyAnimatedSystem(this); 00275 } 00276 // touch user params animated value. If the system rsc have been released before, this force to restore them 00277 for (uint k = 0; k < MaxPSUserParam; ++k) 00278 { 00279 touch((uint)CParticleSystemModel::PSParam0 + k, OwnerBit); 00280 } 00281 _ParticleSystem->setUserColor(_UserColor); 00282 // 00283 if (!_EmitterActive) _ParticleSystem->activateEmitters(false); 00284 // 00285 if (_ZBias != 0.f) _ParticleSystem->setZBias(_ZBias); 00286 } |
|
For receivers. Modulate the Object with a ShadowMap. The model shoud render in the scene driver a version of its geometry simplified, and modulate the background with shadowColor.
Reimplemented in NL3D::CLandscapeModel. Definition at line 506 of file transform.h. Referenced by NL3D::CShadowMapManager::renderProject().
00506 {} |
|
===================================================================================== test if not too far frustum test Here we test wether the system has not gone out of scope. Why do we test this here addtionnaly to the clip traversal ? Simply because the clip traversal is not called if the cluster it is inserted in is not parsed. This is not good, because we want to keep few CParticleSystem instance. This method solve that problem. This is called by the particle system manager when each scene has rendered Definition at line 328 of file particle_system_model.cpp. References NL3D::CParticleSystemShape::_DestroyModelWhenOutOfRange, NL3D::CParticleSystemShape::_DestroyWhenOutOfFrustum, _EditionMode, NL3D::CParticleSystemShape::_MaxViewDist, _ParticleSystem, checkAgainstPyramid(), NLMISC::CMatrix::getPos(), NL3D::CTransform::getWorldMatrix(), MINI_TIMER, nlassert, NL3D::PSStatsRefreshRscDeletion, releasePSPointer(), and v.
00329 { 00330 MINI_TIMER(PSStatsRefreshRscDeletion) 00331 if (_EditionMode) return; 00340 nlassert(_ParticleSystem); 00341 CParticleSystemShape *shape = NLMISC::safe_cast<CParticleSystemShape *>((IShape *) Shape); 00342 00343 /* NLMISC::CVector sysPos = getTransformMode() == DirectMatrix ? 00344 getMatrix().getPos() : 00345 getPos(); */ 00346 00347 NLMISC::CVector sysPos = getWorldMatrix().getPos(); 00348 00349 NLMISC::CVector v = sysPos - viewerPos; 00351 const float dist2 = v * v; 00352 00353 if (dist2 > shape->_MaxViewDist * shape->_MaxViewDist) // too far ? 00354 { 00355 releasePSPointer(); 00356 if (shape->_DestroyModelWhenOutOfRange) 00357 { 00358 _Invalidated = true; 00359 } 00360 return; 00361 } 00362 00364 if (shape->_DestroyWhenOutOfFrustum) 00365 { 00366 if (checkAgainstPyramid(worldFrustumPyramid) == false) 00367 { 00368 if (shape->_DestroyModelWhenOutOfRange) 00369 { 00370 _Invalidated = true; 00371 } 00372 releasePSPointer(); 00373 return; 00374 } 00375 } 00376 00377 return; 00378 } |
|
=====================================================================================
Reimplemented from NL3D::CTransformShape. Definition at line 189 of file particle_system_model.cpp. References NL3D::ParticleSystemModelId, and NL3D::TransformShapeId.
00190 {
00191 // register the model
00192 CScene::registerModel(ParticleSystemModelId, TransformShapeId, CParticleSystemModel::creator);
00193 }
|
|
=====================================================================================
Definition at line 164 of file particle_system_model.cpp. References isPSModelObserver(), MINI_TIMER, nlassert, and NL3D::PSStatsRegisterPSModelObserver.
00165 { 00166 MINI_TIMER(PSStatsRegisterPSModelObserver) 00167 nlassert(!isPSModelObserver(obs)); // this observer has already been registered 00168 _Observers.push_back(obs); 00169 } |
|
=====================================================================================
Reimplemented from NL3D::CTransform. Definition at line 470 of file particle_system_model.cpp. References NL3D::IAnimatable::addValue(), PSParam0, PSParam1, PSParam2, PSParam3, and PSTrigger.
00471 { 00472 CTransformShape::registerToChannelMixer(chanMixer, prefix); 00473 addValue(chanMixer, PSParam0, OwnerBit, prefix, true); 00474 addValue(chanMixer, PSParam1, OwnerBit, prefix, true); 00475 addValue(chanMixer, PSParam2, OwnerBit, prefix, true); 00476 addValue(chanMixer, PSParam3, OwnerBit, prefix, true); 00477 addValue(chanMixer, PSTrigger, OwnerBit, prefix, true); 00478 } |
|
=====================================================================================
Definition at line 289 of file particle_system_model.cpp. References _AnimatedModelHandle, _ModelHandle, _ParticleSystem, NLMISC::CSmartPtr< CParticleSystem >::getNbRef(), NL3D::CScene::getParticleSystemManager(), NL3D::CParticleSystemShape::isShared(), NL3D::MaxPSUserParam, MINI_TIMER, nlassert, NL3D::PSStatsReleasePSPointer, NL3D::CParticleSystemManager::removePermanentlyAnimatedSystem(), NL3D::CParticleSystemManager::removeSystemModel(), sint, uint, NL3D::CParticleSystemManager::TAlwaysAnimatedModelHandle::Valid, and NL3D::CAnimatedValueBlendable< float >::Value. Referenced by refreshRscDeletion(), releaseRsc(), and releaseRscAndInvalidate().
00290 { 00291 MINI_TIMER(PSStatsReleasePSPointer) 00292 nlassert(_ParticleSystem != NULL); 00293 sint numRefs = _ParticleSystem.getNbRef(); 00294 if (numRefs == 1) 00295 { 00296 // Backup user params (in animated value) so that they will be restored when the system is recreated 00297 for (uint k = 0; k < MaxPSUserParam; ++k) 00298 { 00299 _UserParam[k].Value = _ParticleSystem->getUserParam(k); 00300 } 00301 } 00302 // 00303 nlassert(_Scene); 00304 _Scene->getParticleSystemManager().removeSystemModel(_ModelHandle); 00305 if (_ParticleSystem->getAnimType() == CParticleSystem::AnimAlways) 00306 { 00307 if (_AnimatedModelHandle.Valid) 00308 { 00309 _Scene->getParticleSystemManager().removePermanentlyAnimatedSystem(_AnimatedModelHandle); 00310 } 00311 } 00312 // 00313 _ParticleSystem = NULL; // one less ref with the smart ptr 00314 #ifdef PS_FAST_ALLOC 00315 CParticleSystemShape *shape = NLMISC::safe_cast<CParticleSystemShape *>((IShape *) Shape); 00316 if (shape->isShared()) 00317 { 00318 if (numRefs == 1) 00319 { 00320 // release allocator in the shape 00321 shape->Allocator.release(); 00322 } 00323 } 00324 #endif 00325 } |
|
=====================================================================================
Definition at line 381 of file particle_system_model.cpp. References _ParticleSystem, MINI_TIMER, NL3D::PSStatsReleaseRsc, and releasePSPointer(). Referenced by traverseAnimDetail(), and ~CParticleSystemModel().
00382 { 00383 MINI_TIMER(PSStatsReleaseRsc) 00384 if (!_ParticleSystem) return; 00385 releasePSPointer(); 00386 } |
|
=====================================================================================
Definition at line 389 of file particle_system_model.cpp. References _ParticleSystem, NL3D::CParticleSystemShape::isShared(), MINI_TIMER, NL3D::PSStatsReleaseRscAndInvalidate, and releasePSPointer(). Referenced by checkDestroyCondition(), NL3D::CParticleSystemManager::processAnimate(), and traverseAnimDetail().
00390 { 00391 MINI_TIMER(PSStatsReleaseRscAndInvalidate) 00392 if (!_ParticleSystem) return; 00393 releasePSPointer(); 00394 _Invalidated = true; 00395 00396 static std::vector<IPSModelObserver *> copyVect; 00397 copyVect.resize(_Observers.size()); 00398 std::copy(_Observers.begin(), _Observers.end(), copyVect.begin()); 00399 00400 for (std::vector<IPSModelObserver *>::iterator it = copyVect.begin(); it != copyVect.end(); ++it) 00401 { 00402 (*it)->invalidPS(this); // if this crash, then you forgot to call removePSModelObserver ! 00403 } 00404 #ifdef PS_FAST_ALLOC 00405 CParticleSystemShape *shape = NLMISC::safe_cast<CParticleSystemShape *>((IShape *) Shape); 00406 if (!shape->isShared()) 00407 { 00408 _Allocator.release(); 00409 } 00410 // else .. 00411 // if system if shared, the allocator is placed in the shape, so no-op there 00412 #endif 00413 } |
|
===================================================================================== remove an observer
Definition at line 172 of file particle_system_model.cpp. References isPSModelObserver(), MINI_TIMER, nlassert, and NL3D::PSStatsRemovePSModelObserver.
00173 { 00174 MINI_TIMER(PSStatsRemovePSModelObserver); 00175 nlassert(isPSModelObserver(obs)); // the observer must have been registered 00176 std::vector<IPSModelObserver *>::iterator it = std::find(_Observers.begin(), _Observers.end(), obs); 00177 _Observers.erase(it); 00178 } |
|
Special For Skeleton Caster. Render into the AuxDriver the mesh, within the current setuped Frustum/ViewMatrix. no-op by default, or if hidden in HRC!!
Reimplemented in NL3D::CMeshInstance, and NL3D::CSkeletonModel. Definition at line 527 of file transform.h. Referenced by NL3D::CSkeletonModel::renderIntoSkeletonShadowMap().
00527 {} |
|
Deriver must change this method if isSkinnable(). It return a list of sphere relative to each bone of the father skeleton. Use with getSkinBoneUsage() to know to wich bone this sphere apply NB: if a sphere radius is -1, it means that the bone is not used (for any reason...) default is to return NULL. Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 612 of file transform.h. References sint, uint, and uint8.
00612 {return 0;}
|
|
Deriver must change this method if isSkinnable(). It return a list of sphere relative to each bone of the father skeleton. Use with getSkinBoneUsage() to know to wich bone this sphere apply NB: if a sphere radius is -1, it means that the bone is not used (for any reason...) default is to return NULL. Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 613 of file transform.h. References uint.
00613 {} |
|
Deriver must change this method if isSkinnable(). It renders the skin with current ctx of the skeletonModel SkeletonModel has already setuped the Light and the modelMatrix in the driver. If the skin is a MRM, it is the skeleton which drives the MRM level with alphaMRM: [0,1] default is nop Reimplemented in NL3D::CMeshInstance, NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 590 of file transform.h.
00590 {} |
|
if supportSkinGrouping(), called to transform the VBuffer, and store it into dest.
Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 601 of file transform.h. References sint, uint, and uint8.
00601 {return 0;}
|
|
if supportSkinGrouping(), called to render the primitives of the already skinned vertices (VB activated in the driver) Optionnaly, fill specRdrPasses with specular rdrPass to sort (used for specular grouping).
Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 606 of file transform.h. References uint.
00606 {} |
|
Render a specific specular renderPass returned by renderSkinGroupPrimitives.
Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 608 of file transform.h. References uint.
00608 {} |
|
reset lights which influence this models. NB: the model is removed from all lights's list (except FrozenStaticLightSetup). Called by light rendering. NB: the model is NOT removed from LightingManager (with eraseStaticLightedModel()). Definition at line 988 of file transform.cpp. References NL3D::CTransform::_LightContribution, NL3D::CLightContribution::FrozenStaticLightSetup, NL3D::CTransform::IsNeedUpdateLighting, NL3D::CTransform::isNeedUpdateLighting(), NL3D_MAX_LIGHT_CONTRIBUTION, NL3D::CLightContribution::NumFrozenStaticLight, NL3D::CLightContribution::PointLight, NL3D::CPointLight::removeLightedModel(), NL3D::CTransform::setStateFlag(), NL3D::CLightContribution::TransformIterator, and uint. Referenced by NL3D::CLightingManager::addDynamicLight(), NL3D::CTransform::freezeStaticLightSetup(), NL3D::CPointLight::resetLightedModels(), NL3D::CTransform::unfreezeStaticLightSetup(), NL3D::CTransform::updateWorld(), and NL3D::CTransform::~CTransform().
00989 { 00990 // if the model is already isNeedUpdateLighting, his light setup is reseted. 00991 // so no need to reset again 00992 if(isNeedUpdateLighting()) 00993 return; 00994 00995 00996 // For all light not in FrozenStaticLightSetup, remove me from their list 00997 uint startLight= 0; 00998 if(_LightContribution.FrozenStaticLightSetup) 00999 { 01000 startLight= _LightContribution.NumFrozenStaticLight; 01001 } 01002 01003 // for all light in the list, remove me from their list. 01004 for(uint i=startLight; i<NL3D_MAX_LIGHT_CONTRIBUTION; i++) 01005 { 01006 CPointLight *pl= _LightContribution.PointLight[i]; 01007 // if end of list, break. 01008 if(!pl) 01009 break; 01010 else 01011 { 01012 // remove me from this light. 01013 pl->removeLightedModel(_LightContribution.TransformIterator[i]); 01014 } 01015 } 01016 // empty the list. 01017 if(startLight<NL3D_MAX_LIGHT_CONTRIBUTION) 01018 _LightContribution.PointLight[startLight]= NULL; 01019 01020 01021 // the model needs to update his lighting. 01022 setStateFlag(IsNeedUpdateLighting, true); 01023 01024 } |
|
Change value count, bit are set to 0
Definition at line 195 of file animatable.h. References count, nlassert, and uint.
00196 { 00197 // with the "uint32 _BitSet" implementation, juste check the size is correct 00198 nlassert(count<=32); 00199 } |
|
Deriver must change this method if isSkinnable(). called by CSkeletonModel::bindSkin() NB: _FatherSkeletonModel is valid when setApplySkin() is called The default behavior must be called: it sets the flag so isSkinned() return the good thing Reimplemented in NL3D::CMeshInstance, NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 584 of file transform.cpp. References NL3D::CTransform::IsSkinned, and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CSkeletonModel::bindSkin(), and NL3D::CSkeletonModel::detachSkeletonSon().
00585 { 00586 setStateFlag(IsSkinned, state); 00587 } |
|
This force gives this object ownership of the channel mixer it is registered to, so it will delete it when the dtor is called. It should be called AFTER this object has been registered to a channel mixer, because a new registration will broke the ownership. This is useful for automatic animations, when there's no owner of the channel mixer that could delete it. Definition at line 256 of file transform.h. References NL3D::CTransform::IsDeleteChannelMixer, and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CScene::createInstance(), and NL3D::CTransform::registerToChannelMixer().
00256 { setStateFlag(IsDeleteChannelMixer, enable); } |
|
Definition at line 912 of file transform.h. References NL3D::CTransform::_ClusterSystem, NL3D::CTransform::ForceClipRoot, NL3D::CTransform::getStateFlag(), and nlassert. Referenced by NL3D::CScene::findCameraClusterSystemFromRay(), and NL3D::CTransform::setForceClipRoot().
00913 { 00914 if (pCS != NULL) 00915 { 00916 nlassert(!getStateFlag(ForceClipRoot)); // the transform must be linked to the root, and have not cluster system when this flag is set 00917 } 00918 _ClusterSystem = pCS; 00919 } |
|
Definition at line 137 of file transform_shape.h. Referenced by NL3D::CScene::createInstance(), and NL3D::CInstanceUser::setDistMax().
00137 { _DistMax = distMax; } |
|
Definition at line 378 of file transform.cpp. References NL3D::CTransform::_DontUnfreezeChildren. Referenced by NL3D::CInstanceGroup::createRoot().
00379 { 00380 _DontUnfreezeChildren = val; 00381 } |
|
===================================================================================== force the edition mode : this will prevent the system from being removed when it is out of range. When the model is first allocated, the system resource are not allocated until it becomes visible. This also forces the resources to be allocated. when there are no more particles in it etc. (this also mean that you can safely keep a pointer on it) This flag is not saved. Definition at line 148 of file particle_system_model.cpp. References _EditionMode, _ParticleSystem, nlassert, and reallocRsc().
00149 { 00150 if (enable) 00151 { 00153 if (!_ParticleSystem) 00154 { 00155 nlassert(_Scene); 00156 nlassert(Shape); 00157 reallocRsc(); 00158 } 00159 } 00160 _EditionMode = enable; 00161 } |
|
set the ellapsed time (in second) used for animation.
Definition at line 162 of file particle_system_model.h. References _EllapsedTime, and NL3D::TAnimationTime. Referenced by doAnimate().
00163 { 00164 _EllapsedTime = ellapsedTime; 00165 } |
|
This apply a ratio on the ellapsed time. This can be used to slow down a system This must be in the >= 0. 1 means the system run at normal speed Definition at line 149 of file particle_system_model.h. References _EllapsedTimeRatio, nlassert, and value.
00150 { 00151 nlassert(value >= 0); 00152 _EllapsedTimeRatio = value; 00153 } |
|
Say which (if any) IAnimatable owns this one. This is important for Touch propagation. By this system, Fathers and ancestors know if they must check their sons (isTouched() return true).
Definition at line 153 of file animatable.h. References NL3D::IAnimatable::_Father, NL3D::IAnimatable::_FatherOwnerBit, NL3D::IAnimatable::propagateTouch(), and uint. Referenced by NL3D::CMeshBase::instanciateMeshBase(), and NL3D::CSegRemanence::setAnimatedMaterial().
00154 { 00155 _Father= father; _FatherOwnerBit= fatherOwnerBit; 00156 00157 // propagate the touch to the fathers. 00158 propagateTouch(); 00159 } |
|
This method set a bit in the bitset.
Definition at line 239 of file animatable.h. References NL3D::IAnimatable::_BitSet, and uint. Referenced by NL3D::IAnimatable::propagateTouch(), and NL3D::IAnimatable::touch().
00240 { 00241 _BitSet|= (1<<valueId); 00242 } |
|
Force the transform to always be attached to the root As a consequence, it can't be inserted into a cluster system (even the root cluster) and is thus always visible when in the frustum (not clusterized) NB : any call to setClusterSystem will cause an assertion when the flag is set NB : any call to hrcUnlink will cause an assertion when the flag is set (must remain linked to the root) Definition at line 1380 of file transform.cpp. References NL3D::CTransform::_OwnerScene, NL3D::CTransform::ForceClipRoot, NL3D::CScene::getRoot(), NL3D::CTransform::getStateFlag(), NL3D::CTransform::hrcLinkSon(), NL3D::CTransform::hrcUnlink(), NL3D::CTransform::setClusterSystem(), and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CTransformUser::setForceClipRoot().
01381 { 01382 if (forceClipRoot == (getStateFlag(ForceClipRoot) != 0)) return; 01383 if (forceClipRoot) 01384 { 01385 // unlink from previous father and link to the root 01386 hrcUnlink(); 01387 if (_OwnerScene) 01388 { 01389 _OwnerScene->getRoot()->hrcLinkSon(this); 01390 } 01391 setClusterSystem(NULL); 01392 } 01393 setStateFlag(ForceClipRoot, forceClipRoot); 01394 } |
|
For ShadowMapManager. true if the model is rendering its ShadowMap this frame.
Definition at line 514 of file transform.h. References NL3D::CTransform::canCastShadowMap(), NL3D::CTransform::IsGeneratingShadowMap, and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CShadowMapManager::addShadowCasterGenerate().
00514 {if(canCastShadowMap()) setStateFlag(IsGeneratingShadowMap, state);} |
|
Deriver must use this method with true to indicate the model is a big lightable.
Definition at line 574 of file transform.cpp. References NL3D::CTransform::IsBigLightable, and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CMeshBase::instanciateMeshBase().
00575 { 00576 setStateFlag(IsBigLightable, val); 00577 } |
|
For CCluster only.
Definition at line 671 of file transform.h. References NL3D::CTransform::IsCluster, and NL3D::CTransform::setStateFlag().
00671 {setStateFlag(IsCluster, val);} |
|
Deriver must use this method with true if the model must be AnimDetail-ed whatever registerToChannelMixer() has been called or not Definition at line 590 of file transform.cpp. References NL3D::CTransform::_FatherSkeletonModel, NL3D::CSkeletonModel::dirtSkinRenderLists(), NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsAnimDetailable, NL3D::CTransform::IsForceAnimDetail, NL3D::CTransform::isSkinned(), nlassert, and NL3D::CTransform::setStateFlag().
00591 { 00592 setStateFlag(IsForceAnimDetail, val ); 00593 00594 // Update flag, if we must be inserted in AnimDetail 00595 setStateFlag(IsAnimDetailable, _ChannelMixer || getStateFlag(IsForceAnimDetail) ); 00596 00597 // If skinned, then must inform skeleton parent that it must recompute skin render/animDetail lists 00598 if(isSkinned()) 00599 { 00600 nlassert(_FatherSkeletonModel); 00601 _FatherSkeletonModel->dirtSkinRenderLists(); 00602 } 00603 } |
|
Deriver must use this method with true to indicate the model support lighting.
Definition at line 552 of file transform.cpp. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsFinalLightable, NL3D::CTransform::IsLightable, NL3D::CTransform::IsUserLightable, and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CMeshBase::instanciateMeshBase().
00553 { 00554 setStateFlag(IsLightable, val); 00555 // update IsFinalLightable 00556 setStateFlag(IsFinalLightable, (getStateFlag(IsLightable) && getStateFlag(IsUserLightable)) ); 00557 } |
|
Deriver must use this method with true to indicate the model support loadBalancing.
Definition at line 605 of file transform.cpp. References NL3D::CTransform::IsLoadBalancable, and NL3D::CTransform::setStateFlag().
00606 { 00607 setStateFlag(IsLoadBalancable, val ); 00608 } |
|
For CMeshBaseInstance only.
Definition at line 667 of file transform.h. References NL3D::CTransform::IsMeshBaseInstance, and NL3D::CTransform::setStateFlag().
00667 {setStateFlag(IsMeshBaseInstance, val);} |
|
Deriver must use this method with true to indicate the model can be rendered. "can be rendered" means if object has to be inserted in RenderTrav list. eg: a mesh must be inserted in a render list, but not a light, or a NULL transform. The default is false. Definition at line 568 of file transform.cpp. References NL3D::CTransform::IsRenderable, and NL3D::CTransform::setStateFlag().
00569 { 00570 setStateFlag(IsRenderable, val); 00571 } |
|
ShadowMap.
Definition at line 674 of file transform.h. References NL3D::CTransform::IsShadowMapCaster, and NL3D::CTransform::setStateFlag().
00674 {setStateFlag(IsShadowMapCaster, val);} |
|
Deriver must use this method with true to indicate the model is a big lightable.
Definition at line 675 of file transform.h. References NL3D::CTransform::IsShadowMapReceiver, and NL3D::CTransform::setStateFlag().
00675 {setStateFlag(IsShadowMapReceiver, val);} |
|
For CSkeletonModel only.
Definition at line 579 of file transform.cpp. References NL3D::CTransform::IsSkeleton, and NL3D::CTransform::setStateFlag().
00580 { 00581 setStateFlag(IsSkeleton, val); 00582 } |
|
For CTransformShape only.
Definition at line 669 of file transform.h. References NL3D::CTransform::IsTransformShape, and NL3D::CTransform::setStateFlag().
00669 {setStateFlag(IsTransformShape, val);} |
|
Change the load Balancing group of a model. Every models are in a special LoadBalancingGroup. NB: the group is created if did not exist. NB: if models are skinned, it is their Skeleton which drive the group By default, models lies in the "Default" group, but Skeletons for skinning and ParticlesSystems which are in "Skin" and "Fx" group respectively. The "Default" group is special because it is not balanced (ie models are only degraded from their distance to camera) Definition at line 522 of file transform.cpp. References NL3D::CTransform::_LoadBalancingGroup, NL3D::CScene::getLoadBalancingTrav(), NL3D::CLoadBalancingTrav::getOrCreateGroup(), and NL3D::CTransform::getOwnerScene(). Referenced by NL3D::CSkeletonShape::createInstance(), NL3D::CSegRemanenceShape::createInstance(), and NL3D::CParticleSystemShape::createInstance().
00523 { 00524 // Get the traversal. 00525 CLoadBalancingTrav &trav= getOwnerScene()->getLoadBalancingTrav(); 00526 // get the group from trav (create if needed), and set it. 00527 _LoadBalancingGroup= trav.getOrCreateGroup(group); 00528 } |
|
Set the LogicInfo for this transfrom, eg to retrieve statc light information, see ILogicInfo. Ptr is kept in CTransfrom, so should call setLogicInfo(NULL) before to clean up. Definition at line 389 of file transform.h. References NL3D::CTransform::_LogicInfo. Referenced by NL3D::CTransformUser::setLogicInfo().
00389 {_LogicInfo= logicInfo;} |
|
Work only in DirecTMatrix mode (nlassert).
Definition at line 174 of file transformable.h. References NL3D::ITransformable::_LocalMatrixDate, NL3D::ITransformable::DirectMatrix, and nlassert. Referenced by NL3D::ITransformable::lookAt(), and NL3D::CTransformableUser::setMatrix().
00175 { 00176 nlassert(_Mode==DirectMatrix); 00177 _LocalMatrix= mat; 00178 // The matrix has changed. 00179 _LocalMatrixDate++; 00180 } |
|
set the Mean color of the transform. The mean color can be used for many purpose, such as drawing objects if the textures are not loaded. It is used also for Lod Character. Default color is (255,255,255) Definition at line 540 of file transform.cpp. References NL3D::CTransform::_MeanColor.
00541 { 00542 // if the color is different from prec 00543 if(color!=_MeanColor) 00544 { 00545 // change it. 00546 _MeanColor= color; 00547 } 00548 } |
|
Definition at line 255 of file transform.cpp. References NL3D::CTransform::_FatherSkeletonModel, NL3D::CSkeletonModel::dirtSkinRenderLists(), NL3D::CTransform::getStateFlag(), NL3D::CTransform::isSkinned(), nlassert, NL3D::CTransform::setStateFlag(), and v. Referenced by NL3D::CFlareModel::CFlareModel(), CParticleSystemModel(), NL3D::CSkeletonModel::CSkeletonModel(), NL3D::CVegetableBlendLayerModel::CVegetableBlendLayerModel(), NL3D::CWaterModel::CWaterModel(), NL3D::CMeshBase::instanciateMeshBase(), NL3D::CTransformUser::setOpacity(), NL3D::CMeshMultiLodInstance::traverseLoadBalancing(), NL3D::CSegRemanence::updateOpacityFromShape(), and updateOpacityInfos().
00256 { 00257 bool bTmp = getStateFlag(IsOpaque) == 0 ? false : true; 00258 if (bTmp != v) 00259 { 00260 setStateFlag(IsOpaque, v); 00261 if(isSkinned()) 00262 { 00263 nlassert(_FatherSkeletonModel); 00264 _FatherSkeletonModel->dirtSkinRenderLists(); 00265 } 00266 } 00267 } |
|
Set the current layer for this transform. Typically, this is used to sort transparent objects. Isn't used with solid objects. For now : Layer 0 is for underwater Layer 1 is for water surfaces Layer 2 is for object above water Definition at line 184 of file transform.h. References NL3D::CTransform::_OrderingLayer, and uint. Referenced by NL3D::CWaterModel::CWaterModel(), and NL3D::CTransformUser::setOrderingLayer().
00184 { _OrderingLayer = layer; } |
|
Set the particle system for this transform shape after it has been instanciated (from a memory stream, or by sharing) see CParticleSystemShape Definition at line 100 of file particle_system_model.h. References _ParticleSystem, nlassert, and updateOpacityInfos().
00101 { 00102 nlassert(!_ParticleSystem); 00103 _ParticleSystem = ps; 00104 updateOpacityInfos(); 00105 } |
|
Work only in Rot* mode (nlassert).
Definition at line 169 of file transformable.h. References NL3D::ITransformable::setPivot(), x, y, and z.
00170 { 00171 setPivot(CVector(x, y, z)); 00172 } |
|
Work only in Rot* mode (nlassert).
Definition at line 162 of file transformable.h. References NL3D::ITransformable::_Pivot, nlassert, NL3D::ITransformable::PivotValue, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, NL3D::IAnimatable::touch(), and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::ITransformable::lookAt(), NL3D::CTransformableUser::setPivot(), and NL3D::ITransformable::setPivot().
|
|
Work only in Rot* mode(nlassert).
Definition at line 121 of file transformable.h. References NL3D::ITransformable::setPos(), x, y, and z.
00122 { 00123 setPos(CVector(x,y,z)); 00124 } |
|
Work only in Rot* mode(nlassert).
Definition at line 114 of file transformable.h. References nlassert, NL3D::ITransformable::PosValue, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, NL3D::IAnimatable::touch(), and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CCamera::build(), NL3D::ITransformable::lookAt(), NL3D::CTransformableUser::setPos(), NL3D::ITransformable::setPos(), NL3D::CInstanceGroup::setPos(), and NL3D::CPSLight::step().
|
|
Work only in RotEuler mode(nlassert).
Definition at line 133 of file transformable.h. References NL3D::ITransformable::setRotEuler().
00134 { 00135 setRotEuler(CVector(rotX, rotY, rotZ)); 00136 } |
|
Work only in RotEuler mode(nlassert).
Definition at line 126 of file transformable.h. References NL3D::ITransformable::_RotEuler, nlassert, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotEulerValue, NL3D::IAnimatable::touch(), and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CTransformableUser::setRotEuler(), and NL3D::ITransformable::setRotEuler().
|
|
Work only in RotQuat mode (nlassert).
Definition at line 138 of file transformable.h. References NL3D::ITransformable::_RotQuat, nlassert, NL3D::ITransformable::RotQuat, NL3D::ITransformable::RotQuatValue, NL3D::IAnimatable::touch(), and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::CTargetAnimCtrl::execute(), NL3D::ITransformable::lookAt(), NL3D::CTransformableUser::setRotQuat(), and NL3D::CInstanceGroup::setRotQuat().
|
|
Work only in Rot* mode (nlassert).
Definition at line 157 of file transformable.h. References NL3D::ITransformable::setScale().
00158 { 00159 setScale(CVector(scale, scale, scale)); 00160 } |
|
Work only in Rot* mode (nlassert).
Definition at line 152 of file transformable.h. References NL3D::ITransformable::setScale().
00153 { 00154 setScale(CVector(scaleX, scaleY, scaleZ)); 00155 } |
|
Work only in Rot* mode (nlassert).
Definition at line 145 of file transformable.h. References nlassert, NL3D::ITransformable::RotEuler, NL3D::ITransformable::RotQuat, NL3D::ITransformable::ScaleValue, NL3D::IAnimatable::touch(), and NL3D::CAnimatedValueBlendable< T >::Value. Referenced by NL3D::ITransformable::lookAt(), NL3D::CTransformableUser::setScale(), and NL3D::ITransformable::setScale().
|
|
Change the transform mode. Components or matrix are not reseted.
Definition at line 100 of file transformable.h. References NL3D::ITransformable::_RotOrder, NL3D::ITransformable::PosValue, and NL3D::IAnimatable::touch(). Referenced by NL3D::CCamera::build(), NL3D::CCamera::enableTargetAnimation(), NL3D::CPSMesh::newElement(), NL3D::CTransformableUser::setTransformMode(), and NL3D::CPSMesh::updatePos().
00101 { 00102 _Mode= mode; 00103 _RotOrder= ro; 00104 // just for information. 00105 touch(PosValue, OwnerBit); 00106 } |
|
|
For deriver who wants to setup their own current lightContribution setup (as skeleton). Must call changeLightSetup() so change are effectively made in driver Definition at line 98 of file transform_shape.cpp. References NL3D::CTransformShape::_CurrentLightContribution, and NL3D::CTransformShape::_CurrentUseLocalAttenuation. Referenced by NL3D::CSkeletonModel::renderSkins().
00099 { 00100 _CurrentLightContribution= lightContrib; 00101 _CurrentUseLocalAttenuation= useLocalAtt; 00102 } |
|
Definition at line 1310 of file transform.cpp. References NL3D::CTransform::setStateFlag(), and NL3D::CTransform::UserClipping. Referenced by NL3D::CTransformUser::setUserClipping().
01311 { 01312 setStateFlag (UserClipping, enable); 01313 } |
|
Definition at line 1063 of file particle_system_model.cpp. References _ParticleSystem.
01064 { 01065 if (_ParticleSystem) _ParticleSystem->setUserColor(userColor); 01066 _UserColor = userColor; 01067 } |
|
Set the UserLightable flag. if false, isLightable() will always return false. Doing this, user can disable lighting on a model which may be interesting for speed. Default behavior is UserLightable==true. Definition at line 559 of file transform.cpp. References NL3D::CTransform::getStateFlag(), NL3D::CTransform::IsFinalLightable, NL3D::CTransform::IsLightable, NL3D::CTransform::IsUserLightable, and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CTransformUser::setUserLightable().
00560 { 00561 setStateFlag(IsUserLightable, enable); 00562 // update IsFinalLightable 00563 setStateFlag(IsFinalLightable, (getStateFlag(IsLightable) && getStateFlag(IsUserLightable)) ); 00564 } |
|
Set user matrix of the system. Particle can be located in various coordinate system :
Definition at line 281 of file particle_system_model.h. References _UserMatrix.
00281 { _UserMatrix = userMatrix; } |
|
Definition at line 302 of file transform.h. Referenced by NL3D::CParticleSystemManager::processAnimate().
00302 { _WorldMatrix = mat;} |
|
Definition at line 1079 of file particle_system_model.cpp. References _ParticleSystem, and value.
01080 { 01081 if (value == _ZBias) return; 01082 _ZBias = value; 01083 if (_ParticleSystem) _ParticleSystem->setZBias(_ZBias); 01084 } |
|
Show the objet and his sons.
Definition at line 271 of file transform.cpp. References NL3D::CTransform::_FatherSkeletonModel, NL3D::CTransform::_TransformDirty, NL3D::CSkeletonModel::dirtSkinRenderLists(), NL3D::CTransform::isSkinned(), nlassert, and NL3D::CTransform::Visibility. Referenced by NL3D::CTransformUser::show(), and NL3D::CLandscapeUser::show().
00272 { 00273 // Optim: do nothing if already set 00274 if(Visibility!= CHrcTrav::Show) 00275 { 00276 _TransformDirty= true; 00277 Visibility= CHrcTrav::Show; 00278 // If skinned, then must inform skeleton parent that it must recompute skin render/animDetail lists 00279 if(isSkinned()) 00280 { 00281 nlassert(_FatherSkeletonModel); 00282 _FatherSkeletonModel->dirtSkinRenderLists(); 00283 } 00284 } 00285 } |
|
Reimplemented in NL3D::CSegRemanence. Definition at line 128 of file transform_shape.h. Referenced by NL3D::CInstanceUser::start().
00128 {}; |
|
Reimplemented in NL3D::CSegRemanence. Definition at line 130 of file transform_shape.h. Referenced by NL3D::CInstanceUser::stop().
00130 {}; |
|
Special Skinning For ShadowMapping.
Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 611 of file transform.h.
00611 {return false;} |
|
Deriver may support SkinGrouping if isSkinnable(). It renders the skin with current ctx of the skeletonModel, but torn in 2 pass: fillVB,a nd renderPrimitives Deriver may check NL3D_MESH_SKIN_MANAGER_VERTEXFORMAT and NL3D_MESH_SKIN_MANAGER_MAXVERTICES Reimplemented in NL3D::CMeshMRMInstance, and NL3D::CMeshMRMSkinnedInstance. Definition at line 597 of file transform.h.
00597 {return false;} |
|
|
edition purpose : touch the system to tell that the lightable state of the system has changed (added/removed lightable faces )
Definition at line 201 of file particle_system_model.h. References _LightableStateTouched. Referenced by enableDisplayTools().
00202 { 00203 _LightableStateTouched = true; 00204 } |
|
edition purpose : touch the system to tell that the transparency state of the system has changed (added/removed opaque/tansparent faces )
Definition at line 196 of file particle_system_model.h. References _TransparencyStateTouched. Referenced by enableDisplayTools().
00197 { 00198 _TransparencyStateTouched = true; 00199 } |
|
=====================================================================================
Reimplemented from NL3D::CTransform. Definition at line 516 of file particle_system_model.cpp. References NL3D::CParticleSystemShape::_DestroyModelWhenOutOfRange, NL3D::CParticleSystemShape::_DestroyWhenOutOfFrustum, _EditionMode, _InClusterAndVisible, NL3D::CParticleSystem::_LastUpdateDate, _ParticleSystem, _TriggerAnimatedValue, NL3D::CRenderTrav::addRenderModel(), NL3D::CClipTrav::CurrentDate, doAnimate(), NL3D::CParticleSystem::getAnimType(), NL3D::CScene::getClipTrav(), NL3D::CTransform::getOwnerScene(), getPS(), NL3D::CScene::getRenderTrav(), NL3D::CTransform::getVisibility(), NL3D::CParticleSystem::isSharingEnabled(), MINI_TIMER, nlassert, NL3D::PSStatsTraverseAnimDetail, NL3D::PSStatsTraverseAnimDetailPart1, NL3D::PSStatsTraverseAnimDetailPart2, NL3D::PSStatsTraverseAnimDetailPart3, NL3D::PSStatsTraverseAnimDetailPart4, reallocRsc(), releaseRsc(), releaseRscAndInvalidate(), and NL3D::CAnimatedValueNotBlendable< bool >::Value.
00517 { 00518 MINI_TIMER(PSStatsTraverseAnimDetail) 00519 CTransformShape::traverseAnimDetail(); 00520 CParticleSystem *ps = getPS(); 00521 if (!_WorldVis) return; 00522 if (_Invalidated) return; 00523 if (getVisibility() == CHrcTrav::Hide) return; 00524 00525 { 00526 MINI_TIMER(PSStatsTraverseAnimDetailPart1) 00527 if (!_EditionMode && !_InClusterAndVisible) 00528 { 00529 CParticleSystemShape *pss = NLMISC::safe_cast<CParticleSystemShape *>((IShape *)Shape); 00530 if (pss->_DestroyWhenOutOfFrustum) 00531 { 00532 if (pss->_DestroyModelWhenOutOfRange) 00533 { 00534 releaseRscAndInvalidate(); 00535 } 00536 else // remove rsc but do not invalidate the system 00537 { 00538 releaseRsc(); 00539 } 00540 return; 00541 } 00542 if (!ps) return; 00543 } 00544 00545 // check for trigger. If the trigger is false, and there is a system instanciated, we delete it. 00546 if (!_EditionMode) 00547 { 00548 if (!_TriggerAnimatedValue.Value) 00549 { 00550 // system is off, or hasn't been instanciated now... 00551 if (ps) 00552 { 00553 releaseRsc(); 00554 } 00555 return; 00556 } 00557 } 00558 } 00559 00560 { 00561 MINI_TIMER(PSStatsTraverseAnimDetailPart2) 00562 00563 // the system or its center is in the view frustum, but it may not have been instanciated from its shape now 00564 if (!ps) 00565 { 00566 nlassert(_Scene); 00567 nlassert(Shape); 00568 reallocRsc(); 00569 ps = _ParticleSystem; 00570 } 00571 } 00572 00573 CClipTrav &clipTrav= getOwnerScene()->getClipTrav(); 00574 00575 { 00576 MINI_TIMER(PSStatsTraverseAnimDetailPart3) 00577 if (_InClusterAndVisible || ps->getAnimType() == CParticleSystem::AnimInCluster) 00578 { 00579 bool animate = true; 00580 if (ps->isSharingEnabled()) 00581 { 00582 if (ps->_LastUpdateDate == clipTrav.CurrentDate) 00583 { 00584 animate = false; 00585 } 00586 else 00587 { 00588 ps->_LastUpdateDate = clipTrav.CurrentDate; 00589 } 00590 } 00591 else 00592 { 00593 ps->_LastUpdateDate = clipTrav.CurrentDate; 00594 } 00595 ps->_LastUpdateDate = clipTrav.CurrentDate; 00596 if (animate) 00597 { 00598 if (ps->getAnimType() != CParticleSystem::AnimAlways) // if the animation is always perfomred, 00599 // then animation is done by the particle system manager 00600 // just before the render trav 00601 { 00602 doAnimate(); 00603 } 00604 } 00605 } 00606 } 00607 00608 { 00609 MINI_TIMER(PSStatsTraverseAnimDetailPart4) 00610 // add a render model if in cluster & not hidden 00611 if (_InClusterAndVisible) 00612 { 00613 getOwnerScene()->getRenderTrav().addRenderModel(this); 00614 } 00615 } 00616 } |
|
traverse without updatin WorldMatrixFromFather:
Definition at line 938 of file transform.cpp. References NL3D::CChannelMixer::eval(), and NL3D::CTransform::getOwnerScene(). Referenced by NL3D::CTransform::traverseAnimDetail().
00939 { 00940 // AnimDetail behavior: animate only if not clipped. 00941 // NB: no need to test because of VisibilityList use. 00942 00943 // test if the refptr is NULL or not (RefPtr). 00944 CChannelMixer *chanmix= _ChannelMixer; 00945 if(chanmix) 00946 { 00947 // eval detail!! 00948 chanmix->eval(true, getOwnerScene()->getAnimDetailTrav().CurrentDate); 00949 } 00950 } |
|
Very special clip for Particle System (because of the complexity of not rendered, but still detail-animated...) traverse the sons we must do this before us, because this object may delete himself from the scene ============================= the system has no precomputed bbox frustum test ============================= the system has a precomputed bbox frustum test Reimplemented from NL3D::CTransform. Definition at line 726 of file particle_system_model.cpp. References _AnimatedModelHandle, NL3D::CParticleSystemShape::_DestroyModelWhenOutOfRange, _EditionMode, _InClusterAndVisible, _InsertedInVisibleList, NL3D::CParticleSystemShape::_MaxViewDist, _ParticleSystem, NL3D::CParticleSystemShape::_PrecomputedBBox, NL3D::CParticleSystemShape::_UsePrecomputedBBox, NL3D::CParticleSystemManager::addPermanentlyAnimatedSystem(), NL3D::CTravCameraScene::CamPos, checkAgainstPyramid(), checkDestroyCondition(), NLMISC::CAABBox::clipBack(), NL3D::CTransform::clipGetChild(), NL3D::CTransform::clipGetNumChildren(), NL3D::CClipTrav::CurrentDate, NL3D::CParticleSystem::getAnimType(), NL3D::CScene::getClipTrav(), NL3D::CScene::getFilterRenderFlags(), NL3D::CParticleSystem::getMaxViewDist(), NL3D::CTransform::getOwnerScene(), NL3D::CScene::getParticleSystemManager(), NLMISC::CMatrix::getPos(), NL3D::CTransform::getShowWhenLODSticked(), NL3D::CTransform::getWorldMatrix(), insertInVisibleList(), NL3D::CTransform::isClipVisible(), NL3D::CSkeletonModel::isDisplayedAsLodCharacter(), MINI_TIMER, nlassert, NL3D::PSStatsClipSystemCheckAgainstPyramid, NL3D::PSStatsClipSystemInstanciated, NL3D::PSStatsClipSystemNotInstanciated, NL3D::PSStatsInsertInVisibleList, NL3D::PSStatsTraverseClip, NL3D::CParticleSystemManager::removePermanentlyAnimatedSystem(), sint, NL3D::CTransform::traverseClip(), uint, NL3D::CParticleSystemManager::TAlwaysAnimatedModelHandle::Valid, and NL3D::CClipTrav::WorldPyramid.
00727 { 00728 MINI_TIMER(PSStatsTraverseClip) 00729 // disable H_AUTO, because slowdown when lot of models (eg 1000-2000 tested in forest) 00730 //H_AUTO ( NL3D_Particles_Clip ); 00731 00732 // CTransformShape::traverseClip(); 00733 // Traverse the Clip sons. 00734 uint numClipChildren= clipGetNumChildren(); 00735 for(uint i=0;i<numClipChildren;i++) 00736 clipGetChild(i)->traverseClip(); 00737 00738 if (!_WorldVis) return; 00739 if (_Invalidated) return; 00740 CClipTrav &clipTrav= getOwnerScene()->getClipTrav(); 00741 00742 00743 if (_ClipDate != clipTrav.CurrentDate) 00744 { 00745 _InsertedInVisibleList = false; 00746 _InClusterAndVisible = false; 00747 _ClipDate = clipTrav.CurrentDate; 00748 } 00749 if (_InClusterAndVisible) return; // already visible 00750 00751 00752 CParticleSystem *ps = _ParticleSystem; 00753 00754 00755 if (ps) // system instanciated 00756 { 00757 MINI_TIMER(PSStatsClipSystemInstanciated) 00758 // if there are no more particles, no need to even clip.. 00759 if (checkDestroyCondition(ps)) return; 00760 // check for anim mode change 00761 if (_AnimType != ps->getAnimType()) 00762 { 00763 CParticleSystemManager &psmgt = _Scene->getParticleSystemManager(); 00764 if (_AnimType == CParticleSystem::AnimAlways) // was previously always animated ? 00765 { 00766 if (_AnimatedModelHandle.Valid) 00767 { 00768 psmgt.removePermanentlyAnimatedSystem(_AnimatedModelHandle); 00769 } 00770 } 00771 _AnimType = ps->getAnimType(); 00772 if (_AnimType == CParticleSystem::AnimAlways) 00773 { 00774 _AnimatedModelHandle = psmgt.addPermanentlyAnimatedSystem(this); 00775 } 00776 } 00777 } 00778 00779 // check wether display filtered or not 00780 if( !(_Scene->getFilterRenderFlags() & _RenderFilterType) ) 00781 { 00782 _Visible = false; 00783 return; 00784 } 00785 00786 // special case : system sticked to a skeleton 00787 if( _AncestorSkeletonModel!=NULL ) 00788 { 00789 bool visible = _AncestorSkeletonModel->isClipVisible(); 00790 // Special test: if we are sticked to a skeletonModel, and if we are still visible, maybe we don't have to 00791 if(_Visible && _FatherSkeletonModel) 00792 { 00793 // if our skeletonModel father is displayed with a Lod, maybe we are not to be displayed 00794 if(_FatherSkeletonModel->isDisplayedAsLodCharacter()) 00795 { 00796 // We are visible only if we where sticked to the skeleton with forceCLod==true. 00797 // This is also true if we are actually a skeletonModel 00798 if(!getShowWhenLODSticked()) 00799 // otherWise we are not visible. eg: this is the case of skins and some sticked object 00800 visible = false; 00801 } 00802 } 00803 // 00804 if (visible) 00805 { 00806 { 00807 MINI_TIMER(PSStatsInsertInVisibleList) 00808 insertInVisibleList(); 00809 } 00810 _InClusterAndVisible = true; 00811 return; 00812 } 00813 else // not visible, may need animation however.. 00814 { 00815 if (!ps) // no resc allocated 00816 { 00817 CParticleSystemShape *pss= NLMISC::safe_cast<CParticleSystemShape *>((IShape *)Shape); 00818 nlassert(pss); 00819 // invalidate the system if too far 00820 const CVector pos = _AncestorSkeletonModel->getWorldMatrix().getPos(); 00821 const CVector d = pos - clipTrav.CamPos; 00822 if (d * d > pss->_MaxViewDist * pss->_MaxViewDist) 00823 { 00824 _Visible = false; 00825 if (pss->_DestroyModelWhenOutOfRange) 00826 { 00827 _Invalidated = true; 00828 } 00829 } 00830 } 00831 else 00832 { 00833 // NB : The test to see wether the system is not too far is performed by the particle system manager 00834 if (!_EditionMode) 00835 { 00836 { 00837 MINI_TIMER(PSStatsInsertInVisibleList) 00838 insertInVisibleList(); 00839 } 00840 } 00841 } 00842 } 00843 return; 00844 } 00845 00846 00847 // 00848 const std::vector<CPlane> &pyramid= clipTrav.WorldPyramid; 00853 // now the pyramid is directly expressed in the world 00854 const CMatrix &mat= getWorldMatrix(); 00855 00856 00857 // Transform the pyramid in Object space. 00858 00859 00860 if(!ps) 00861 { 00862 MINI_TIMER(PSStatsClipSystemNotInstanciated) 00863 CParticleSystemShape *pss= NLMISC::safe_cast<CParticleSystemShape *>((IShape *)Shape); 00864 nlassert(pss); 00865 00866 // the system wasn't present the last time, we use its center to see if it's back in the view frustum, 00867 // or if it is near enough. 00868 // if this is the case, we say it isn't clipped, so it will be reinstanciated from the shape 00869 // during the DetailAnimTraversal 00870 00871 const CVector pos = getWorldMatrix().getPos(); 00872 00873 const CVector d = pos - clipTrav.CamPos; 00874 00875 00876 // check wether system not too far 00877 if (d * d > pss->_MaxViewDist * pss->_MaxViewDist) 00878 { 00879 _Visible = false; 00880 if (pss->_DestroyModelWhenOutOfRange) 00881 { 00882 _Invalidated = true; 00883 } 00884 return; 00885 } 00886 00887 // test the shape to see wether we have a precomputed bbox 00888 if (!pss->_UsePrecomputedBBox) 00889 { 00892 for(sint i=0; i < (sint)pyramid.size(); i++) 00893 { 00894 if ( (pyramid[i] * mat ).d > 0.0f ) // in its basis, the system is at the center 00895 00896 { 00897 { 00898 MINI_TIMER(PSStatsInsertInVisibleList) 00899 insertInVisibleList(); 00900 } 00901 return; 00902 } 00903 } 00904 { 00905 MINI_TIMER(PSStatsInsertInVisibleList) 00906 insertInVisibleList(); 00907 } 00908 _InClusterAndVisible = true; 00909 return; 00910 } 00911 else 00912 { 00915 for(sint i=0; i < (sint)pyramid.size(); i++) 00916 { 00917 if ( !pss->_PrecomputedBBox.clipBack(pyramid[i] * mat ) ) 00918 { 00919 { 00920 MINI_TIMER(PSStatsInsertInVisibleList) 00921 insertInVisibleList(); 00922 } 00923 return; 00924 } 00925 } 00926 { 00927 MINI_TIMER(PSStatsInsertInVisibleList) 00928 insertInVisibleList(); 00929 } 00930 _InClusterAndVisible = true; 00931 return; 00932 00933 } 00934 } 00935 00936 //========================================================================================================= 00937 // the system is already instanciated 00938 00939 nlassert(ps); 00941 // In edition mode, it isn't done by the manager (system never removed), so we do it here in this case 00942 if (_EditionMode) 00943 { 00944 CParticleSystemShape *pss= NLMISC::safe_cast<CParticleSystemShape *>((IShape *)Shape); 00945 nlassert(pss); 00946 const CVector pos = getWorldMatrix().getPos(); 00947 const CVector d = pos - clipTrav.CamPos; 00948 // check wether system not too far 00949 if (d * d > ps->getMaxViewDist() * ps->getMaxViewDist()) 00950 { 00951 return; // not visible 00952 } 00953 } 00954 if (checkAgainstPyramid(pyramid) == false) 00955 { 00956 MINI_TIMER(PSStatsClipSystemCheckAgainstPyramid) 00957 if (!_EditionMode) 00958 { 00959 // system near, but maybe not in cluster.. 00960 { 00961 MINI_TIMER(PSStatsInsertInVisibleList) 00962 insertInVisibleList(); 00963 } 00964 } 00965 return; 00966 } 00967 00968 { 00969 { 00970 MINI_TIMER(PSStatsInsertInVisibleList) 00971 insertInVisibleList(); 00972 } 00973 } 00974 _InClusterAndVisible = true; 00975 } |
|
Each method is called in its associated traversal.
Reimplemented in NL3D::CCluster, NL3D::CLandscapeModel, NL3D::CMeshBaseInstance, NL3D::CQuadGridClipManager, and NL3D::CRootModel. Definition at line 786 of file transform.cpp. References NL3D::CTransform::hrcGetChild(), NL3D::CTransform::hrcGetNumChildren(), num, uint, and NL3D::CTransform::updateWorld(). Referenced by NL3D::CHrcTrav::traverse(), and NL3D::CRootModel::traverseHrc().
00787 { 00788 // Recompute the matrix, according to _HrcParent matrix mode, and local matrix. 00789 updateWorld(); 00790 00791 // Traverse the Hrc sons. 00792 uint num= hrcGetNumChildren(); 00793 for(uint i=0;i<num;i++) 00794 hrcGetChild(i)->traverseHrc(); 00795 } |
|
traverse the lightedModel per default: recompute LightContribution is isLightable()
Reimplemented in NL3D::CPointLightModel, NL3D::CQuadGridClipManager, and NL3D::CRootModel. Definition at line 1080 of file transform.cpp. References NL3D::CTransform::_LightContribution, NL3D::CTransform::_LogicInfo, NL3D::CLightContribution::AttFactor, NL3D::CPointLight::computeLinearAttenuation(), NL3D::CLightingManager::computeModelLightContributions(), NL3D::CTransform::getAABBox(), NLMISC::CAABBox::getCenter(), NL3D::CScene::getLightTrav(), NL3D::CTransform::getOwnerScene(), NL3D::CPointLight::getPosition(), NL3D::CTransform::getWorldMatrix(), NL3D::CTransform::isNeedUpdateFrozenStaticLightSetup(), NL3D::CTransform::isNeedUpdateLighting(), NL3D::CLightTrav::LightingManager, NL3D::CLightContribution::NumFrozenStaticLight, NLMISC::OptFastFloor(), NL3D::CLightContribution::PointLight, NL3D::CTransform::setStateFlag(), sint, uint, and uint8.
01081 { 01082 // if the model do not need to update his lighting, just skip. 01083 if(!isNeedUpdateLighting()) 01084 return; 01085 01086 01087 // If a freezeStaticLightSetup() has been called on this model recently. 01088 if(isNeedUpdateFrozenStaticLightSetup()) 01089 { 01090 // Now, the correct matrix is computed. 01091 // get the untransformed bbox from the model. 01092 CAABBox bbox; 01093 getAABBox(bbox); 01094 // get transformed center pos of bbox 01095 CVector worldModelPos= getWorldMatrix() * bbox.getCenter(); 01096 01097 // So we can compute AttFactor for each static light influencing this static object 01098 uint numPointLights= _LightContribution.NumFrozenStaticLight; 01099 for(uint i=0;i<numPointLights;i++) 01100 { 01101 const CPointLight *pl= _LightContribution.PointLight[i]; 01102 // don't worry about the precision of floor, because of *255. 01103 float distToModel= (pl->getPosition() - worldModelPos).norm(); 01104 sint attFactor= NLMISC::OptFastFloor( 255 * pl->computeLinearAttenuation(worldModelPos, distToModel) ); 01105 _LightContribution.AttFactor[i]= (uint8)attFactor; 01106 } 01107 01108 // clean. 01109 setStateFlag(CTransform::IsNeedUpdateFrozenStaticLightSetup, false); 01110 } 01111 01112 01113 // see CTransform::clip(), here I am Lightable(), and I have no _AncestorSkeletonModel 01114 // So I am sure that I really need to recompute my ModelLightContributions. 01115 getOwnerScene()->getLightTrav().LightingManager.computeModelLightContributions(this, 01116 _LightContribution, _LogicInfo); 01117 01118 // done! 01119 setStateFlag(CTransform::IsNeedUpdateLighting, false); 01120 } |
|
no-op by default
Reimplemented from NL3D::CTransform. Reimplemented in NL3D::CMeshMultiLodInstance. Definition at line 262 of file transform_shape.cpp. References NL3D::CScene::getLoadBalancingTrav(), NL3D::CLoadBalancingTrav::getLoadPass(), NL3D::CTransform::getOwnerScene(), NL3D::CTransformShape::traverseLoadBalancingPass0(), and NL3D::CTransformShape::traverseLoadBalancingPass1().
00263 { 00264 CLoadBalancingTrav &loadTrav= getOwnerScene()->getLoadBalancingTrav(); 00265 if(loadTrav.getLoadPass()==0) 00266 traverseLoadBalancingPass0(); 00267 else 00268 traverseLoadBalancingPass1(); 00269 } |
|
no-op by default
Reimplemented from NL3D::CTransformShape. Definition at line 680 of file particle_system_model.cpp. References _ParticleSystem, NLMISC::CRGBA::add(), NL3D::CLightContribution::AttFactor, NL3D::CPointLight::getDiffuse(), NL3D::CTransformShape::getLightContribution(), NL3D::CScene::getSunAmbient(), NL3D::CScene::getSunDiffuse(), MINI_TIMER, NLMISC::CRGBA::modulateFromui(), NL3D_MAX_LIGHT_CONTRIBUTION, nlassert, NL3D::CLightContribution::PointLight, NL3D::PSStatsTraverseRender, NL3D::CLightContribution::SunContribution, and uint.
00681 { 00682 MINI_TIMER(PSStatsTraverseRender) 00683 /* 00684 if (!_OutOfFrustum) 00685 {*/ 00686 if (_ParticleSystem) 00687 { 00688 if (CTransform::isLightable()) 00689 { 00690 // affect global lighting color 00691 const CLightContribution &lc = getLightContribution(); 00692 NLMISC::CRGBA lighting(0, 0, 0, 255); 00693 for(uint k = 0; k < NL3D_MAX_LIGHT_CONTRIBUTION; ++k) 00694 { 00695 if (lc.PointLight[k] == NULL) break; 00696 NLMISC::CRGBA currLightContrib; 00697 currLightContrib.modulateFromui(lc.PointLight[k]->getDiffuse(), lc.AttFactor[k]); 00698 lighting.add(lighting, currLightContrib); 00699 } 00700 // add local ambient 00701 //lighting.add(lighting, lc.LocalAmbient); 00702 //lighting.add(lighting,lc.MergedPointLight); 00703 // add sun diffuse 00704 nlassert(_Scene); 00705 NLMISC::CRGBA sunDiffuse; 00706 sunDiffuse.modulateFromui(_Scene->getSunDiffuse(), lc.SunContribution); 00707 lighting.add(lighting, sunDiffuse); 00708 NLMISC::CRGBA sunAmbient; 00709 sunAmbient.modulateFromui(_Scene->getSunAmbient(), lc.SunContribution); 00710 lighting.add(lighting, sunAmbient); 00711 _ParticleSystem->setLightingColor(lighting); 00712 } 00713 CTransformShape::traverseRender(); 00714 } 00715 //} 00716 } |
|
see freezeHRC(). Definition at line 406 of file transform.cpp. References NL3D::CTransform::_FreezeHRCState, NL3D::CTransform::_HrcParent, NL3D::CTransform::_HrcParentUnfreeze, NL3D::CTransform::_LightedModelIt, NL3D::CLightingManager::eraseStaticLightedModel(), NL3D::CTransform::FreezeHRCStateDisabled, NL3D::CScene::getLightTrav(), NL3D::CTransform::getOwnerScene(), NL3D::CScene::getRoot(), NL3D::CTransform::hrcLinkSon(), NL3D::CTransform::isLightable(), NL3D::CLightTrav::LightingManager, NL3D::CTransform::linkToUpdateList(), nlassert, NL3D::CTransform::QuadGridClipEnabled, NL3D::CTransform::setStateFlag(), and NL3D::CTransform::unlinkFromQuadCluster(). Referenced by NL3D::CSkeletonModel::bindSkin(), NL3D::CMeshBaseInstance::traverseHrc(), and NL3D::CInstanceGroup::unfreezeHRC().
00407 { 00408 // if this model is no HRC frozen disabled 00409 if(_FreezeHRCState!=FreezeHRCStateDisabled) 00410 { 00411 // if model correctly frozen. 00412 if(_FreezeHRCState == CTransform::FreezeHRCStateEnabled ) 00413 { 00414 // Should not be linked : can't link after a freezeHRC 00415 nlassert (_HrcParent == NULL); 00416 00417 // Set as unfreeze else, hrcLinkSon doesn't work 00418 _FreezeHRCState= FreezeHRCStateDisabled; 00419 00420 // Link this model to the previous HRC parent. 00421 if (_HrcParentUnfreeze) 00422 _HrcParentUnfreeze->hrcLinkSon( this ); 00423 else 00424 getOwnerScene()->getRoot()->hrcLinkSon( this ); 00425 00426 // Link this object to the validateList. 00427 linkToUpdateList(); 00428 00429 // if lightable() 00430 if( isLightable() ) 00431 { 00432 CLightTrav &lightTrav= getOwnerScene()->getLightTrav(); 00433 // Lighting: must remove the object from the quadGrid. 00434 // NB: works if _LightedModelIt==NULL. result is that _LightedModelIt= NULL. 00435 _LightedModelIt= lightTrav.LightingManager.eraseStaticLightedModel(_LightedModelIt); 00436 } 00437 00438 } 00439 else 00440 _FreezeHRCState= FreezeHRCStateDisabled; 00441 00442 // unlink me from any QuadCluster, and disable QuadCluster 00443 unlinkFromQuadCluster(); 00444 setStateFlag(QuadGridClipEnabled, false); 00445 } 00446 } |
|
unFreeze the Static Light Setup. Must be called if static pointLights are deleted. NB: it calls resetLighting() first. NB: do not need to call it if pointLights and this transform are deleted at same time. Definition at line 1061 of file transform.cpp. References NL3D::CTransform::_LightContribution, NL3D::CLightContribution::FrozenAmbientLight, NL3D::CLightContribution::FrozenStaticLightSetup, NL3D::CTransform::IsNeedUpdateFrozenStaticLightSetup, NL3D::CLightContribution::NumFrozenStaticLight, NL3D::CLightContribution::PointLight, NL3D::CTransform::resetLighting(), and NL3D::CTransform::setStateFlag(). Referenced by NL3D::CInstanceGroup::removeFromScene().
01062 { 01063 // resetLighting() first. 01064 resetLighting(); 01065 01066 // Disable StaticLightSetup. 01067 _LightContribution.FrozenStaticLightSetup= false; 01068 _LightContribution.NumFrozenStaticLight= 0; 01069 // End the list 01070 _LightContribution.PointLight[0]= NULL; 01071 // No more FrozenAmbientLight 01072 _LightContribution.FrozenAmbientLight= NULL; 01073 01074 // Don't need to update StaticLightSetup since no more exist. 01075 setStateFlag(IsNeedUpdateFrozenStaticLightSetup, false); 01076 } |
|
special feature for CQuadGridClipManager. remove from it.
Reimplemented from NL3D::CTransform. Definition at line 133 of file transform_shape.cpp. References NL3D::CTransformShape::_QuadClusterListNode, and NL3D::CFastPtrListNode::unlink().
00134 {
00135 // if linked to a quadGridClipCluster, unlink it
00136 _QuadClusterListNode.unlink();
00137 }
|
|
This function update the model (called by CScene::updateModels()) Deriver Must :
The default behavior is to update transform Matrix etc... Reimplemented in NL3D::CCamera. Definition at line 450 of file transform.cpp. References NL3D::CTransform::_FreezeHRCState, NL3D::CTransform::_Frozen, NL3D::CTransform::_LastTransformableMatrixDate, NL3D::CTransform::_LightedModelIt, NL3D::CTransform::_LocalDate, NL3D::CTransform::_LocalMatrix, NL3D::CTransform::_LocalVis, NL3D::CTransform::_TransformDirty, NL3D::CHrcTrav::CurrentDate, NL3D::CLightingManager::eraseStaticLightedModel(), NL3D::CScene::getHrcTrav(), NL3D::CScene::getLightTrav(), NL3D::ITransformable::getMatrix(), NL3D::CTransform::getOwnerScene(), NL3D::CTransform::hrcUnlink(), NL3D::CLightingManager::insertStaticLightedModel(), NL3D::CTransform::isLightable(), NL3D::CLightTrav::LightingManager, NL3D::CTransform::unlinkFromUpdateList(), and NL3D::CTransform::Visibility. Referenced by NL3D::CTransform::forceCompute(), NL3D::CTransform::freeze(), and NL3D::CScene::updateModels().
00451 { 00452 // test if the matrix has been changed in ITransformable. 00453 if(ITransformable::compareMatrixDate(_LastTransformableMatrixDate)) 00454 { 00455 _LastTransformableMatrixDate= ITransformable::getMatrixDate(); 00456 _TransformDirty= true; 00457 } 00458 00459 // update the freezeHRC state. 00460 if(_FreezeHRCState != CTransform::FreezeHRCStateDisabled) 00461 { 00462 // if the model request to be frozen in HRC 00463 if(_FreezeHRCState == CTransform::FreezeHRCStateRequest ) 00464 { 00465 // Wait for next Hrc traversal to compute good _WorldMatrix for this model and his sons. 00466 // Also, next Hrc traversal will insert the model in the LightingManager quadGrid (if lightable) 00467 _FreezeHRCState = CTransform::FreezeHRCStateReady; 00468 } 00469 // if the model is ready to be frozen in HRC, then do it!! 00470 else if( _FreezeHRCState == CTransform::FreezeHRCStateReady ) 00471 { 00472 // Unlink this model. 00473 hrcUnlink(); 00474 00475 // unLink this object from the validateList. NB: the list will still be correclty parsed. 00476 unlinkFromUpdateList(); 00477 00478 // if lightable, the model is inserted in a quadgrid to update his lighting only when 00479 // dynamicLights touch him (since himself is static). 00480 if( isLightable() ) 00481 { 00482 CLightTrav &lightTrav= getOwnerScene()->getLightTrav(); 00483 // Lighting: must reinsert the object from the quadGrid. 00484 // NB: works if _LightedModelIt==NULL. result is that _LightedModelIt= NULL. 00485 _LightedModelIt= lightTrav.LightingManager.eraseStaticLightedModel(_LightedModelIt); 00486 // insert in the quadgrid. 00487 _LightedModelIt= lightTrav.LightingManager.insertStaticLightedModel(this); 00488 } 00489 00490 // Now this model won't be tested for validation nor for worldMatrix update. End!! 00491 _FreezeHRCState = CTransform::FreezeHRCStateEnabled; 00492 } 00493 } 00494 00495 // update _LocalMatrix 00496 if(_TransformDirty) 00497 { 00498 // update the local matrix. 00499 _LocalMatrix= getMatrix(); 00500 _LocalVis= Visibility; 00501 // update the date of the local matrix. 00502 _LocalDate= getOwnerScene()->getHrcTrav().CurrentDate; 00503 00504 // The transform has been modified. Hence, it is no more frozen. 00505 _Frozen= false; 00506 00507 // ok! 00508 _TransformDirty= false; 00509 } 00510 } |
|
Definition at line 748 of file transform.cpp. References NL3D::CTransform::_AncestorSkeletonModel, NL3D::CTransform::_ClipLinkedInSonsOfAncestorSkeletonModelGroup, NL3D::CTransform::clipAddChild(), NL3D::CTransform::clipGetNumParents(), NL3D::CTransform::clipGetParent(), NL3D::CTransform::clipUnlinkFromAll(), NL3D::CScene::getClipTrav(), NL3D::CTransform::getOwnerScene(), NL3D::CScene::getRoot(), and NL3D::CScene::SonsOfAncestorSkeletonModelGroup. Referenced by NL3D::CTransform::updateWorld().
00749 { 00750 CClipTrav &clipTrav= getOwnerScene()->getClipTrav(); 00751 00752 // If I have an ancestor Skeleton Model, I must be binded in ClipTrav to the SonsOfAncestorSkeletonModelGroup 00753 if(_AncestorSkeletonModel && !_ClipLinkedInSonsOfAncestorSkeletonModelGroup) 00754 { 00755 // must unlink from ALL olds models. 00756 clipUnlinkFromAll(); 00757 00758 // And link to SonsOfAncestorSkeletonModelGroup. 00759 getOwnerScene()->SonsOfAncestorSkeletonModelGroup->clipAddChild(this); 00760 00761 // update the flag. 00762 _ClipLinkedInSonsOfAncestorSkeletonModelGroup= true; 00763 } 00764 00765 00766 // else I must be binded to the standard Root. 00767 if(!_AncestorSkeletonModel && _ClipLinkedInSonsOfAncestorSkeletonModelGroup) 00768 { 00769 // verify first I am really still linked to the SonsOfAncestorSkeletonModelGroup. 00770 // This test is important, because link may have changed for any reason (portals, clipManager....). 00771 if( clipGetNumParents() == 1 && clipGetParent(0)==getOwnerScene()->SonsOfAncestorSkeletonModelGroup ) 00772 { 00773 // must unlink from ALL olds models. 00774 clipUnlinkFromAll(); 00775 // and now, link to std root. 00776 getOwnerScene()->getRoot()->clipAddChild(this); 00777 } 00778 00779 // update the flag 00780 _ClipLinkedInSonsOfAncestorSkeletonModelGroup= false; 00781 } 00782 } |
|
=====================================================================================
Definition at line 208 of file particle_system_model.cpp. References _LightableStateTouched, _ParticleSystem, MINI_TIMER, nlassert, and NL3D::PSStatsUpdateLightingInfos. Referenced by doAnimate().
00209 { 00210 MINI_TIMER(PSStatsUpdateLightingInfos) 00211 nlassert(_ParticleSystem); 00212 if (!_LightableStateTouched) return; 00213 CTransform::setIsLightable(_ParticleSystem->hasLightableObjects()); 00214 _LightableStateTouched = false; 00215 } |
|
===================================================================================== This update the infos about opacity (e.g are there solid faces and / or transparent faces in the system). This must be called when the system is instanciated, or when attributes have changed, such as the blending mode Definition at line 196 of file particle_system_model.cpp. References _ParticleSystem, _ToolDisplayEnabled, _TransparencyStateTouched, MINI_TIMER, nlassert, NL3D::PSStatsUpdateOpacityInfos, NL3D::CTransform::setOpacity(), and NL3D::CTransform::setTransparency(). Referenced by doAnimate(), and setParticleSystem().
00197 { 00198 MINI_TIMER(PSStatsUpdateOpacityInfos); 00199 nlassert(_ParticleSystem); 00200 if (!_TransparencyStateTouched) return; 00201 nlassert(_ParticleSystem); 00202 setOpacity(_ParticleSystem->hasOpaqueObjects() || _ToolDisplayEnabled); 00203 setTransparency(_ParticleSystem->hasTransparentObjects()); 00204 _TransparencyStateTouched = false; 00205 } |
|
Update the world state according to the parent world state and the local states.
Definition at line 663 of file transform.cpp. References NL3D::CTransform::_AncestorSkeletonModel, NL3D::CTransform::_DontUnfreezeChildren, NL3D::CTransform::_FatherSkeletonModel, NL3D::CTransform::_Frozen, NL3D::CTransform::_HrcParent, NL3D::CTransform::_LightContribution, NL3D::CTransform::_LocalDate, NL3D::CTransform::_LocalMatrix, NL3D::CTransform::_LocalVis, NL3D::CHrcTrav::_MovingObjects, NL3D::CTransform::_WorldDate, NL3D::CTransform::_WorldMatrix, NL3D::CTransform::_WorldVis, NL3D::CHrcTrav::CurrentDate, NL3D::CTransform::ForceClipRoot, NL3D::CLightContribution::FrozenStaticLightSetup, NL3D::CScene::getHrcTrav(), NL3D::CTransform::getOwnerScene(), NL3D::CTransform::getStateFlag(), NL3D::CTransform::isLightable(), NL3D::CTransform::isTransformShape(), NL3D::CTransform::resetLighting(), and NL3D::CTransform::updateClipTravForAncestorSkeleton(). Referenced by NL3D::CTransform::traverseHrc().
00664 { 00665 const CMatrix *pFatherWM; 00666 bool visFather; 00667 00668 // If not root case, link to Fahter. 00669 if(_HrcParent) 00670 { 00671 pFatherWM= &(_HrcParent->_WorldMatrix); 00672 visFather= _HrcParent->_WorldVis; 00673 00674 // if _HrcParent is not frozen (for any reason), disable us! 00675 00676 if (!_HrcParent->_Frozen && !_HrcParent->_DontUnfreezeChildren) 00677 _Frozen= false; 00678 00679 // herit _AncestorSkeletonModel 00680 if (_HrcParent->_AncestorSkeletonModel) 00681 // If my father has an _AncestorSkeletonModel, get it. 00682 _AncestorSkeletonModel= _HrcParent->_AncestorSkeletonModel; 00683 else 00684 // else I have an ancestor skel model if I am sticked/binded directly to a skeleton model. 00685 _AncestorSkeletonModel= _FatherSkeletonModel; 00686 } 00687 // else, default!! 00688 else 00689 { 00690 pFatherWM= &(CMatrix::Identity); 00691 visFather= true; 00692 00693 // at the root of the hierarchy, we have no parent, hence no FatherSkeletonModel nor _AncestorSkeletonModel. 00694 _AncestorSkeletonModel= NULL; 00695 00696 // NB: Root is Frozen by essence :), so don't modify the frozen state here. 00697 } 00698 00699 // Combine matrix 00700 if(_LocalDate>_WorldDate || (_HrcParent && _HrcParent->_WorldDate>_WorldDate) ) 00701 { 00702 // Must recompute the world matrix. ONLY IF I AM NOT SKINNED/STICKED TO A SKELETON in the hierarchy! 00703 if( _AncestorSkeletonModel==NULL ) 00704 { 00705 _WorldMatrix= *pFatherWM * _LocalMatrix; 00706 _WorldDate= getOwnerScene()->getHrcTrav().CurrentDate; 00707 00708 // Add the model to the moving object list, only if I am a transform shape 00709 if (!_Frozen && isTransformShape() && !getStateFlag(ForceClipRoot)) 00710 getOwnerScene()->getHrcTrav()._MovingObjects.push_back (static_cast<CTransformShape*>(this)); 00711 } 00712 } 00713 00714 // Update dynamic lighting. 00715 /* 00716 If the model is not frozen in StaticLight, then must update lighting each frame. 00717 Even if the object doesn't move, a new dynamic light may enter in its aera. Hence we must test 00718 it in the light quadrid. StaticLight-ed Objects don't need it because they are inserted in a special quadgrid, 00719 where dynamics lights touch all StaticLight-ed object to force their computing 00720 00721 NB: not done if _AncestorSkeletonModel!=NULL. no need because in this case, 00722 result is driven by the _LightContribution of the _AncestorSkeletonModel. 00723 */ 00724 if( !_LightContribution.FrozenStaticLightSetup && _AncestorSkeletonModel==NULL ) 00725 { 00726 // if the model is lightable reset lighting 00727 if( isLightable() ) 00728 resetLighting(); 00729 } 00730 00731 // Combine visibility. 00732 switch(_LocalVis) 00733 { 00734 case CHrcTrav::Herit: _WorldVis= visFather; break; 00735 case CHrcTrav::Hide: _WorldVis= false; break; 00736 case CHrcTrav::Show: _WorldVis= true; break; 00737 default: break; 00738 } 00739 00740 00741 // If I have an ancestor Skeleton Model, I must be binded in ClipTrav to the SonsOfAncestorSkeletonModelGroup 00742 updateClipTravForAncestorSkeleton(); 00743 00744 } |
|
For Skeleton Object Stick. update the wolrd matrix. no-op if skinned. no-op if no AcnestorSkeletonModel. use standard father WorldMatrix if !_FatherSkeletonModel else get the correct boneId WorldMatrix from _FatherSkeletonModel Definition at line 905 of file transform.cpp. References NL3D::CTransform::_AncestorSkeletonModel, NL3D::CTransform::_FatherBoneId, NL3D::CTransform::_FatherSkeletonModel, NL3D::CTransform::_LocalMatrix, NL3D::CTransform::_WorldMatrix, NL3D::CSkeletonModel::Bones, NL3D::CTransform::hrcGetParent(), and NL3D::CTransform::isSkinned(). Referenced by NL3D::CTransform::forceCompute(), and NL3D::CTransform::traverseAnimDetail().
00906 { 00907 // If I am not skinned, and If I have a skeleton ancestor 00908 if(!isSkinned() && _AncestorSkeletonModel ) 00909 { 00910 // Compute the HRC _WorldMatrix. 00911 // if I am not sticked. 00912 if(!_FatherSkeletonModel) 00913 { 00914 // get the normal father worldMatrix in Hrc. 00915 CTransform *fatherTransform= hrcGetParent(); 00916 // if exist 00917 if(fatherTransform) 00918 { 00919 const CMatrix &parentWM= fatherTransform->_WorldMatrix; 00920 // combine worldMatrix 00921 _WorldMatrix= parentWM * _LocalMatrix; 00922 } 00923 else 00924 _WorldMatrix= _LocalMatrix; 00925 } 00926 else 00927 { 00928 // get the worldMatrix of the bone if I am sticked. 00929 const CMatrix &parentWM= _FatherSkeletonModel->Bones[_FatherBoneId].getWorldMatrix(); 00930 // combine worldMatrix 00931 _WorldMatrix= parentWM * _LocalMatrix; 00932 } 00933 } 00934 } |
|
return true if the current light contribution of this model use a MergedPointLight Definition at line 369 of file transform.h. References NL3D::CTransform::_LightContribution, and NL3D::CLightContribution::UseMergedPointLight.
00369 {return _LightContribution.UseMergedPointLight;} |
|
Definition at line 295 of file particle_system_model.h. |
|
Definition at line 294 of file particle_system_model.h. |
|
Definition at line 67 of file smart_ptr.h. |
|
Definition at line 851 of file transform.h. Referenced by NL3D::CClipTrav::clipSkeletonShadowMaps(), NL3D::CTransform::CTransform(), NL3D::CTransform::getAncestorSkeletonModel(), NL3D::CAnimDetailTrav::traverse(), NL3D::CTransform::traverseClip(), NL3D::CTransform::updateClipTravForAncestorSkeleton(), NL3D::CTransform::updateWorld(), and NL3D::CTransform::updateWorldMatrixFromFather(). |
|
a handle to say when the resources of the model (_ParticleSystem) are deleted Definition at line 337 of file particle_system_model.h. Referenced by invalidateAutoAnimatedHandle(), reallocRsc(), releasePSPointer(), and traverseClip(). |
|
Definition at line 344 of file particle_system_model.h. |
|
Definition at line 346 of file particle_system_model.h. Referenced by enableAutoGetEllapsedTime(), and isAutoGetEllapsedTimeEnabled(). |
|
Definition at line 360 of file particle_system_model.h. |
|
date of last traverseClip()
Definition at line 865 of file transform.h. Referenced by NL3D::CTransform::CTransform(), and NL3D::CTransform::traverseClip(). |
|
Definition at line 849 of file transform.h. Referenced by NL3D::CSkeletonModel::bindSkin(), NL3D::CTransform::CTransform(), and NL3D::CTransform::updateClipTravForAncestorSkeleton(). |
|
Definition at line 848 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::setDontUnfreezeChildren(), and NL3D::CTransform::updateWorld(). |
|
Definition at line 350 of file particle_system_model.h. Referenced by checkDestroyCondition(), getEditionMode(), refreshRscDeletion(), setEditionMode(), traverseAnimDetail(), and traverseClip(). |
|
Definition at line 340 of file particle_system_model.h. Referenced by getEllapsedTime(), and setEllapsedTime(). |
|
Definition at line 341 of file particle_system_model.h. Referenced by getEllapsedTimeRatio(), and setEllapsedTimeRatio(). |
|
Definition at line 354 of file particle_system_model.h. Referenced by activateEmitters(), hasActiveEmitters(), and reallocRsc(). |
|
Deriver must change this method if isSkinnable(). It return a list of sphere relative to each bone of the father skeleton. Use with getSkinBoneUsage() to know to wich bone this sphere apply NB: if a sphere radius is -1, it means that the bone is not used (for any reason...) default is to return NULL. Definition at line 618 of file transform.h. Referenced by NL3D::CSkeletonModel::computeCLodVertexAlpha(), NL3D::CSkeletonModel::detachSkeletonSon(), NL3D::CTransform::forceCompute(), NL3D::CSkeletonModel::stickObjectEx(), and NL3D::CTransform::updateWorldMatrixFromFather(). |
|
Deriver must change this method if isSkinnable(). It return a list of sphere relative to each bone of the father skeleton. Use with getSkinBoneUsage() to know to wich bone this sphere apply NB: if a sphere radius is -1, it means that the bone is not used (for any reason...) default is to return NULL. Definition at line 616 of file transform.h. Referenced by NL3D::CSkeletonModel::bindSkin(), NL3D::CTransform::CTransform(), NL3D::CSkeletonModel::detachSkeletonSon(), NL3D::CTransform::forceCompute(), NL3D::CSkeletonModel::forceComputeBone(), NL3D::CTransform::getSkeletonModel(), NL3D::CTransform::heritVisibility(), NL3D::CTransform::hide(), NL3D::CTransform::registerToChannelMixer(), NL3D::CTransform::setIsForceAnimDetail(), NL3D::CTransform::setOpacity(), NL3D::CTransform::setTransparency(), NL3D::CTransform::show(), NL3D::CSkeletonModel::stickObjectEx(), NL3D::CTransform::traverseClip(), NL3D::CTransform::updateWorld(), NL3D::CTransform::updateWorldMatrixFromFather(), and NL3D::CTransform::~CTransform(). |
|
Definition at line 847 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::freeze(), NL3D::CTransform::freezeHRC(), NL3D::CTransform::update(), and NL3D::CTransform::updateWorld(). |
|
Definition at line 353 of file particle_system_model.h. Referenced by traverseAnimDetail(), and traverseClip(). |
|
date of last traverseClip()
Definition at line 869 of file transform.h. Referenced by NL3D::CClipTrav::addVisibleModel(), NL3D::CTransform::CTransform(), and NL3D::CTransform::~CTransform(). |
|
if false, system should be recreated
Definition at line 352 of file particle_system_model.h. Referenced by insertInVisibleList(), and traverseClip(). |
|
Definition at line 351 of file particle_system_model.h. Referenced by NL3D::CParticleSystemShape::render(). |
|
Definition at line 349 of file particle_system_model.h. Referenced by touchLightableState(), and updateLightingInfos(). |
|
The contribution of all lights. This enlarge the struct only of approx 15%.
Definition at line 626 of file transform.h. Referenced by NL3D::CTransform::freezeStaticLightSetup(), NL3D::CTransform::getLightContribution(), NL3D::CSkeletonModel::renderSkins(), NL3D::CTransform::resetLighting(), NL3D::CTransform::traverseLight(), NL3D::CTransform::unfreezeStaticLightSetup(), NL3D::CTransform::updateWorld(), and NL3D::CTransform::useMergedPointLight(). |
|
each transform may be in a quadGird of lighted models (see CLightingManager)
Definition at line 634 of file transform.h. Referenced by NL3D::CTransform::unfreezeHRC(), NL3D::CTransform::update(), and NL3D::CTransform::~CTransform(). |
|
Definition at line 894 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::getLoadBalancingGroup(), NL3D::CTransform::initModel(), and NL3D::CTransform::setLoadBalancingGroup(). |
|
Definition at line 841 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::update(), and NL3D::CTransform::updateWorld(). |
|
Hrc IN variables.
Reimplemented from NL3D::ITransformable. Definition at line 839 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::update(), NL3D::CTransform::updateWorld(), and NL3D::CTransform::updateWorldMatrixFromFather(). |
|
Definition at line 840 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::update(), and NL3D::CTransform::updateWorld(). |
|
Definition at line 334 of file particle_system_model.h. Referenced by reallocRsc(), and releasePSPointer(). |
|
Definition at line 356 of file particle_system_model.h. |
|
Definition at line 338 of file particle_system_model.h. Referenced by activateEmitters(), checkAgainstPyramid(), forceInstanciate(), getAABBox(), getNumTriangles(), getPS(), hasActiveEmitters(), reallocRsc(), refreshRscDeletion(), releasePSPointer(), releaseRsc(), releaseRscAndInvalidate(), setEditionMode(), setParticleSystem(), setUserColor(), setZBias(), traverseAnimDetail(), traverseClip(), traverseRender(), updateLightingInfos(), and updateOpacityInfos(). |
|
State for renderFiltering. Default is 0xFFFFFFFF (always displayed) Deriver work to change this value Definition at line 830 of file transform.h. Referenced by NL3D::CTransform::CTransform(), and NL3D::CTransform::traverseClip(). |
|
Definition at line 339 of file particle_system_model.h. Referenced by NL3D::CParticleSystemShape::createInstance(). |
|
Definition at line 347 of file particle_system_model.h. Referenced by enableDisplayTools(), isToolDisplayEnabled(), and updateOpacityInfos(). |
|
Definition at line 348 of file particle_system_model.h. Referenced by touchTransparencyState(), and updateOpacityInfos(). |
|
Definition at line 357 of file particle_system_model.h. Referenced by CParticleSystemModel(), getValue(), and traverseAnimDetail(). |
|
Definition at line 361 of file particle_system_model.h. |
|
Definition at line 362 of file particle_system_model.h. Referenced by doAnimate(), forceSetUserMatrix(), getUserMatrix(), and setUserMatrix(). |
|
user params of the system
Definition at line 359 of file particle_system_model.h. |
|
set to true is the object is visible (not clipped).
Definition at line 867 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::isClipVisible(), and NL3D::CTransform::traverseClip(). |
|
Definition at line 845 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::hrcLinkSon(), NL3D::CTransform::hrcUnlink(), and NL3D::CTransform::updateWorld(). |
|
Hrc OUT variables.
Definition at line 843 of file transform.h. Referenced by NL3D::CTransform::updateWorld(), and NL3D::CTransform::updateWorldMatrixFromFather(). |
|
Definition at line 844 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::isHrcVisible(), NL3D::CTransform::traverseClip(), and NL3D::CTransform::updateWorld(). |
|
Definition at line 363 of file particle_system_model.h. |
|
Definition at line 79 of file smart_ptr.h. Referenced by NLMISC::CRefCount::CRefCount(), NLMISC::CRefCount::getRefCount(), and NLMISC::CRefCount::~CRefCount(). |
|
Referenced by NLMISC::CRefCount::CRefCount(). |
|
Definition at line 80 of file smart_ptr.h. Referenced by NLMISC::CRefCount::CRefCount(), and NLMISC::CRefCount::~CRefCount(). |
|
The shape, the object instancied.
Definition at line 72 of file transform_shape.h. Referenced by NL3D::CTransformShape::clip(), NL3D::CSkeletonModel::computeLodTexture(), NL3D::CWaveMakerShape::createInstance(), NL3D::CWaterShape::createInstance(), NL3D::CSkeletonShape::createInstance(), NL3D::IShape::createInstance(), NL3D::CSegRemanenceShape::createInstance(), NL3D::CScene::createInstance(), NL3D::CParticleSystemShape::createInstance(), NL3D::CMeshMultiLod::createInstance(), NL3D::CMeshMRMSkinned::createInstance(), NL3D::CMeshMRM::createInstance(), NL3D::CMesh::createInstance(), NL3D::CFlareShape::createInstance(), NL3D::CScene::deleteInstance(), NL3D::CTransformShape::getAABBox(), NL3D::CTransformShape::getNumTriangles(), NL3D::CSkeletonUser::getShapeDistMax(), NL3D::CInstanceUser::getShapeDistMax(), NL3D::CTransformShape::profileRender(), NL3D::CSkeletonUser::setShapeDistMax(), NL3D::CInstanceUser::setShapeDistMax(), and NL3D::CTransformShape::traverseRender(). |