osg::InverseTransform Class Reference

InverseTransform class. See More...

#include <OSGInverseTransform.h>

Inheritance diagram for osg::InverseTransform:

osg::InverseTransformBase osg::Group osg::GroupBase osg::NodeCore osg::AttachmentContainer osg::FieldContainer

List of all members.

Public Types

typedef InverseTransformPtr Ptr
enum  { ParentsFieldId = Inherited::NextFieldId, NextFieldId = ParentsFieldId + 1 }
typedef MFNodePtr ParentField
typedef MFNodePtrParentFieldPtr
typedef MFNodePtr::iterator ParentFieldIt
enum  { AttachmentsFieldId = Inherited::NextFieldId, NextFieldId = AttachmentsFieldId + 1 }
enum  { NextFieldId = 1 }

Public Member Functions

Sync


virtual void changed (BitVector whichField, UInt32 origin)
calc the inverse matrix


void initMatrix (const Matrix &mToWorld)
void calcMatrix (DrawActionBase *pAction, const Matrix &mToWorld, Matrix &mResult)
Output


virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
FieldContainer Get


virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Binary Access
virtual UInt32 getBinSize (const BitVector &whichField)
virtual void copyToBin (BinaryDataHandler &pMem, const BitVector &whichField)
virtual void copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField)
Copy


virtual FieldContainerPtr shallowCopy (void) const
Parents


MFNodePtrgetParents (void)
const MFNodePtrgetParents (void) const
MFNodePtrgetMFParents (void)
Volume


virtual void invalidateVolume (void)
Handle Attachments


void addAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0)
void subAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0)
AttachmentPtr findAttachment (UInt32 groupId, UInt16 binding=0)
AttachmentPtr findAttachment (const FieldContainerType &type, UInt16 binding=0)


SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information


UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const


FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)

Static Public Member Functions

Class Get


static FieldContainerTypegetClassType (void)
 access the type of the class
static UInt32 getClassTypeId (void)
 access the numerical type of the class
Construction


static InverseTransformPtr create (void)
 create a new instance of the class
static InverseTransformPtr createEmpty (void)
 create an empty new instance of the class, do not copy the prototype
Get Class Type Information


static UInt16 getClassGroupId (void)

Static Public Attributes

static const osg::BitVector MTInfluenceMask
static const BitVector ParentsFieldMask = (1 << NodeCore::ParentsFieldId )
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
CoredNodePtr helper


static const bool isNodeCore = true

Protected Member Functions

Constructors


 InverseTransform (void)
 InverseTransform (const InverseTransform &source)
Destructors


virtual ~InverseTransform (void)
NodeCore Specific


void adjustVolume (Volume &volume)
virtual void accumulateMatrix (Matrix &result)
Draw & Intersect & Render


Action::ResultE drawEnter (Action *action)
Action::ResultE drawLeave (Action *action)
Action::ResultE intersectEnter (Action *action)
Action::ResultE intersectLeave (Action *action)
Action::ResultE renderEnter (Action *action)
Action::ResultE renderLeave (Action *action)
Sync


void executeSyncImpl (InverseTransformBase *pOther, const BitVector &whichField)
virtual void executeSync (FieldContainer &other, const BitVector &whichField)
Sync


void executeSyncImpl (GroupBase *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (NodeCore *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
Action Callbacks


Action::ResultE intersect (Action *action)
MT Destruction


virtual void onDestroy (void)
Set / Get Parents


void addParent (const NodePtr &parent)
void subParent (const NodePtr &parent)
Pointer


NodeCorePtr getPtr (void) const
Pointer


AttachmentContainerPtr getPtr (void)
MT Edit


template<class FieldTypeT>
void beginEditX (const BitVector &whichField, FieldTypeT &field)
template<class FieldTypeT>
void endEditX (const BitVector &whichField, FieldTypeT &field)
MT Construction


void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)

Static Protected Member Functions

Create Fieldcontainer


template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result)

Protected Attributes

Fields


MFNodePtr _parents
Fields


SFAttachmentMap _attachmentMap
Member


UInt32 _shares

Static Protected Attributes

Type information


static FieldDescription_desc []

Private Types

typedef InverseTransformBase Inherited

Private Member Functions

void operator= (const InverseTransform &source)

Static Private Member Functions

static void initMethod (void)

Private Attributes

Matrix _invWorld

Friends

class FieldContainer
class InverseTransformBase


Detailed Description

PageSystemInverseTransform for a description.

Definition at line 117 of file OSGInverseTransform.h.


Member Typedef Documentation

Reimplemented from osg::InverseTransformBase.

Definition at line 125 of file OSGInverseTransform.h.

Reimplemented from osg::GroupBase.

Definition at line 89 of file OSGInverseTransformBase.h.

Definition at line 85 of file OSGNodeCore.h.

Definition at line 86 of file OSGNodeCore.h.

Definition at line 87 of file OSGNodeCore.h.


Member Enumeration Documentation

anonymous enum [inherited]

Enumerator:
ParentsFieldId 
NextFieldId 

Definition at line 93 of file OSGNodeCore.h.

00094     { 
00095         ParentsFieldId     = Inherited::NextFieldId, 
00096         NextFieldId        = ParentsFieldId + 1
00097     };

anonymous enum [inherited]

Enumerator:
AttachmentsFieldId 
NextFieldId 

Definition at line 78 of file OSGAttachmentContainerImpl.h.

anonymous enum [inherited]

Enumerator:
NextFieldId 

Definition at line 73 of file OSGFieldContainerImpl.h.

00073 { NextFieldId = 1 };


Constructor & Destructor Documentation

InverseTransform::InverseTransform ( void   )  [protected]

Definition at line 275 of file OSGInverseTransform.cpp.

00275                                        :
00276 
00277     Inherited(),
00278 
00279     _invWorld()
00280 
00281 {
00282 
00283 }

InverseTransform::InverseTransform ( const InverseTransform source  )  [protected]

Definition at line 287 of file OSGInverseTransform.cpp.

00287                                                                  :
00288 
00289     Inherited(source),
00290 
00291     _invWorld(source._invWorld)
00292 
00293 {
00294 
00295 }

InverseTransform::~InverseTransform ( void   )  [protected, virtual]

Definition at line 299 of file OSGInverseTransform.cpp.

00301 {
00302 
00303 }


Member Function Documentation

void InverseTransform::changed ( BitVector  whichField,
UInt32  origin 
) [virtual]

Reimplemented from osg::Group.

Definition at line 311 of file OSGInverseTransform.cpp.

References osg::Group::changed().

00313 {
00314 
00315     Inherited::changed(whichField, origin);
00316 
00317 }

void InverseTransform::initMatrix ( const Matrix mToWorld  ) 

Definition at line 379 of file OSGInverseTransform.cpp.

References _invWorld, and osg::TransformationMatrix< ValueTypeT >::invertFrom().

00381 {
00382 
00383     _invWorld.invertFrom(mToWorld);
00384 
00385 }

void InverseTransform::calcMatrix ( DrawActionBase pAction,
const Matrix mToWorld,
Matrix mResult 
)

Definition at line 361 of file OSGInverseTransform.cpp.

References _invWorld, and osg::TransformationMatrix< ValueTypeT >::invertFrom().

Referenced by drawEnter(), and renderEnter().

00367 {
00368 
00369     mResult.invertFrom(mToWorld);
00370 
00371 
00372 
00373     _invWorld = mResult;    // remember dynamically set matrix field
00374 
00375 }

void InverseTransform::dump ( UInt32  uiIndent = 0,
const BitVector  bvFlags = 0 
) const [virtual]

Reimplemented from osg::Group.

Definition at line 321 of file OSGInverseTransform.cpp.

References osg::Group::dump().

00325 {
00326 
00327     Inherited::dump(uiIndent, bvFlags);
00328 
00329 }

void InverseTransform::adjustVolume ( Volume volume  )  [protected, virtual]

Reimplemented from osg::NodeCore.

Definition at line 337 of file OSGInverseTransform.cpp.

References _invWorld, and osg::Volume::transform().

00339 {
00340 
00341     volume.transform(_invWorld);
00342 
00343 }

void InverseTransform::accumulateMatrix ( Matrix result  )  [protected, virtual]

Reimplemented from osg::NodeCore.

Definition at line 347 of file OSGInverseTransform.cpp.

References _invWorld, and osg::TransformationMatrix< ValueTypeT >::mult().

00349 {
00350 
00351     result.mult(_invWorld);
00352 
00353 }

Action::ResultE InverseTransform::drawEnter ( Action action  )  [protected]

Reimplemented from osg::Group.

Definition at line 395 of file OSGInverseTransform.cpp.

References calcMatrix(), osg::Action::Continue, osg::Action::getActNode(), and osg::TransformationMatrix< ValueTypeT >::getValues().

Referenced by initMethod().

00397 {
00398 
00399     DrawAction *da = dynamic_cast<DrawAction *>(action);
00400 
00401     Matrix mMat;
00402 
00403 
00404 
00405     calcMatrix(da, da->getActNode()->getToWorld(), mMat);
00406 
00407 
00408 
00409     // should use the chunk, but it's not updated yet
00410 
00411     glPushMatrix ();
00412 
00413     glMultMatrixf(mMat.getValues());
00414 
00415 
00416 
00417     return Action::Continue;
00418 
00419 }

Action::ResultE InverseTransform::drawLeave ( Action action  )  [protected]

Reimplemented from osg::Group.

Definition at line 423 of file OSGInverseTransform.cpp.

References osg::Action::Continue.

Referenced by initMethod().

00425 {
00426 
00427     glPopMatrix();
00428 
00429 
00430 
00431     return Action::Continue;
00432 
00433 }

Action::ResultE InverseTransform::intersectEnter ( Action action  )  [protected]

Definition at line 443 of file OSGInverseTransform.cpp.

References _invWorld, osg::Action::Continue, osg::Line::getDirection(), osg::IntersectAction::getLine(), osg::IntersectAction::getMaxDist(), osg::Line::getPosition(), osg::TransformationMatrix< ValueTypeT >::invert(), osg::VectorInterface< ValueTypeT, StorageInterfaceT >::length(), osg::TransformationMatrix< ValueTypeT >::multFullMatrixPnt(), osg::TransformationMatrix< ValueTypeT >::multMatrixVec(), osg::IntersectAction::scale(), and osg::IntersectAction::setLine().

Referenced by initMethod().

00445 {
00446 
00447     IntersectAction *ia = dynamic_cast<IntersectAction *>(action);
00448 
00449     Matrix           m(_invWorld);
00450 
00451 
00452 
00453     m.invert();
00454 
00455 
00456 
00457     Pnt3f pos;
00458 
00459     Vec3f dir;
00460 
00461 
00462 
00463     m.multFullMatrixPnt(ia->getLine().getPosition (), pos);
00464 
00465     m.multMatrixVec    (ia->getLine().getDirection(), dir);
00466 
00467 
00468 
00469     ia->setLine(Line(pos, dir), ia->getMaxDist());
00470 
00471     ia->scale(dir.length());
00472 
00473 
00474 
00475     return Action::Continue;
00476 
00477 }

Action::ResultE InverseTransform::intersectLeave ( Action action  )  [protected]

Definition at line 481 of file OSGInverseTransform.cpp.

References _invWorld, osg::Action::Continue, osg::Line::getDirection(), osg::IntersectAction::getLine(), osg::IntersectAction::getMaxDist(), osg::Line::getPosition(), osg::VectorInterface< ValueTypeT, StorageInterfaceT >::length(), osg::TransformationMatrix< ValueTypeT >::multFullMatrixPnt(), osg::TransformationMatrix< ValueTypeT >::multMatrixVec(), osg::IntersectAction::scale(), and osg::IntersectAction::setLine().

Referenced by initMethod().

00483 {
00484 
00485     IntersectAction *ia = dynamic_cast<IntersectAction *>(action);
00486 
00487     Matrix           m(_invWorld);
00488 
00489 
00490 
00491     Pnt3f pos;
00492 
00493     Vec3f dir;
00494 
00495 
00496 
00497     m.multFullMatrixPnt(ia->getLine().getPosition (), pos);
00498 
00499     m.multMatrixVec    (ia->getLine().getDirection(), dir);
00500 
00501 
00502 
00503     ia->setLine(Line(pos, dir), ia->getMaxDist());
00504 
00505     ia->scale(dir.length());
00506 
00507 
00508 
00509     return Action::Continue;
00510 
00511 }

Action::ResultE InverseTransform::renderEnter ( Action action  )  [protected]

Reimplemented from osg::Group.

Definition at line 521 of file OSGInverseTransform.cpp.

References calcMatrix(), osg::Action::Continue, osg::RenderAction::push_matrix(), and osg::RenderAction::top_matrix().

Referenced by initMethod().

00523 {
00524 
00525     RenderAction *pAction = dynamic_cast<RenderAction *>(action);
00526 
00527     Matrix mMat;    // will be set to World^-1
00528 
00529 
00530 
00531     calcMatrix(pAction, pAction->top_matrix(), mMat);
00532 
00533 
00534 
00535     pAction->push_matrix(mMat);
00536 
00537 
00538 
00539     return Action::Continue;
00540 
00541 }

Action::ResultE InverseTransform::renderLeave ( Action action  )  [protected]

Reimplemented from osg::Group.

Definition at line 545 of file OSGInverseTransform.cpp.

References osg::Action::Continue, and osg::RenderAction::pop_matrix().

Referenced by initMethod().

00547 {
00548 
00549     RenderAction *pAction = dynamic_cast<RenderAction *>(action);
00550 
00551 
00552 
00553     pAction->pop_matrix();
00554 
00555 
00556 
00557     return Action::Continue;
00558 
00559 }

void InverseTransform::initMethod ( void   )  [static, private]

Reimplemented from osg::Group.

Definition at line 147 of file OSGInverseTransform.cpp.

References drawEnter(), drawLeave(), osg::InverseTransformBase::getClassType(), intersectEnter(), intersectLeave(), osg::osgTypedMethodFunctor2BaseCPtrRef(), osg::RenderAction::registerEnterDefault(), osg::IntersectAction::registerEnterDefault(), osg::DrawAction::registerEnterDefault(), osg::RenderAction::registerLeaveDefault(), osg::IntersectAction::registerLeaveDefault(), osg::DrawAction::registerLeaveDefault(), renderEnter(), and renderLeave().

00149 {
00150 
00151     DrawAction::registerEnterDefault(
00152 
00153         getClassType(),
00154 
00155         osgTypedMethodFunctor2BaseCPtrRef<
00156 
00157             Action::ResultE,
00158 
00159             InverseTransformPtr    ,
00160 
00161             CNodePtr        ,
00162 
00163             Action         *>(&InverseTransform::drawEnter));
00164 
00165 
00166 
00167     DrawAction::registerLeaveDefault(
00168 
00169         getClassType(),
00170 
00171         osgTypedMethodFunctor2BaseCPtrRef<
00172 
00173             Action::ResultE,
00174 
00175             InverseTransformPtr    ,
00176 
00177             CNodePtr        ,
00178 
00179             Action         *>(&InverseTransform::drawLeave));
00180 
00181 
00182 
00183 
00184 
00185     IntersectAction::registerEnterDefault(
00186 
00187         getClassType(),
00188 
00189         osgTypedMethodFunctor2BaseCPtrRef<
00190 
00191             Action::ResultE,
00192 
00193             InverseTransformPtr    ,
00194 
00195             CNodePtr        ,
00196 
00197             Action         *>(&InverseTransform::intersectEnter));
00198 
00199 
00200 
00201     IntersectAction::registerLeaveDefault(
00202 
00203         getClassType(),
00204 
00205         osgTypedMethodFunctor2BaseCPtrRef<
00206 
00207             Action::ResultE,
00208 
00209             InverseTransformPtr    ,
00210 
00211             CNodePtr        ,
00212 
00213             Action         *>(&InverseTransform::intersectLeave));
00214 
00215 
00216 
00217 
00218 
00219     RenderAction::registerEnterDefault(
00220 
00221         getClassType(),
00222 
00223         osgTypedMethodFunctor2BaseCPtrRef<
00224 
00225             Action::ResultE,
00226 
00227             InverseTransformPtr    ,
00228 
00229             CNodePtr        ,
00230 
00231             Action         *>(&InverseTransform::renderEnter));
00232 
00233 
00234 
00235     RenderAction::registerLeaveDefault(
00236 
00237         getClassType(),
00238 
00239         osgTypedMethodFunctor2BaseCPtrRef<
00240 
00241             Action::ResultE,
00242 
00243             InverseTransformPtr    ,
00244 
00245             CNodePtr        ,
00246 
00247             Action         *>(&InverseTransform::renderLeave));
00248 
00249 }

void osg::InverseTransform::operator= ( const InverseTransform source  )  [private]

osg::FieldContainerType & osg::InverseTransformBase::getClassType ( void   )  [inline, static, inherited]

Reimplemented from osg::GroupBase.

Definition at line 58 of file OSGInverseTransformBase.inl.

References osg::InverseTransformBase::_type.

Referenced by osg::InverseTransformBase::create(), and initMethod().

00059 {
00060     return _type; 
00061 } 

osg::UInt32 osg::InverseTransformBase::getClassTypeId ( void   )  [inline, static, inherited]

Reimplemented from osg::GroupBase.

Definition at line 65 of file OSGInverseTransformBase.inl.

References osg::InverseTransformBase::_type, and osg::TypeBase::getId().

00066 {
00067     return _type.getId(); 
00068 } 

FieldContainerType & InverseTransformBase::getType ( void   )  [virtual, inherited]

Reimplemented from osg::GroupBase.

Definition at line 86 of file OSGInverseTransformBase.cpp.

References osg::InverseTransformBase::_type.

00087 {
00088     return _type; 
00089 } 

const FieldContainerType & InverseTransformBase::getType ( void   )  const [virtual, inherited]

Reimplemented from osg::GroupBase.

Definition at line 91 of file OSGInverseTransformBase.cpp.

References osg::InverseTransformBase::_type.

00092 {
00093     return _type;
00094 } 

UInt32 InverseTransformBase::getContainerSize ( void   )  const [virtual, inherited]

Reimplemented from osg::GroupBase.

Definition at line 106 of file OSGInverseTransformBase.cpp.

00107 { 
00108     return sizeof(InverseTransform); 
00109 }

UInt32 InverseTransformBase::getBinSize ( const BitVector whichField  )  [virtual, inherited]

Reimplemented from osg::GroupBase.

Definition at line 166 of file OSGInverseTransformBase.cpp.

References osg::GroupBase::getBinSize().

00167 {
00168     UInt32 returnValue = Inherited::getBinSize(whichField);
00169 
00170 
00171     return returnValue;
00172 }

void InverseTransformBase::copyToBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [virtual, inherited]

Reimplemented from osg::GroupBase.

Definition at line 174 of file OSGInverseTransformBase.cpp.

References osg::GroupBase::copyToBin().

00176 {
00177     Inherited::copyToBin(pMem, whichField);
00178 
00179 
00180 }

void InverseTransformBase::copyFromBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [virtual, inherited]

Reimplemented from osg::GroupBase.

Definition at line 182 of file OSGInverseTransformBase.cpp.

References osg::GroupBase::copyFromBin().

00184 {
00185     Inherited::copyFromBin(pMem, whichField);
00186 
00187 
00188 }

InverseTransformPtr osg::InverseTransformBase::create ( void   )  [inline, static, inherited]

Reimplemented from osg::GroupBase.

Definition at line 72 of file OSGInverseTransformBase.inl.

References osg::AttachmentContainerPtr::dcast(), osg::InverseTransformBase::getClassType(), osg::NullFC, and osg::InverseTransformBase::shallowCopy().

00073 {
00074     InverseTransformPtr fc; 
00075 
00076     if(getClassType().getPrototype() != OSG::NullFC) 
00077     {
00078         fc = InverseTransformPtr::dcast(
00079             getClassType().getPrototype()-> shallowCopy()); 
00080     }
00081     
00082     return fc; 
00083 }

InverseTransformPtr osg::InverseTransformBase::createEmpty ( void   )  [inline, static, inherited]

Reimplemented from osg::GroupBase.

Definition at line 87 of file OSGInverseTransformBase.inl.

References osg::FieldContainer::newPtr().

00088 { 
00089     InverseTransformPtr returnValue; 
00090     
00091     newPtr(returnValue); 
00092 
00093     return returnValue; 
00094 }

FieldContainerPtr InverseTransformBase::shallowCopy ( void   )  const [virtual, inherited]

Reimplemented from osg::GroupBase.

Definition at line 97 of file OSGInverseTransformBase.cpp.

References osg::FieldContainer::newPtr().

Referenced by osg::InverseTransformBase::create().

00098 { 
00099     InverseTransformPtr returnValue; 
00100 
00101     newPtr(returnValue, dynamic_cast<const InverseTransform *>(this)); 
00102 
00103     return returnValue; 
00104 }

void InverseTransformBase::executeSyncImpl ( InverseTransformBase pOther,
const BitVector whichField 
) [protected, inherited]

Definition at line 191 of file OSGInverseTransformBase.cpp.

References osg::GroupBase::executeSyncImpl().

Referenced by osg::InverseTransformBase::executeSync().

00193 {
00194 
00195     Inherited::executeSyncImpl(pOther, whichField);
00196 
00197 
00198 }

void GroupBase::executeSyncImpl ( GroupBase pOther,
const BitVector whichField 
) [protected, inherited]

void osg::NodeCore::executeSyncImpl ( NodeCore pOther,
const BitVector whichField 
) [inline, protected, inherited]

void AttachmentContainer::executeSyncImpl ( AttachmentContainer pOther,
const BitVector whichField 
) [protected, inherited]

void osg::FieldContainer::executeSyncImpl ( FieldContainer pOther,
const BitVector whichField 
) [inline, protected, inherited]

void InverseTransformBase::executeSync ( FieldContainer other,
const BitVector whichField 
) [protected, virtual, inherited]

Reimplemented from osg::GroupBase.

Definition at line 113 of file OSGInverseTransformBase.cpp.

References osg::InverseTransformBase::executeSyncImpl().

00115 {
00116     this->executeSyncImpl((InverseTransformBase *) &other, whichField);
00117 }

Action::ResultE Group::intersect ( Action action  )  [protected, inherited]

Reimplemented in osg::Switch.

Definition at line 146 of file OSGGroup.cpp.

References osg::Action::Continue, osg::Action::getActNode(), osg::IntersectAction::getLine(), osg::DynamicVolume::intersect(), osg::Volume::isValid(), and osg::Action::Skip.

Referenced by osg::Group::initMethod(), and osg::Transform::intersectEnter().

00147 {
00148           IntersectAction *ia = dynamic_cast<IntersectAction *>(action);
00149     const DynamicVolume   &dv = ia->getActNode()->getVolume();
00150     
00151     if(dv.isValid() && ! dv.intersect(ia->getLine()))
00152     {
00153         return Action::Skip;  //bv missed -> can not hit children
00154     }
00155     
00156     return Action::Continue;
00157 }

MFNodePtr & osg::NodeCore::getParents ( void   )  [inline, inherited]

Definition at line 56 of file OSGNodeCore.inl.

Referenced by osg::Surface::FindClosestPoint().

00057 {
00058     return _parents;
00059 }

const MFNodePtr & osg::NodeCore::getParents ( void   )  const [inline, inherited]

Definition at line 62 of file OSGNodeCore.inl.

References osg::NodeCore::_parents.

00063 {
00064     return _parents;
00065 }

MFNodePtr * osg::NodeCore::getMFParents ( void   )  [inline, inherited]

Definition at line 68 of file OSGNodeCore.inl.

References osg::NodeCore::_parents.

00069 {
00070     return &_parents;
00071 }

void osg::NodeCore::invalidateVolume ( void   )  [inline, virtual, inherited]

Definition at line 237 of file OSGNodeCore.inl.

References osg::NodeCore::_parents, and osg::MField< FieldTypeT, fieldNameSpace >::size().

Referenced by osg::Transform::changed(), and osg::Slices::changed().

00238 {
00239     for(UInt32 i = 0; i < _parents.size(); i++)
00240     {
00241         _parents[i]->invalidateVolume();
00242     }
00243 }

void osg::NodeCore::onDestroy ( void   )  [inline, protected, virtual, inherited]

Reimplemented from osg::FieldContainer.

Reimplemented in osg::Geometry, osg::Surface, and osg::MaterialPool.

Definition at line 142 of file OSGNodeCore.inl.

Referenced by osg::Geometry::onDestroy().

00143 {
00144 }

void osg::NodeCore::addParent ( const NodePtr parent  )  [inline, protected, inherited]

Definition at line 150 of file OSGNodeCore.inl.

References osg::NodeCore::_parents, and osg::MField< FieldTypeT, fieldNameSpace >::push_back().

00151 {
00152     _parents.push_back(parent);
00153 }

void osg::NodeCore::subParent ( const NodePtr parent  )  [inline, protected, inherited]

Definition at line 156 of file OSGNodeCore.inl.

References osg::NodeCore::_parents, osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::MField< FieldTypeT, fieldNameSpace >::erase(), and osg::MField< FieldTypeT, fieldNameSpace >::find().

00157 {
00158     MFNodePtr::iterator parentIt = _parents.find(parent);
00159 
00160     if(parentIt != _parents.end())
00161     {
00162         _parents.erase(parentIt);
00163     }
00164 }

NodeCorePtr osg::NodeCore::getPtr ( void   )  const [inline, protected, inherited]

Reimplemented in osg::Geometry.

Definition at line 170 of file OSGNodeCore.inl.

Referenced by osg::MaterialPool::add(), osg::NodeCore::dump(), and osg::MaterialPool::sub().

00171 {
00172     return NodeCorePtr(*this);
00173 }

AttachmentContainerPtr AttachmentContainer::getPtr ( void   )  [protected, inherited]

void AttachmentContainer::addAttachment ( const AttachmentPtr fieldContainerP,
UInt16  binding = 0 
) [inherited]

Definition at line 84 of file OSGAttachmentContainer.cpp.

References osg::addRefCP(), osg::beginEditCP(), osg::endEditCP(), osg::NullFC, and osg::subRefCP().

Referenced by osg::AttachmentContainer::AttachmentContainer(), osg::Node::onCreate(), and osg::Image::setAttachmentField().

00086 {
00087     UInt32 key;
00088 
00089     if(fieldContainerP == NullFC)
00090         return;
00091 
00092     key = (UInt32 (fieldContainerP->getGroupId()) << 16) | binding;
00093 
00094     addRefCP(fieldContainerP);
00095 
00096     beginEditCP(fieldContainerP, Attachment::ParentsFieldMask);
00097     {
00098         fieldContainerP->addParent(getPtr());
00099     }
00100     endEditCP  (fieldContainerP, Attachment::ParentsFieldMask);
00101 
00102     AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key);
00103 
00104     if(fcI != _attachmentMap.getValue().end())
00105     {
00106         beginEditCP((*fcI).second, Attachment::ParentsFieldMask);
00107         {
00108             (*fcI).second->subParent(getPtr());
00109         }
00110         endEditCP  ((*fcI).second, Attachment::ParentsFieldMask);
00111 
00112         subRefCP((*fcI).second);
00113 
00114         (*fcI).second = fieldContainerP;
00115     }
00116     else
00117     {
00118         _attachmentMap.getValue()[key] = fieldContainerP;
00119     }
00120 }

void AttachmentContainer::subAttachment ( const AttachmentPtr fieldContainerP,
UInt16  binding = 0 
) [inherited]

Definition at line 122 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::beginEditCP(), osg::endEditCP(), osg::AttachmentContainer::getPtr(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::NullFC, osg::Attachment::ParentsFieldMask, and osg::subRefCP().

00124 {
00125     UInt32 key;
00126 
00127     AttachmentMap::iterator fcI;
00128 
00129     if(fieldContainerP == NullFC)
00130         return;
00131 
00132     key = (UInt32(fieldContainerP->getGroupId()) << 16) | binding;
00133 
00134     fcI = _attachmentMap.getValue().find(key);
00135 
00136     if(fcI != _attachmentMap.getValue().end())
00137     {
00138         beginEditCP(fieldContainerP, Attachment::ParentsFieldMask);
00139         {
00140             (*fcI).second->subParent(getPtr());
00141         }
00142         endEditCP  (fieldContainerP, Attachment::ParentsFieldMask);
00143 
00144         subRefCP((*fcI).second);
00145 
00146         _attachmentMap.getValue().erase(fcI);
00147     }
00148 }

AttachmentPtr AttachmentContainer::findAttachment ( UInt32  groupId,
UInt16  binding = 0 
) [inherited]

Definition at line 150 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::SField< FieldTypeT, fieldNameSpace >::getValue(), and osg::NullFC.

Referenced by osg::Image::findAttachmentField(), and osg::Image::setAttachmentField().

00152 {
00153     UInt32 key = (UInt32(groupId) << 16) | binding;
00154 
00155     AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key);
00156 
00157     if(fcI == _attachmentMap.getValue().end())
00158     {
00159         return NullFC;
00160     }
00161     else
00162     {
00163         return (*fcI).second;
00164     }
00165 }

AttachmentPtr osg::AttachmentContainer::findAttachment ( const FieldContainerType type,
UInt16  binding = 0 
) [inline, inherited]

Definition at line 57 of file OSGAttachmentContainerImpl.inl.

00060 {
00061     return findAttachment(type.getGroupId(), binding);
00062 }

SFAttachmentMap * AttachmentContainer::getSFAttachments ( void   )  [inherited]

Field Access

Definition at line 170 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap.

00171 {
00172     return &_attachmentMap;
00173 }

UInt16 osg::FieldContainer::getClassGroupId ( void   )  [inline, static, inherited]

Definition at line 71 of file OSGFieldContainerImpl.inl.

References osg::FieldContainer::_type, and osg::FieldContainerType::getGroupId().

00072 {
00073     return _type.getGroupId();
00074 }

UInt32 osg::FieldContainer::getTypeId ( void   )  const [inline, inherited]

Definition at line 77 of file OSGFieldContainerImpl.inl.

References osg::TypeBase::getId(), and osg::FieldContainer::getType().

Referenced by osg::TextureChunk::changeFrom(), and osg::CubeTextureChunk::changeFrom().

00078 {
00079     return getType().getId();
00080 }

UInt16 osg::FieldContainer::getGroupId ( void   )  const [inline, inherited]

const Char8 * osg::FieldContainer::getTypeName ( void   )  const [inline, inherited]

Definition at line 89 of file OSGFieldContainerImpl.inl.

References osg::TypeBase::getCName(), and osg::FieldContainer::getType().

00090 {
00091     return getType().getCName();
00092 }

Field * osg::FieldContainer::getField ( UInt32  fieldId  )  [inline, inherited]

Generic Field Access

Definition at line 95 of file OSGFieldContainerImpl.inl.

References osg::FieldDescription::getField(), osg::FieldContainerType::getFieldDescription(), and osg::FieldContainer::getType().

Referenced by osg::QFCItem::expand(), osg::VRMLShapeDesc::getFieldAndDesc(), osg::QFieldViewBase::getFieldPtr(), osg::QFieldEditorBase::getFieldPtr(), osg::getParentsField(), and osg::QFCItem::setup().

00096 {
00097     const FieldDescription *desc = getType().getFieldDescription(fieldId);
00098 
00099     return desc ? desc->getField(*this) : NULL;
00100 }

Field * osg::FieldContainer::getField ( const Char8 fieldName  )  [inline, inherited]

Generic Field Access

Definition at line 103 of file OSGFieldContainerImpl.inl.

References osg::FieldContainerType::findFieldDescription(), osg::FieldDescription::getField(), and osg::FieldContainer::getType().

00104 {
00105     const FieldDescription *desc =getType().findFieldDescription(fieldName);
00106 
00107     return desc ? desc->getField(*this) : NULL;
00108 }

template<class ObjectPtrT>
void osg::FieldContainer::newPtr ( ObjectPtrT &  result,
const typename ObjectPtrT::StoredObjectType *  prototypeP 
) [inline, static, protected, inherited]

Definition at line 138 of file OSGFieldContainerImpl.inl.

References osg::ChangeList::addCreated(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ThreadManager::getNumAspects(), osg::FieldContainerFactory::registerFieldContainer(), and osg::FieldContainerFactory::the().

Referenced by osg::XWindowBase::createEmpty(), osg::WIN32WindowBase::createEmpty(), osg::ViewportBase::createEmpty(), osg::VertexProgramChunkBase::createEmpty(), osg::TwoSidedLightingChunkBase::createEmpty(), osg::TransformChunkBase::createEmpty(), osg::TransformBase::createEmpty(), osg::TileCameraDecoratorBase::createEmpty(), osg::TextureTransformChunkBase::createEmpty(), osg::TextureGrabForegroundBase::createEmpty(), osg::TextureGrabBackgroundBase::createEmpty(), osg::TextureChunkBase::createEmpty(), osg::TextureBackgroundBase::createEmpty(), osg::TexGenChunkBase::createEmpty(), osg::SwitchMaterialBase::createEmpty(), osg::SwitchBase::createEmpty(), osg::SurfaceBase::createEmpty(), osg::StringAttributeMapBase::createEmpty(), osg::StereoBufferViewportBase::createEmpty(), osg::StencilChunkBase::createEmpty(), osg::StateSortingGroupBase::createEmpty(), osg::StateBase::createEmpty(), osg::SpotLightBase::createEmpty(), osg::SortFirstWindowBase::createEmpty(), osg::SolidBackgroundBase::createEmpty(), osg::SlicesBase::createEmpty(), osg::SkyBackgroundBase::createEmpty(), osg::SimpleTexturedMaterialBase::createEmpty(), osg::SimpleStatisticsForegroundBase::createEmpty(), osg::SimpleMaterialBase::createEmpty(), osg::SHLParameterChunkBase::createEmpty(), osg::SHLChunkBase::createEmpty(), osg::ShearedStereoCameraDecoratorBase::createEmpty(), osg::ShaderParameterVec4fBase::createEmpty(), osg::ShaderParameterVec3fBase::createEmpty(), osg::ShaderParameterVec2fBase::createEmpty(), osg::ShaderParameterStringBase::createEmpty(), osg::ShaderParameterRealBase::createEmpty(), osg::ShaderParameterMVec4fBase::createEmpty(), osg::ShaderParameterMVec3fBase::createEmpty(), osg::ShaderParameterMVec2fBase::createEmpty(), osg::ShaderParameterMRealBase::createEmpty(), osg::ShaderParameterMMatrixBase::createEmpty(), osg::ShaderParameterMIntBase::createEmpty(), osg::ShaderParameterMatrixBase::createEmpty(), osg::ShaderParameterIntBase::createEmpty(), osg::ShaderParameterBoolBase::createEmpty(), osg::ScreenGroupBase::createEmpty(), osg::SClipPlaneChunkBase::createEmpty(), osg::ResolutionDisplayFilterBase::createEmpty(), osg::RenderOptionsBase::createEmpty(), osg::RegisterCombinersChunkBase::createEmpty(), osg::QTWindowBase::createEmpty(), osg::ProxyGroupBase::createEmpty(), osg::ProjectionCameraDecoratorBase::createEmpty(), osg::PolygonForegroundBase::createEmpty(), osg::PolygonChunkBase::createEmpty(), osg::PolygonBackgroundBase::createEmpty(), osg::PointLightBase::createEmpty(), osg::PointChunkBase::createEmpty(), osg::PhongMaterialBase::createEmpty(), osg::PerspectiveCameraBase::createEmpty(), osg::PassiveWindowBase::createEmpty(), osg::PassiveViewportBase::createEmpty(), osg::PassiveBackgroundBase::createEmpty(), osg::ParticlesBase::createEmpty(), osg::OrthographicCameraBase::createEmpty(), osg::OffCenterPerspectiveCameraBase::createEmpty(), osg::MultiPassMaterialBase::createEmpty(), osg::MultiDisplayWindowBase::createEmpty(), osg::MatrixCameraDecoratorBase::createEmpty(), osg::MatrixCameraBase::createEmpty(), osg::MaterialPoolBase::createEmpty(), osg::MaterialGroupBase::createEmpty(), osg::MaterialChunkBase::createEmpty(), osg::LogicOpChunkBase::createEmpty(), osg::LineChunkBase::createEmpty(), osg::LightModelChunkBase::createEmpty(), osg::LightEnvBase::createEmpty(), osg::LightChunkBase::createEmpty(), osg::InverseTransformBase::createEmpty(), osg::InlineBase::createEmpty(), osg::ImageForegroundBase::createEmpty(), osg::ImageBase::createEmpty(), osg::ImageBackgroundBase::createEmpty(), osg::GroupBase::createEmpty(), osg::GraphicStatisticsForegroundBase::createEmpty(), osg::GradientBackgroundBase::createEmpty(), osg::GrabForegroundBase::createEmpty(), osg::GLUTWindowBase::createEmpty(), osg::GeometryBase::createEmpty(), osg::FresnelMaterialBase::createEmpty(), osg::FragmentProgramChunkBase::createEmpty(), osg::FileGrabForegroundBase::createEmpty(), osg::FCPtrAttributeMapBase::createEmpty(), osg::FBOViewportBase::createEmpty(), osg::FatBorderChunkBase::createEmpty(), osg::DVRVolumeTextureBase::createEmpty(), osg::DVRVolumeBase::createEmpty(), osg::DVRSimpleShaderBase::createEmpty(), osg::DVRSimpleLUTShaderBase::createEmpty(), osg::DVRMtexLUTShaderBase::createEmpty(), osg::DVRLookupTableBase::createEmpty(), osg::DVRIsoSurfaceBase::createEmpty(), osg::DVRIsoShaderBase::createEmpty(), osg::DVRGeometryBase::createEmpty(), osg::DVRClipObjectsBase::createEmpty(), osg::DVRClipGeometryBase::createEmpty(), osg::DVRAppearanceBase::createEmpty(), osg::DistortionDisplayFilterBase::createEmpty(), osg::DistanceLODBase::createEmpty(), osg::DisplayFilterForegroundBase::createEmpty(), osg::DisplayCalibrationBase::createEmpty(), osg::DirectionalLightBase::createEmpty(), osg::DepthClearBackgroundBase::createEmpty(), osg::DepthChunkBase::createEmpty(), osg::CubeTextureChunkBase::createEmpty(), osg::ComponentTransformBase::createEmpty(), osg::ColorMaskChunkBase::createEmpty(), osg::ColorDisplayFilterBase::createEmpty(), osg::ColorBufferViewportBase::createEmpty(), osg::ClusterWindowBase::createEmpty(), osg::ClipPlaneChunkBase::createEmpty(), osg::ClipPlaneBase::createEmpty(), osg::ChunkMaterialBase::createEmpty(), osg::BlendChunkBase::createEmpty(), osg::BillboardBase::createEmpty(), osg::XWindowBase::shallowCopy(), osg::WIN32WindowBase::shallowCopy(), osg::ViewportBase::shallowCopy(), osg::VertexProgramChunkBase::shallowCopy(), osg::TwoSidedLightingChunkBase::shallowCopy(), osg::TransformChunkBase::shallowCopy(), osg::TransformBase::shallowCopy(), osg::TileCameraDecoratorBase::shallowCopy(), osg::TextureTransformChunkBase::shallowCopy(), osg::TextureGrabForegroundBase::shallowCopy(), osg::TextureGrabBackgroundBase::shallowCopy(), osg::TextureChunkBase::shallowCopy(), osg::TextureBackgroundBase::shallowCopy(), osg::TexGenChunkBase::shallowCopy(), osg::SwitchMaterialBase::shallowCopy(), osg::SwitchBase::shallowCopy(), osg::SurfaceBase::shallowCopy(), osg::StringAttributeMapBase::shallowCopy(), osg::StereoBufferViewportBase::shallowCopy(), osg::StencilChunkBase::shallowCopy(), osg::StateSortingGroupBase::shallowCopy(), osg::StateBase::shallowCopy(), osg::SpotLightBase::shallowCopy(), osg::SortFirstWindowBase::shallowCopy(), osg::SolidBackgroundBase::shallowCopy(), osg::SlicesBase::shallowCopy(), osg::SkyBackgroundBase::shallowCopy(), osg::SimpleTexturedMaterialBase::shallowCopy(), osg::SimpleStatisticsForegroundBase::shallowCopy(), osg::SimpleMaterialBase::shallowCopy(), osg::SHLParameterChunkBase::shallowCopy(), osg::SHLChunkBase::shallowCopy(), osg::ShearedStereoCameraDecoratorBase::shallowCopy(), osg::ShaderParameterVec4fBase::shallowCopy(), osg::ShaderParameterVec3fBase::shallowCopy(), osg::ShaderParameterVec2fBase::shallowCopy(), osg::ShaderParameterStringBase::shallowCopy(), osg::ShaderParameterRealBase::shallowCopy(), osg::ShaderParameterMVec4fBase::shallowCopy(), osg::ShaderParameterMVec3fBase::shallowCopy(), osg::ShaderParameterMVec2fBase::shallowCopy(), osg::ShaderParameterMRealBase::shallowCopy(), osg::ShaderParameterMMatrixBase::shallowCopy(), osg::ShaderParameterMIntBase::shallowCopy(), osg::ShaderParameterMatrixBase::shallowCopy(), osg::ShaderParameterIntBase::shallowCopy(), osg::ShaderParameterBoolBase::shallowCopy(), osg::ScreenGroupBase::shallowCopy(), osg::SClipPlaneChunkBase::shallowCopy(), osg::ResolutionDisplayFilterBase::shallowCopy(), osg::RenderOptionsBase::shallowCopy(), osg::RegisterCombinersChunkBase::shallowCopy(), osg::QTWindowBase::shallowCopy(), osg::ProxyGroupBase::shallowCopy(), osg::ProjectionCameraDecoratorBase::shallowCopy(), osg::PolygonForegroundBase::shallowCopy(), osg::PolygonChunkBase::shallowCopy(), osg::PolygonBackgroundBase::shallowCopy(), osg::PointLightBase::shallowCopy(), osg::PointChunkBase::shallowCopy(), osg::PhongMaterialBase::shallowCopy(), osg::PerspectiveCameraBase::shallowCopy(), osg::PassiveWindowBase::shallowCopy(), osg::PassiveViewportBase::shallowCopy(), osg::PassiveBackgroundBase::shallowCopy(), osg::ParticlesBase::shallowCopy(), osg::OrthographicCameraBase::shallowCopy(), osg::OffCenterPerspectiveCameraBase::shallowCopy(), osg::MultiPassMaterialBase::shallowCopy(), osg::MultiDisplayWindowBase::shallowCopy(), osg::MatrixCameraDecoratorBase::shallowCopy(), osg::MatrixCameraBase::shallowCopy(), osg::MaterialPoolBase::shallowCopy(), osg::MaterialGroupBase::shallowCopy(), osg::MaterialChunkBase::shallowCopy(), osg::LogicOpChunkBase::shallowCopy(), osg::LineChunkBase::shallowCopy(), osg::LightModelChunkBase::shallowCopy(), osg::LightEnvBase::shallowCopy(), osg::LightChunkBase::shallowCopy(), osg::InverseTransformBase::shallowCopy(), osg::InlineBase::shallowCopy(), osg::ImageForegroundBase::shallowCopy(), osg::ImageBase::shallowCopy(), osg::ImageBackgroundBase::shallowCopy(), osg::GroupBase::shallowCopy(), osg::GraphicStatisticsForegroundBase::shallowCopy(), osg::GradientBackgroundBase::shallowCopy(), osg::GrabForegroundBase::shallowCopy(), osg::GLUTWindowBase::shallowCopy(), osg::GeometryBase::shallowCopy(), osg::FresnelMaterialBase::shallowCopy(), osg::FragmentProgramChunkBase::shallowCopy(), osg::FileGrabForegroundBase::shallowCopy(), osg::FCPtrAttributeMapBase::shallowCopy(), osg::FBOViewportBase::shallowCopy(), osg::FatBorderChunkBase::shallowCopy(), osg::DVRVolumeTextureBase::shallowCopy(), osg::DVRVolumeBase::shallowCopy(), osg::DVRSimpleShaderBase::shallowCopy(), osg::DVRSimpleLUTShaderBase::shallowCopy(), osg::DVRMtexLUTShaderBase::shallowCopy(), osg::DVRLookupTableBase::shallowCopy(), osg::DVRIsoSurfaceBase::shallowCopy(), osg::DVRIsoShaderBase::shallowCopy(), osg::DVRGeometryBase::shallowCopy(), osg::DVRClipObjectsBase::shallowCopy(), osg::DVRClipGeometryBase::shallowCopy(), osg::DVRAppearanceBase::shallowCopy(), osg::DistortionDisplayFilterBase::shallowCopy(), osg::DistanceLODBase::shallowCopy(), osg::DisplayFilterForegroundBase::shallowCopy(), osg::DisplayCalibrationBase::shallowCopy(), osg::DirectionalLightBase::shallowCopy(), osg::DepthClearBackgroundBase::shallowCopy(), osg::DepthChunkBase::shallowCopy(), osg::CubeTextureChunkBase::shallowCopy(), osg::ComponentTransformBase::shallowCopy(), osg::ColorMaskChunkBase::shallowCopy(), osg::ColorDisplayFilterBase::shallowCopy(), osg::ColorBufferViewportBase::shallowCopy(), osg::ClusterWindowBase::shallowCopy(), osg::ClipPlaneChunkBase::shallowCopy(), osg::ClipPlaneBase::shallowCopy(), osg::ChunkMaterialBase::shallowCopy(), osg::BlendChunkBase::shallowCopy(), and osg::BillboardBase::shallowCopy().

00141 {
00142     typedef typename ObjectPtrT::StoredObjectType ObjectType;
00143     
00144     UInt8 *pTmp;
00145     
00146     result._containerSize = sizeof(ObjectType);
00147     
00148     pTmp        = 
00149         static_cast<UInt8 *>(operator new(
00150             sizeof(Int32)      + // ReferenceCount
00151             sizeof(UInt32)     + // ContainerId
00152             sizeof(ObjectType) * ThreadManager::getNumAspects()));
00153     
00154     *(reinterpret_cast<Int32 *>(pTmp)) = 0;
00155     
00156     pTmp += sizeof(Int32);
00157     
00158     result._storeP = (pTmp + sizeof(UInt32));
00159 
00160 #ifdef OSG_DEBUG_FCPTR
00161     result._typedStoreP = reinterpret_cast<FieldContainer *>(result._storeP);
00162 #endif
00163 
00164     *(reinterpret_cast<UInt32 *>(pTmp)) = 
00165         FieldContainerFactory::the()->registerFieldContainer(result);
00166     
00167     Thread::getCurrentChangeList()->addCreated(
00168         *(reinterpret_cast<UInt32 *>(pTmp)));
00169     
00170     pTmp += sizeof(UInt32);
00171     
00172     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00173 
00174     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00175     {
00176         pTmp = 
00177             reinterpret_cast<UInt8 *>(new (pTmp) ObjectType(*prototypeP));
00178         
00179         pTmp += sizeof(ObjectType);
00180     }
00181     
00182     result->onCreate(prototypeP);
00183 
00184     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00185     {
00186         aObject[i].onCreateAspect(aObject, prototypeP);
00187     }
00188 
00189 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00190 
00191     fprintf(stderr, "GV_MEM_FC_DBG : (%u) cc (%p|%u)\n", 
00192             Thread::getAspect(),
00193             result._storeP,
00194 //            ObjectType::getClassType().getCName(),
00195             ObjectType::getClassType().getId());
00196 #endif
00197 
00198 #ifdef OSG_DEBUG_TYPED_FCPTR
00199     result.updateTypedStore();
00200 #endif
00201 }

template<class ObjectPtrT>
void osg::FieldContainer::newPtr ( ObjectPtrT &  result  )  [inline, static, protected, inherited]

Definition at line 204 of file OSGFieldContainerImpl.inl.

References osg::ChangeList::addCreated(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ThreadManager::getNumAspects(), osg::FieldContainerFactory::registerFieldContainer(), and osg::FieldContainerFactory::the().

00205 {
00206     typedef typename ObjectPtrT::StoredObjectType ObjectType;
00207     
00208     UInt8 *pTmp;
00209     
00210     result._containerSize = sizeof(ObjectType);
00211     
00212     pTmp        =             
00213         static_cast<UInt8 *>(operator new(
00214             sizeof(Int32)      + // ReferenceCount
00215             sizeof(UInt32)     + // ContainerId
00216             sizeof(ObjectType) * ThreadManager::getNumAspects()));
00217     
00218     *(reinterpret_cast<Int32 *>(pTmp)) = 0;
00219     
00220     pTmp  += sizeof(Int32);
00221     
00222     result._storeP = (pTmp + sizeof(UInt32));
00223     
00224 #ifdef OSG_DEBUG_FCPTR
00225     result._typedStoreP = reinterpret_cast<FieldContainer *>(result._storeP);
00226 #endif
00227 
00228     *(reinterpret_cast<UInt32 *>(pTmp)) = 
00229         FieldContainerFactory::the()->registerFieldContainer(result);
00230     
00231     Thread::getCurrentChangeList()->addCreated(
00232         *(reinterpret_cast<UInt32 *>(pTmp)));
00233     
00234     pTmp += sizeof(UInt32);
00235     
00236     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00237 
00238     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00239     {
00240         pTmp = reinterpret_cast<UInt8 *>(new (pTmp) ObjectType());
00241         
00242         pTmp += sizeof(ObjectType);
00243     }
00244     
00245     result->onCreate();
00246     
00247     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00248     {
00249         aObject[i].onCreateAspect(aObject);
00250     }
00251 
00252 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00253     fprintf(stderr, "GV_MEM_FC_DBG : (%u) c (%p|%u)\n", 
00254             Thread::getAspect(),
00255             result._storeP,
00256 //            ObjectType::getClassType().getCName(),
00257             ObjectType::getClassType().getId());
00258 #endif
00259     
00260 #ifdef OSG_DEBUG_TYPED_FCPTR
00261     result.updateTypedStore();
00262 #endif
00263 }

template<class FieldTypeT>
void osg::FieldContainer::beginEditX ( const BitVector whichField,
FieldTypeT &  field 
) [inline, protected, inherited]

Definition at line 285 of file OSGFieldContainerImpl.inl.

00286 {
00287 //    fieldR.beginEdit();
00288 }

template<class FieldTypeT>
void osg::FieldContainer::endEditX ( const BitVector whichField,
FieldTypeT &  field 
) [inline, protected, inherited]

Definition at line 291 of file OSGFieldContainerImpl.inl.

References osg::endEditCP().

00292 {
00293     FieldContainerPtr tmpPtr(this);
00294     endEditCP(tmpPtr, whichField);
00295 }

void osg::FieldContainer::onCreate ( const FieldContainer source = NULL  )  [inline, protected, inherited]

Definition at line 318 of file OSGFieldContainerImpl.inl.

Referenced by osg::ShaderParameterChunk::onCreate().

00319 {
00320 }

void osg::FieldContainer::onCreateAspect ( const FieldContainer aspect0,
const FieldContainer source = NULL 
) [inline, protected, inherited]

Definition at line 323 of file OSGFieldContainerImpl.inl.

00325 {
00326 }


Friends And Related Function Documentation

friend class FieldContainer [friend]

Reimplemented from osg::InverseTransformBase.

Definition at line 285 of file OSGInverseTransform.h.

friend class InverseTransformBase [friend]

Definition at line 287 of file OSGInverseTransform.h.


Member Data Documentation

Initial value:

 
    (Inherited::MTInfluenceMask) | 
    (static_cast<BitVector>(0x0) << Inherited::NextFieldId)

Reimplemented from osg::GroupBase.

Definition at line 92 of file OSGInverseTransformBase.h.

const BitVector NodeCore::ParentsFieldMask = (1 << NodeCore::ParentsFieldId ) [static, inherited]

const bool osg::NodeCore::isNodeCore = true [static, inherited]

Reimplemented from osg::FieldContainer.

Definition at line 149 of file OSGNodeCore.h.

FieldDescription * NodeCore::_desc [static, protected, inherited]

MFNodePtr osg::NodeCore::_parents [protected, inherited]

const BitVector osg::FieldContainer::NextFieldMask [static, inherited]

Initial value:

 
                    (TypeTraits<BitVector>::One << NextFieldId)

Definition at line 75 of file OSGFieldContainerImpl.h.

UInt32 osg::FieldContainer::_shares [protected, inherited]

Definition at line 199 of file OSGFieldContainerImpl.h.


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

Generated on Mon Mar 17 12:10:06 2008 for OpenSG by  doxygen 1.5.5