#include <seg_remanence.h>
Inheritance diagram for NL3D::CSegRemanence:
Nevrax France
Definition at line 56 of file seg_remanence.h.
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 | TAnimValues { OwnerBit = CTransformShape::AnimValueLast, AnimValueLast } |
Added values. More... | |
enum | TTransformMode { DirectMatrix = 0, RotEuler, RotQuat, TransformModeCount } |
Public Member Functions | |
void | clearAnimatedMatFlag () |
bool | compareMatrixDate (uint64 callerDate) const |
void | freeze () |
void | freezeHRC () |
virtual void | getAABBox (NLMISC::CAABBox &bbox) const |
CSkeletonModel * | getAncestorSkeletonModel () const |
CAnimatedMaterial * | getAnimatedMaterial () const |
bool | getChannelMixerOwnerShip () const |
CInstanceGroup * | getClusterSystem () |
virtual ITrack * | getDefaultTrack (uint valueId) |
Default Track Values are identity (pos,pivot= 0, scale= 1, rots=0). | |
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 |
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. | |
CHrcTrav::TVisibility | getVisibility () |
Get the local visibility state. | |
const CMatrix & | getWorldMatrix () 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 |
uint32 | isTransparent () |
void | registerToChannelMixer (CChannelMixer *chanMixer, const std::string &prefix) |
void | render (IDriver *drv, CVertexBuffer &vb, CPrimitiveBlock &pb, CMaterial &mat) |
void | samplePos (float date) |
void | setAnimatedMaterial (CAnimatedMaterial *mat) |
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 | setupFromShape () |
void | setUserClipping (bool enable) |
void | setWorldMatrix (const CMatrix &mat) |
void | show () |
Show the objet and his sons. | |
void | unfreezeHRC () |
From CTransformShape | |
virtual bool | canStartStop () |
Test if there is a start/stop caps in the objects (some fxs such as remanence). | |
virtual bool | isStarted () const |
bool | isStopping () const |
void | restart () |
virtual void | start () |
virtual void | stop () |
Stop the fx and let it unroll. | |
virtual void | stopNoUnroll () |
Stop the fx with no unrolling. | |
object | |
CSegRemanence (CSegRemanence &other) | |
CSegRemanence () | |
CSegRemanence & | operator= (CSegRemanence &other) |
~CSegRemanence () | |
slice time. Gives the time between 2 sampled position of the trail | |
float | getSliceTime () const |
void | setSliceTime (float duration) |
CTransform traverse specialisation | |
virtual void | traverseAnimDetail () |
call updateWorldMatrixFromFather(), then traverseAnimDetailWithoutUpdateWorldMatrix() | |
Static Public Member Functions | |
CTransform * | creator () |
to instanciate that model from a scene | |
const char * | getPivotValueName () |
const char * | getPosValueName () |
const char * | getRotEulerValueName () |
const char * | getRotQuatValueName () |
const char * | getScaleValueName () |
void | registerBasic () |
Call at the begining of the program, to register the model. | |
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 Types | |
typedef std::vector< CRibbon > | TRibbonVect |
Private Member Functions | |
void | copyFromOther (CSegRemanence &other) |
void | updateOpacityFromShape () |
Private Attributes | |
CAnimatedMaterial * | _AniMat |
float | _CurrDate |
uint64 | _LastSampleFrame |
uint | _NumCorners |
uint | _NumSlice |
bool | _Restarted |
TRibbonVect | _Ribbons |
float | _SliceTime |
float | _StartDate |
bool | _Started |
bool | _Stopping |
float | _UnrollRatio |
Friends | |
struct | CPtrInfo |
|
Definition at line 157 of file seg_remanence.h. |
|
Added values.
Reimplemented from NL3D::ITransformable. Definition at line 106 of file seg_remanence.h.
00107 { 00108 OwnerBit= CTransformShape::AnimValueLast, 00109 00110 AnimValueLast, 00111 }; |
|
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 }; |
|
Definition at line 66 of file seg_remanence.cpp.
00066 : _NumSlice(0), 00067 _Started(false), 00068 _Stopping(false), 00069 _Restarted(false), 00070 _UnrollRatio(0), 00071 _SliceTime(0.05f), 00072 _AniMat(NULL), 00073 _LastSampleFrame(0) 00074 { 00075 IAnimatable::resize(AnimValueLast); 00076 00077 // RenderFilter: We are a SegRemanece 00078 _RenderFilterType= UScene::FilterSegRemanence; 00079 } |
|
Definition at line 82 of file seg_remanence.cpp. References _AniMat, NL3D::CSkeletonModel::detachSkeletonSon(), and nlassert.
00083 { 00084 delete _AniMat; 00085 // Auto detach me from skeleton. Must do it here, not in ~CTransform(). 00086 if(_FatherSkeletonModel) 00087 { 00088 // detach me from the skeleton. 00089 // hrc and clip hierarchy is modified. 00090 _FatherSkeletonModel->detachSkeletonSon(this); 00091 nlassert(_FatherSkeletonModel==NULL); 00092 } 00093 } |
|
Definition at line 96 of file seg_remanence.cpp. References copyFromOther().
00096 : CTransformShape(other), _AniMat(NULL) 00097 { 00098 copyFromOther(other); 00099 } |
|
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(), NL3D::CParticleSystemModel::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 } |
|
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 from NL3D::CTransformShape. Definition at line 81 of file seg_remanence.h.
00081 { return true; } |
|
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 177 of file seg_remanence.h. Referenced by traverseAnimDetail().
00178 { 00179 IAnimatable::clearFlag(OwnerBit); 00180 } |
|
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(), NL3D::CParticleSystemModel::doAnimate(), and NL3D::CAnimatedMaterial::update().
00234 { 00235 _BitSet&= ~(1<<valueId); 00236 } |
|
clip method called by traverseClip(). deafult is always visible
Reimplemented from NL3D::CTransform. Reimplemented in NL3D::CParticleSystemModel, and NL3D::CWaterModel. Definition at line 141 of file transform_shape.cpp. References NL3D::CTravCameraScene::CamPos, NL3D::CClipTrav::ForceNoFrustumClip, NL3D::CScene::getClipTrav(), NL3D::CTransformShape::getDistMax(), NL3D::CTransform::getOwnerScene(), NLMISC::CMatrix::getPos(), NL3D::CTransform::getWorldMatrix(), H_AUTO, NL3D::CTransformShape::Shape, and NL3D::CClipTrav::WorldPyramid.
00142 { 00143 H_AUTO( NL3D_TrShape_Clip ); 00144 00145 CClipTrav &clipTrav= getOwnerScene()->getClipTrav(); 00146 00147 if(Shape) 00148 { 00149 // first test DistMax (faster). 00150 float maxDist = getDistMax(); 00151 // if DistMax test enabled 00152 if(maxDist!=-1) 00153 { 00154 // Calc the distance 00155 float sqrDist = (clipTrav.CamPos - getWorldMatrix().getPos()).sqrnorm (); 00156 maxDist*=maxDist; 00157 00158 // if dist > maxDist, skip 00159 if (sqrDist > maxDist) 00160 { 00161 // Ok, not shown 00162 return false; 00163 } 00164 } 00165 00166 // Else finer clip with pyramid, only if needed 00167 if(clipTrav.ForceNoFrustumClip) 00168 return true; 00169 else 00170 return Shape->clip(clipTrav.WorldPyramid, getWorldMatrix()); 00171 } 00172 else 00173 return false; 00174 } |
|
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(), NL3D::CParticleSystemModel::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(), NL3D::CParticleSystemModel::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;} |
|
Definition at line 113 of file seg_remanence.cpp. References _AniMat, _CurrDate, _NumCorners, _NumSlice, _Restarted, _Ribbons, _StartDate, _Started, and _Stopping. Referenced by CSegRemanence(), and operator=().
00114 { 00115 if (this == &other) return; 00116 00117 CAnimatedMaterial *otherMat = other._AniMat != NULL ? new CAnimatedMaterial(*other._AniMat) 00118 : NULL; 00119 delete _AniMat; 00120 _AniMat = otherMat; 00121 00122 _Ribbons = other._Ribbons; // sampled positions at each extremities of segment 00123 _NumSlice = other._NumSlice; 00124 _NumCorners = other._NumCorners; 00125 _Started = other._Started; 00126 _Restarted = other._Restarted; 00127 _Stopping = other._Stopping; 00128 _StartDate = other._StartDate; 00129 _CurrDate = other._CurrDate; 00130 00131 } |
|
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 {} |
|
to instanciate that model from a scene
Reimplemented from NL3D::CTransformShape. Definition at line 69 of file seg_remanence.h.
00069 { return new CSegRemanence; } |
|
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 {} |
|
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 } |
|
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 } |
|
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 {} |
|
Get the untransformed AABBox of the mesh. NULL (gtSize()==0) if no mesh. Reimplemented from NL3D::CTransform. Reimplemented in NL3D::CParticleSystemModel. Definition at line 83 of file transform_shape.cpp. References NLMISC::CAABBox::setCenter(), NLMISC::CAABBox::setHalfSize(), and NL3D::CTransformShape::Shape. Referenced by NL3D::CTransformShape::getLightHotSpotInWorld(), NL3D::CInstanceUser::getShapeAABBox(), NL3D::CQuadGridClipManager::linkModel(), and NL3D::CClipTrav::traverse().
00084 { 00085 if(Shape) 00086 { 00087 Shape->getAABBox(bbox); 00088 } 00089 else 00090 { 00091 bbox.setCenter(CVector::Null); 00092 bbox.setHalfSize(CVector::Null); 00093 } 00094 } |
|
Definition at line 207 of file transform.h. References NL3D::CTransform::_AncestorSkeletonModel. Referenced by NL3D::CParticleSystemManager::processAnimate().
00207 { return _AncestorSkeletonModel; } |
|
Definition at line 101 of file seg_remanence.h. References _AniMat. Referenced by traverseAnimDetail().
00101 { return _AniMat; } |
|
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; }
|
|
Default Track Values are identity (pos,pivot= 0, scale= 1, rots=0).
Reimplemented from NL3D::CTransform. Definition at line 443 of file seg_remanence.cpp. References NL3D::CSegRemanenceShape::getDefaultPos(), NL3D::CSegRemanenceShape::getDefaultRotQuat(), NL3D::CSegRemanenceShape::getDefaultScale(), and uint.
00444 { 00445 CSegRemanenceShape *srs = NLMISC::safe_cast<CSegRemanenceShape *>((IShape *) Shape); 00446 switch (valueId) 00447 { 00448 case PosValue: return srs->getDefaultPos(); 00449 case RotQuatValue: return srs->getDefaultRotQuat(); 00450 case ScaleValue: return srs->getDefaultScale(); 00451 } 00452 return CTransformShape::getDefaultTrack(valueId); 00453 return NULL; 00454 00455 } |
|
Definition at line 135 of file transform_shape.h. Referenced by NL3D::CQuadGridClipCluster::addModel(), NL3D::CTransformShape::clip(), and NL3D::CInstanceUser::getDistMax().
00135 { return _DistMax; }
|
|
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 NL3D::CParticleSystemModel::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 }
|
|
get an approximation of the number of triangles this instance want render for a fixed distance.
Reimplemented in NL3D::CMeshMultiLodInstance, NL3D::CParticleSystemModel, and NL3D::CSkeletonModel. Definition at line 75 of file transform_shape.cpp. References NL3D::CTransformShape::Shape. Referenced by NL3D::CTransformShape::traverseLoadBalancingPass0().
00076 { 00077 // Call shape method 00078 return Shape->getNumTriangles (distance); 00079 } |
|
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 NL3D::CParticleSystemModel::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 } |
|
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 NL3D::CParticleSystemModel::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;}
|
|
Definition at line 130 of file seg_remanence.h. References _SliceTime. Referenced by NL3D::CInstanceUser::getSliceTime().
00130 { return _SliceTime; } |
|
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 } |
|
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;} |
|
From IAnimatable.
Implements NL3D::IAnimatable. Reimplemented in NL3D::CCamera, and NL3D::CParticleSystemModel. Definition at line 58 of file transformable.cpp. References NL3D::ITransformable::_Pivot, NL3D::ITransformable::_RotEuler, NL3D::ITransformable::_RotQuat, nlstop, NL3D::ITransformable::PivotValue, NL3D::ITransformable::PosValue, NL3D::ITransformable::RotEulerValue, NL3D::ITransformable::RotQuatValue, NL3D::ITransformable::ScaleValue, and uint.
00059 { 00060 // what value ? 00061 switch (valueId) 00062 { 00063 case PosValue: return &_Pos; 00064 case RotEulerValue: return &_RotEuler; 00065 case RotQuatValue: return &_RotQuat; 00066 case ScaleValue: return &_Scale; 00067 case PivotValue: return &_Pivot; 00068 } 00069 00070 // No, only ITrnasformable values! 00071 nlstop; 00072 // Deriver note: else call BaseClass::getValue(valueId); 00073 00074 return NULL; 00075 } |
|
|
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(), NL3D::CParticleSystemModel::traverseAnimDetail(), and NL3D::CSkeletonModel::updateSkinRenderLists().
00203 {return Visibility;}
|
|
|
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 } |
|
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);} |
|
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(), NL3D::CParticleSystemModel::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;} |
|
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 } |
|
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); } |
|
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 from NL3D::CTransformShape. Definition at line 89 of file seg_remanence.h. References _Started. Referenced by NL3D::CSegRemanenceShape::render(), and traverseAnimDetail().
00089 { return _Started; } |
|
Definition at line 91 of file seg_remanence.h. References _Stopping. Referenced by traverseAnimDetail().
00091 { return _Stopping; } |
|
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 NL3D::CParticleSystemModel::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);} |
|
Definition at line 102 of file seg_remanence.cpp. References copyFromOther().
00103 { 00104 if (this != &other) 00105 { 00106 (CTransformShape &) *this = (CTransformShape &) other; // copy base 00107 copyFromOther(other); 00108 } 00109 return *this; 00110 } |
|
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 } |
|
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 {} |
|
Call at the begining of the program, to register the model.
Reimplemented from NL3D::CTransformShape. Definition at line 134 of file seg_remanence.cpp. References NL3D::SegRemanenceShapeId, and NL3D::TransformShapeId.
00135 { 00136 CScene::registerModel(SegRemanenceShapeId, TransformShapeId, CSegRemanence::creator); 00137 } |
|
register transform channels (in global anim mode).
Reimplemented from NL3D::CTransform. Definition at line 433 of file seg_remanence.cpp. References _AniMat, NL3D::CAnimatedMaterial::getMaterialName(), and NL3D::CAnimatedMaterial::registerToChannelMixer().
|
|
Definition at line 141 of file seg_remanence.cpp. References _NumCorners, _NumSlice, _SliceTime, _Started, _Stopping, _UnrollRatio, NL3D::IDriver::activeVertexBuffer(), NL3D::CScene::getEllapsedTime(), NL3D::CSegRemanenceShape::getNumSlices(), NL3D::CTransform::getOwnerScene(), NL3D::CSegRemanenceShape::getRollupRatio(), NL3D::CMaterial::getTexture(), NL3D::CVertexBuffer::getVertexCoordPointer(), NL3D::CVertexBuffer::getVertexSize(), min, NL3D::IDriver::render(), NLMISC::CMatrix::setPos(), NL3D::IDriver::setupModelMatrix(), NL3D::CMaterial::setUserTexMat(), uint, and uint8. Referenced by NL3D::CSegRemanenceShape::render().
00142 { 00143 CSegRemanenceShape *srs = NLMISC::safe_cast<CSegRemanenceShape *>((IShape *) Shape); 00144 const uint vertexSize = vb.getVertexSize(); 00145 uint8 *datas = (uint8 *) vb.getVertexCoordPointer(); 00146 uint numCorners = _Ribbons.size(); 00147 uint k; 00148 for(k = 0; k < numCorners; ++k) 00149 { 00150 _Ribbons[k].fillVB(datas, vertexSize, srs->getNumSlices(), _SliceTime); 00151 datas += (_NumSlice + 1) * vertexSize; 00152 } 00153 //#define DEBUG_SEG_REMANENCE_DISPLAY 00154 #ifdef DEBUG_SEG_REMANENCE_DISPLAY 00155 drv->setupModelMatrix(CMatrix::Identity); 00156 if (!numCorners) return; 00157 /* 00158 for(k = 0; k < numCorners - 1; ++k) 00159 { 00160 CDRU::drawLine(srs->getCorner(k), srs->getCorner(k + 1), CRGBA::White, *drv); 00161 } 00162 */ 00163 datas = (uint8 *) vb.getVertexCoordPointer(); 00164 for(uint k = 0; k < _NumSlice - 1; ++k) 00165 { 00166 for(uint l = 0; l < _NumCorners - 1; ++l) 00167 { 00168 const NLMISC::CVector &v0 = *(const NLMISC::CVector *) (datas + vertexSize * (k + l * (_NumSlice + 1))); 00169 const NLMISC::CVector &v1 = *(const NLMISC::CVector *) (datas + vertexSize * (k + 1 + l * (_NumSlice + 1))); 00170 const NLMISC::CVector &v2 = *(const NLMISC::CVector *) (datas + vertexSize * (k + 1 + (l + 1) * (_NumSlice + 1))); 00171 const NLMISC::CVector &v3 = *(const NLMISC::CVector *) (datas + vertexSize * (k + 1 + (l + 1) * (_NumSlice + 1))); 00172 CDRU::drawLine(v0, v1, CRGBA::White, *drv); 00173 CDRU::drawLine(v0, v3, CRGBA::White, *drv); 00174 CDRU::drawLine(v0, v2, CRGBA::White, *drv); 00175 } 00176 } 00177 00178 #endif 00179 00180 // roll / unroll using texture matrix 00181 CMatrix texMat; 00182 texMat.setPos(NLMISC::CVector(1.f - _UnrollRatio, 0, 0)); 00183 if (mat.getTexture(0) != NULL) 00184 mat.setUserTexMat(0, texMat); 00185 00186 drv->setupModelMatrix(CMatrix::Identity); 00187 00188 drv->activeVertexBuffer(vb); 00189 drv->render(pb, mat); 00190 00191 CScene *scene = getOwnerScene(); 00192 // change unroll ratio 00193 if (!_Stopping) 00194 { 00195 if (_UnrollRatio != 1.f) 00196 _UnrollRatio = std::min(1.f, _UnrollRatio + scene->getEllapsedTime() / (srs->getNumSlices() * _SliceTime)); 00197 } 00198 else 00199 { 00200 _UnrollRatio = std::max(0.f, _UnrollRatio - srs->getRollupRatio() * scene->getEllapsedTime() / (srs->getNumSlices() * _SliceTime)); 00201 if (_UnrollRatio == 0.f) 00202 { 00203 _Stopping = false; 00204 _Started = false; 00205 } 00206 } 00207 } |
|
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 } |
|
Definition at line 386 of file seg_remanence.cpp. References _Restarted, _Started, _Stopping, _UnrollRatio, and NL3D::CSegRemanenceShape::getTextureShifting(). Referenced by start(), and traverseAnimDetail().
00387 { 00388 CSegRemanenceShape *srs = NLMISC::safe_cast<CSegRemanenceShape *>((IShape *) Shape); 00389 if (!srs->getTextureShifting()) 00390 { 00391 _UnrollRatio = 1.f; 00392 } 00393 else 00394 { 00395 if (!_Stopping) 00396 _UnrollRatio = 0.f; 00397 } 00398 _Started = _Restarted = true; 00399 _Stopping = false; 00400 } |
|
Definition at line 326 of file seg_remanence.cpp. References _CurrDate, _Restarted, _SliceTime, _StartDate, _Started, NL3D::CSegRemanenceShape::getCorner(), NL3D::CTransform::getWorldMatrix(), and uint. Referenced by traverseAnimDetail().
00327 { 00328 if (_Started) 00329 { 00330 CSegRemanenceShape *srs = NLMISC::safe_cast<CSegRemanenceShape *>((IShape *) Shape); 00331 uint numCorners = _Ribbons.size(); 00332 for(uint k = 0; k < numCorners; ++k) 00333 { 00334 _Ribbons[k].samplePos(getWorldMatrix() * srs->getCorner(k), date, _SliceTime); 00335 } 00336 if (_Restarted) 00337 { 00338 for(uint k = 0; k < numCorners; ++k) 00339 { 00340 _Ribbons[k].duplicateFirstPos(); 00341 } 00342 _Restarted = false; 00343 _StartDate = date; 00344 } 00345 _CurrDate = date; 00346 } 00347 } |
|
Set an animated material. This is usually called by the 'shape' of this object at instanciation The material is owned by this object Definition at line 424 of file seg_remanence.cpp. References _AniMat, and NL3D::IAnimatable::setFather(). Referenced by NL3D::CSegRemanenceShape::createInstance().
|
|
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 } |
|
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 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(), NL3D::CParticleSystemModel::CParticleSystemModel(), NL3D::CSkeletonModel::CSkeletonModel(), NL3D::CVegetableBlendLayerModel::CVegetableBlendLayerModel(), NL3D::CWaterModel::CWaterModel(), NL3D::CMeshBase::instanciateMeshBase(), NL3D::CTransformUser::setOpacity(), NL3D::CMeshMultiLodInstance::traverseLoadBalancing(), updateOpacityFromShape(), and NL3D::CParticleSystemModel::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; } |
|
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 sampling period. NB : if the trail was started, then it is reseted by a call to stopNoUnroll Definition at line 501 of file seg_remanence.cpp. References _SliceTime, and stopNoUnroll(). Referenced by NL3D::CSegRemanenceShape::createInstance(), and NL3D::CInstanceUser::setSliceTime().
00502 { 00503 stopNoUnroll(); 00504 _SliceTime = duration; 00505 } |
|
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 } |
|
Setup from the shape (no effect if geometry described in the shape didn't change) Definition at line 284 of file seg_remanence.cpp. References _NumCorners, _NumSlice, NL3D::CSegRemanenceShape::getNumCorners(), NL3D::CSegRemanenceShape::getNumSlices(), uint, and updateOpacityFromShape(). Referenced by NL3D::CSegRemanenceShape::createInstance(), and traverseAnimDetail().
00285 { 00286 CSegRemanenceShape *srs = NLMISC::safe_cast<CSegRemanenceShape *>((IShape *) Shape); 00287 if (srs->getNumCorners() != _NumCorners || srs->getNumSlices() != _NumSlice) 00288 { 00289 _Ribbons.resize(srs->getNumCorners()); 00290 for(uint k = 0; k < _Ribbons.size(); ++k) 00291 { 00292 _Ribbons[k].setNumSlices(srs->getNumSlices()); 00293 } 00294 _NumCorners = srs->getNumCorners(); 00295 _NumSlice = srs->getNumSlices(); 00296 } 00297 updateOpacityFromShape(); 00298 } |
|
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 } |
|
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 } |
|
Definition at line 302 of file transform.h. Referenced by NL3D::CParticleSystemManager::processAnimate().
00302 { _WorldMatrix = mat;} |
|
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 from NL3D::CTransformShape. Definition at line 378 of file seg_remanence.cpp. References _SliceTime, _Started, _Stopping, and restart().
00379 { 00380 if (_SliceTime == 0.f) return; 00381 if (_Started && !_Stopping) return; 00382 restart(); 00383 } |
|
Stop the fx and let it unroll.
Reimplemented from NL3D::CTransformShape. Definition at line 403 of file seg_remanence.cpp. References _Stopping.
00404 { 00405 _Stopping = true; 00406 } |
|
Stop the fx with no unrolling.
Definition at line 409 of file seg_remanence.cpp. References _Restarted, _Started, and _Stopping. Referenced by setSliceTime(), and traverseAnimDetail().
00410 { 00411 _Started = _Restarted = _Stopping = false; 00412 } |
|
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;} |
|
|
call updateWorldMatrixFromFather(), then traverseAnimDetailWithoutUpdateWorldMatrix()
Reimplemented from NL3D::CTransform. Definition at line 458 of file seg_remanence.cpp. References _LastSampleFrame, clearAnimatedMatFlag(), getAnimatedMaterial(), NL3D::CScene::getCurrentTime(), NL3D::CScene::getNumRender(), NL3D::CTransform::getOwnerScene(), isStarted(), isStopping(), restart(), samplePos(), setupFromShape(), stopNoUnroll(), and NL3D::CAnimatedMaterial::update().
00459 { 00460 CTransformShape::traverseAnimDetail(); 00461 #ifndef DEBUG_SEG_REMANENCE_DISPLAY 00462 if (isStarted()) 00463 #endif 00464 { 00467 00468 CScene *scene = getOwnerScene(); 00469 if (scene->getNumRender() != (_LastSampleFrame + 1)) 00470 { 00471 if (!isStopping()) 00472 { 00473 // if wasn't visible at previous frame, must invalidate position 00474 restart(); 00475 } 00476 else 00477 { 00478 // ribbon started unrolling when it disapperaed from screen so simply remove it 00479 stopNoUnroll(); 00480 } 00481 } 00482 _LastSampleFrame = scene->getNumRender(); 00483 setupFromShape(); 00484 samplePos((float) scene->getCurrentTime()); 00485 00488 00489 00490 // test if animated material must be updated. 00491 if(IAnimatable::isTouched(CSegRemanence::OwnerBit)) 00492 { 00493 if (getAnimatedMaterial()) 00494 getAnimatedMaterial()->update(); 00495 clearAnimatedMatFlag(); 00496 } 00497 } 00498 } |
|
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 } |
|
The base traverseClip method. The behavior is to:
Reimplemented in NL3D::CCluster, NL3D::CLandscapeModel, NL3D::CParticleSystemModel, NL3D::CQuadGridClipManager, and NL3D::CRootModel. Definition at line 806 of file transform.cpp. References NL3D::CTransform::_AncestorSkeletonModel, NL3D::CTransform::_ClipDate, NL3D::CTransform::_FatherSkeletonModel, NL3D::CTransform::_ForceCLodSticked, NL3D::CTransform::_RenderFilterType, NL3D::CTransform::_StateFlags, NL3D::CTransform::_Visible, NL3D::CTransform::_WorldVis, NL3D::CLightTrav::addLightedModel(), NL3D::CRenderTrav::addRenderModel(), NL3D::CLoadBalancingTrav::addVisibleModel(), NL3D::CAnimDetailTrav::addVisibleModel(), NL3D::CClipTrav::addVisibleModel(), NL3D::CTransform::clip(), NL3D::CTransform::clipGetChild(), NL3D::CTransform::clipGetNumChildren(), NL3D::CClipTrav::CurrentDate, NL3D::CScene::getAnimDetailTrav(), NL3D::CScene::getClipTrav(), NL3D::CScene::getFilterRenderFlags(), NL3D::CScene::getLightTrav(), NL3D::CScene::getLoadBalancingTrav(), NL3D::CTransform::getOwnerScene(), NL3D::CScene::getRenderTrav(), NL3D::CTransform::isAnimDetailable(), NL3D::CTransform::isClipVisible(), NL3D::CSkeletonModel::isDisplayedAsLodCharacter(), NL3D::CTransform::isLightable(), NL3D::CTransform::isLoadBalancable(), NL3D::CTransform::isRenderable(), num, uint, and NL3D::CTransform::UserClipping. Referenced by NL3D::CCluster::recursTraverseClip(), NL3D::CClipTrav::traverse(), NL3D::CRootModel::traverseClip(), and NL3D::CParticleSystemModel::traverseClip().
00807 { 00808 // disable H_AUTO, because slowdown when lot of models (eg 1000-2000 tested in forest) 00809 //H_AUTO( NL3D_TransformClip ); 00810 00811 CScene *scene= getOwnerScene(); 00812 CClipTrav &clipTrav= scene->getClipTrav(); 00813 00814 if ((_ClipDate == clipTrav.CurrentDate) && _Visible) 00815 return; 00816 _ClipDate = clipTrav.CurrentDate; 00817 00818 // clip: update Visible flag. 00819 _Visible= false; 00820 // if at least visible. 00821 if(_WorldVis) 00822 { 00823 // If linked to a SkeletonModel anywhere in the hierarchy, don't clip, and use skeleton model clip result. 00824 // This works because we are sons of a special node which is not in the clip traversal, and 00825 // which is traversed at end of the traversal. 00826 if( _AncestorSkeletonModel!=NULL ) 00827 { 00828 _Visible= _AncestorSkeletonModel->isClipVisible(); 00829 // Special test: if we are sticked to a skeletonModel, and if we are still visible, maybe we don't have to 00830 if(_Visible && _FatherSkeletonModel) 00831 { 00832 // if our skeletonModel father is displayed with a Lod, maybe we are not to be displayed 00833 if(_FatherSkeletonModel->isDisplayedAsLodCharacter()) 00834 { 00835 // We are visible only if we where sticked to the skeleton with forceCLod==true. 00836 // This is also true if we are actually a skeletonModel 00837 if(!_ForceCLodSticked) 00838 // otherWise we are not visible. eg: this is the case of skins and some sticked object 00839 _Visible= false; 00840 } 00841 } 00842 } 00843 // else, clip. 00844 else 00845 { 00846 // If the instance is not filtered 00847 if(scene->getFilterRenderFlags() & _RenderFilterType) 00848 { 00849 // User cliping enabled ? 00850 if (_StateFlags & UserClipping) 00851 _Visible= true; 00852 else 00853 _Visible= clip(); 00854 } 00855 } 00856 } 00857 00858 // if visible, add to list. 00859 if(_Visible) 00860 { 00861 // add this model to the visibility list. 00862 clipTrav.addVisibleModel(this); 00863 00864 // Has not an ancestor skeleton model? 00865 if( _AncestorSkeletonModel==NULL ) 00866 { 00867 // If needed, insert the model in the lighted list. 00868 // don't insert if has an ancestorSkeletonModel, because in this case, result is driven by 00869 // the _LightContribution of the _AncestorSkeletonModel. 00870 if( isLightable() ) 00871 scene->getLightTrav().addLightedModel(this); 00872 00873 // If needed, insert the model in the animDetail list. 00874 // don't insert if has an ancestoreSkeletonModel, because in this case, this ancestore will 00875 // animDetail through the hierarchy... 00876 if( isAnimDetailable() ) 00877 scene->getAnimDetailTrav().addVisibleModel(this); 00878 } 00879 00880 // If needed, Add it to the loadBalancing trav 00881 if( isLoadBalancable() ) 00882 scene->getLoadBalancingTrav().addVisibleModel(this); 00883 00884 // If needed, insert the model in the render list. 00885 if( isRenderable() ) 00886 scene->getRenderTrav().addRenderModel(this); 00887 } 00888 00889 // Traverse the Clip sons. 00890 uint num= clipGetNumChildren(); 00891 for(uint i=0;i<num;i++) 00892 clipGetChild(i)->traverseClip(); 00893 } |
|
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::CTransform. Reimplemented in NL3D::CFlareModel, NL3D::CMeshInstance, NL3D::CParticleSystemModel, NL3D::CSkeletonModel, and NL3D::CWaterModel. Definition at line 178 of file transform_shape.cpp. References NL3D::CTransformShape::_CurrentLightContribution, NL3D::CTransformShape::_CurrentUseLocalAttenuation, NL3D::CMeshBlockManager::addInstance(), NL3D::CTransformShape::changeLightSetup(), NL3D::CRenderTrav::getDriver(), NL3D::CTransformShape::getLightContribution(), NL3D::CTransform::getOwnerScene(), NL3D::CScene::getRenderTrav(), H_AUTO, NL3D::CRenderTrav::isCurrentPassOpaque(), NL3D::CTransform::isLightable(), NL3D::CRenderTrav::MeshBlockManager, NL3D_MEM_INSTANCE, and NL3D::CTransformShape::Shape.
00179 { 00180 NL3D_MEM_INSTANCE 00181 H_AUTO( NL3D_TrShape_Render ); 00182 00183 00184 // Compute the current lighting setup for this instance 00185 //=================== 00186 00187 00188 // if the transform is lightable (ie not a fully lightmaped model), setup lighting 00189 if(isLightable()) 00190 { 00191 // useLocalAttenuation for this shape ?? 00192 if(Shape) 00193 _CurrentUseLocalAttenuation= Shape->useLightingLocalAttenuation (); 00194 else 00195 _CurrentUseLocalAttenuation= false; 00196 00197 // the std case is to take my model lightContribution 00198 if(_AncestorSkeletonModel==NULL) 00199 _CurrentLightContribution= &getLightContribution(); 00200 // but if skinned/sticked (directly or not) to a skeleton, take its. 00201 else 00202 _CurrentLightContribution= &((CTransformShape*)_AncestorSkeletonModel)->getLightContribution(); 00203 } 00204 // else must disable the lightSetup 00205 else 00206 { 00207 // setting NULL will disable all lights 00208 _CurrentLightContribution= NULL; 00209 _CurrentUseLocalAttenuation= false; 00210 } 00211 00212 00213 // render the shape. 00214 //================= 00215 if(Shape) 00216 { 00217 CRenderTrav &rdrTrav= getOwnerScene()->getRenderTrav(); 00218 bool currentPassOpaque= rdrTrav.isCurrentPassOpaque(); 00219 00220 // shape must be rendered in a CMeshBlockManager ?? 00221 float polygonCount; 00222 IMeshGeom *meshGeom= NULL; 00223 // true only if in pass opaque 00224 if( currentPassOpaque ) 00225 meshGeom= Shape->supportMeshBlockRendering(this, polygonCount); 00226 00227 // if ok, add the meshgeom to the block manager. 00228 if(meshGeom) 00229 { 00230 CMeshBaseInstance *inst= safe_cast<CMeshBaseInstance*>(this); 00231 rdrTrav.MeshBlockManager.addInstance(meshGeom, inst, polygonCount); 00232 } 00233 // else render it. 00234 else 00235 { 00236 // setup the lighting 00237 changeLightSetup( &rdrTrav ); 00238 00239 // render the shape. 00240 IDriver *drv= rdrTrav.getDriver(); 00241 Shape->render( drv, this, currentPassOpaque ); 00242 } 00243 } 00244 } |
|
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 415 of file seg_remanence.cpp. References NL3D::CMaterial::getBlend(), NL3D::CSegRemanenceShape::getMaterial(), NL3D::CTransform::setOpacity(), and NL3D::CTransform::setTransparency(). Referenced by setupFromShape().
00416 { 00417 CSegRemanenceShape *srs = NLMISC::safe_cast<CSegRemanenceShape *>((IShape *) Shape); 00418 bool transparent = srs->getMaterial().getBlend(); 00419 setTransparency(transparent); 00420 setOpacity(!transparent); 00421 } |
|
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 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(). |
|
Definition at line 169 of file seg_remanence.h. Referenced by copyFromOther(), getAnimatedMaterial(), registerToChannelMixer(), setAnimatedMaterial(), and ~CSegRemanence(). |
|
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 166 of file seg_remanence.h. Referenced by copyFromOther(), and samplePos(). |
|
Definition at line 848 of file transform.h. Referenced by NL3D::CTransform::CTransform(), NL3D::CTransform::setDontUnfreezeChildren(), and NL3D::CTransform::updateWorld(). |
|
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(). |
|
date of last traverseClip()
Definition at line 869 of file transform.h. Referenced by NL3D::CClipTrav::addVisibleModel(), NL3D::CTransform::CTransform(), and NL3D::CTransform::~CTransform(). |
|
Definition at line 170 of file seg_remanence.h. Referenced by traverseAnimDetail(). |
|
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 161 of file seg_remanence.h. Referenced by copyFromOther(), render(), and setupFromShape(). |
|
Definition at line 160 of file seg_remanence.h. Referenced by copyFromOther(), render(), and setupFromShape(). |
|
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 164 of file seg_remanence.h. Referenced by copyFromOther(), restart(), samplePos(), and stopNoUnroll(). |
|
Definition at line 159 of file seg_remanence.h. Referenced by copyFromOther(). |
|
Definition at line 168 of file seg_remanence.h. Referenced by getSliceTime(), render(), samplePos(), setSliceTime(), and start(). |
|
Definition at line 165 of file seg_remanence.h. Referenced by copyFromOther(), and samplePos(). |
|
Definition at line 162 of file seg_remanence.h. Referenced by copyFromOther(), isStarted(), render(), restart(), samplePos(), start(), and stopNoUnroll(). |
|
Definition at line 163 of file seg_remanence.h. Referenced by copyFromOther(), isStopping(), render(), restart(), start(), stop(), and stopNoUnroll(). |
|
Definition at line 167 of file seg_remanence.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 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(). |