osg::Node Class Reference
[Field Container]

#include <OSGNodeImpl.h>

Inheritance diagram for osg::Node:

osg::AttachmentContainer osg::FieldContainer

List of all members.

General Fieldcontainer Declaration



virtual osg::FieldContainerTypegetType (void)
virtual const
osg::FieldContainerType
getType (void) const
virtual osg::FieldContainerPtr shallowCopy (void) const
virtual osg::UInt32 getContainerSize (void) const
static osg::FieldContainerTypegetClassType (void)
static osg::UInt32 getClassTypeId (void)
static NodePtr create (void)
static NodePtr createEmpty (void)

Public Types

enum  {
  VolumeFieldId = Inherited::NextFieldId, TravMaskFieldId = VolumeFieldId + 1, ParentFieldId = TravMaskFieldId + 1, ChildrenFieldId = ParentFieldId + 1,
  CoreFieldId = ChildrenFieldId + 1, NextFieldId = CoreFieldId + 1
}
typedef NodePtr Ptr
enum  { AttachmentsFieldId = Inherited::NextFieldId, NextFieldId = AttachmentsFieldId + 1 }
enum  { NextFieldId = 1 }

Public Member Functions

Core


NodeCorePtr getCore (void)
NodeCorePtr getCore (void) const
void setCore (const NodeCorePtr &core)
Parent


NodePtr getParent (void)
Children


UInt32 getNChildren (void) const
void addChild (const NodePtr &childP)
void insertChild (UInt32 childIndex, const NodePtr &childP)
void replaceChild (UInt32 childIndex, const NodePtr &childP)
bool replaceChildBy (const NodePtr &childP, const NodePtr &newChildP)
 return true on success, false on child not found
Int32 findChild (const NodePtr &childP) const
void subChild (const NodePtr &childP)
void subChild (UInt32 childIndex)
NodePtr getChild (UInt32 childIndex)
Active / TravMask


bool getActive (void) const
void setActive (bool val)
void setTravMask (UInt32 val)
UInt32 getTravMask (void) const
void setOcclusionMask (UInt8 val)
UInt8 getOcclusionMask (void) const
Children


NodePtr clone (void)
Access Fields


SFDynamicVolumegetSFVolume (void)
SFUInt32getSFTravMask (void)
SFNodePtrgetSFParent (void)
SFNodeCorePtrgetSFCore (void)
MFNodePtrgetMFChildren (void)
Transformation


Matrix getToWorld (void)
void getToWorld (Matrix &result)
Volume


DynamicVolumegetVolume (bool update)
const DynamicVolumegetVolume (void) const
void getWorldVolume (DynamicVolume &result)
void updateVolume (void)
void invalidateVolume (void)
Changed


virtual void changed (BitVector whichField, UInt32 origin)
Binary Access


virtual UInt32 getBinSize (const BitVector &whichField)
virtual void copyToBin (BinaryDataHandler &pMem, const BitVector &whichField)
virtual void copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField)
Dump


virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
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

Get Class Type Information


static UInt16 getClassGroupId (void)

Static Public Attributes

static const BitVector VolumeFieldMask
static const BitVector TravMaskFieldMask
static const BitVector ParentFieldMask
static const BitVector ChildrenFieldMask
static const BitVector CoreFieldMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
static const BitVector MTInfluenceMask = 0x00
CoredNodePtr helper


static const bool isNodeCore = false

Protected Types

typedef AttachmentContainer Inherited

Protected Member Functions

Constructors


 Node (void)
 Node (const Node &source)
Destructor


virtual ~Node (void)
MT Construction


void setParent (const NodePtr &parent)
void onCreate (const Node *source=NULL)
Sync


virtual void executeSync (FieldContainer &other, const BitVector &whichField)
void executeSyncImpl (Node *pOther, const BitVector &whichField)
Pointer


NodePtr getPtr (void) const
Sync


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


void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
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)
MT Destruction


virtual void onDestroy (void)

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


SFDynamicVolume _sfVolume
SFUInt32 _sfTravMask
SFNodePtr _sfParent
MFNodePtr _mfChildren
SFNodeCorePtr _sfCore
UInt8 _occlusionMask
Fields


SFAttachmentMap _attachmentMap
Member


UInt32 _shares

Static Protected Attributes

Type information


static FieldDescription_desc []
static FieldContainerType _type
static const NodePtr NullNode

Private Member Functions

void operator= (const Node &source)

Friends

class FieldContainer
class FieldContainerType


Detailed Description

Definition at line 75 of file OSGNodeImpl.h.


Member Typedef Documentation

Reimplemented from osg::AttachmentContainer.

Definition at line 81 of file OSGNodeImpl.h.

Definition at line 103 of file OSGNodeImpl.h.


Member Enumeration Documentation

anonymous enum

Enumerator:
VolumeFieldId 
TravMaskFieldId 
ParentFieldId 
ChildrenFieldId 
CoreFieldId 
NextFieldId 

Definition at line 87 of file OSGNodeImpl.h.

00088     { 
00089         VolumeFieldId      = Inherited::NextFieldId, 
00090         TravMaskFieldId    = VolumeFieldId         + 1,
00091         ParentFieldId      = TravMaskFieldId       + 1,
00092         ChildrenFieldId    = ParentFieldId         + 1,
00093         CoreFieldId        = ChildrenFieldId       + 1,
00094         NextFieldId        = CoreFieldId           + 1
00095     };

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

Node::Node ( void   )  [protected]

Definition at line 625 of file OSGNode.cpp.

00625                :
00626      Inherited    (),
00627     _sfVolume     (),
00628     _sfTravMask   (TypeTraits<UInt32>::getMax()),
00629     _sfParent     (),
00630     _mfChildren   (),
00631     _sfCore       (),
00632     _occlusionMask(0)
00633 {
00634 }

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

Definition at line 636 of file OSGNode.cpp.

00636                              :
00637      Inherited       (source),
00638     _sfVolume        (source._sfVolume),
00639     _sfTravMask      (source._sfTravMask),
00640     _sfParent        (),
00641     _mfChildren      (),
00642     _sfCore          (),
00643     _occlusionMask   (source._occlusionMask)
00644 {
00645 }

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

Definition at line 650 of file OSGNode.cpp.

References _mfChildren, _sfCore, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::beginEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::endEditCP(), getPtr(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::NullFC, NullNode, ParentFieldMask, osg::NodeCore::ParentsFieldMask, and osg::subRefCP().

00651 {
00652     if(_sfCore.getValue() != NullFC)
00653     {
00654         NodePtr thisP = getPtr();
00655 
00656         beginEditCP(_sfCore.getValue(), NodeCore::ParentsFieldMask);
00657         {
00658             _sfCore.getValue()->subParent(thisP);
00659         }
00660         endEditCP  (_sfCore.getValue(), NodeCore::ParentsFieldMask);
00661 
00662         subRefCP(_sfCore.getValue());
00663     }
00664 
00665     MFNodePtr::iterator       vChildIt    = _mfChildren.begin();
00666     MFNodePtr::const_iterator endChildren = _mfChildren.end  ();
00667 
00668     while(vChildIt != endChildren)
00669     {
00670         beginEditCP(*vChildIt, Node::ParentFieldMask);
00671         {
00672             (*vChildIt)->setParent(NullNode);
00673         }
00674         endEditCP  (*vChildIt, Node::ParentFieldMask);
00675 
00676         subRefCP(*vChildIt);
00677 
00678         ++vChildIt;
00679     }
00680 }


Member Function Documentation

osg::FieldContainerType & Node::getType ( void   )  [virtual]

Reimplemented from osg::AttachmentContainer.

Definition at line 120 of file OSGNode.cpp.

const osg::FieldContainerType & Node::getType ( void   )  const [virtual]

Reimplemented from osg::AttachmentContainer.

Definition at line 120 of file OSGNode.cpp.

static osg ::FieldContainerType& osg::Node::getClassType ( void   )  [static]

static osg ::UInt32 osg::Node::getClassTypeId ( void   )  [static]

Reimplemented from osg::AttachmentContainer.

static NodePtr osg::Node::create ( void   )  [static]

static NodePtr osg::Node::createEmpty ( void   )  [static]

osg::FieldContainerPtr Node::shallowCopy ( void   )  const [virtual]

Implements osg::FieldContainer.

Definition at line 120 of file OSGNode.cpp.

osg::UInt32 Node::getContainerSize ( void   )  const [virtual]

Reimplemented from osg::AttachmentContainer.

Definition at line 120 of file OSGNode.cpp.

NodeCorePtr osg::Node::getCore ( void   )  [inline]

NodeCorePtr osg::Node::getCore ( void   )  const [inline]

Definition at line 112 of file OSGNodePtrDepImpl.inl.

References _sfCore, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00113 {
00114     return _sfCore.getValue();
00115 }

void Node::setCore ( const NodeCorePtr core  ) 

Definition at line 125 of file OSGNode.cpp.

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

Referenced by onCreate().

00126 {
00127     NodePtr thisP = getPtr();
00128 
00129     thisP.setParentFieldPos(CoreFieldId);
00130 
00131     addRefCP(core);
00132 
00133     if(_sfCore.getValue() != NullFC)
00134     {
00135         beginEditCP(_sfCore.getValue(), NodeCore::ParentsFieldMask);
00136         {
00137             _sfCore.getValue()->subParent(thisP);
00138         }
00139         endEditCP  (_sfCore.getValue(), NodeCore::ParentsFieldMask);
00140 
00141         subRefCP(_sfCore.getValue());
00142     }
00143 
00144     _sfCore.setValue(core);
00145 
00146     if(_sfCore.getValue() != NullFC)
00147     {
00148         beginEditCP(_sfCore.getValue(), NodeCore::ParentsFieldMask);
00149         {
00150             _sfCore.getValue()->addParent(thisP);
00151         }
00152         endEditCP  (_sfCore.getValue(), NodeCore::ParentsFieldMask);
00153     }
00154 
00155     // TODO Check if required (GV)
00156     invalidateVolume();
00157 }

NodePtr osg::Node::getParent ( void   )  [inline]

Definition at line 72 of file OSGNodeImpl.inl.

References _sfParent, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by changed(), getToWorld(), getWorldVolume(), and invalidateVolume().

00073 {
00074     return _sfParent.getValue();
00075 }

UInt32 osg::Node::getNChildren ( void   )  const [inline]

Definition at line 78 of file OSGNodeImpl.inl.

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

00079 {
00080     return _mfChildren.size();
00081 }

void Node::addChild ( const NodePtr childP  ) 

Definition at line 162 of file OSGNode.cpp.

References _mfChildren, osg::addRefCP(), osg::beginEditCP(), ChildrenFieldMask, osg::endEditCP(), getPtr(), invalidateVolume(), osg::NullFC, ParentFieldMask, and osg::MField< FieldTypeT, fieldNameSpace >::push_back().

00163 {
00164     if(childP != NullFC)
00165     {
00166         // do the ref early, to prevent destroys on getParent(a)->addChild(a)
00167         addRefCP(childP);
00168 
00169         // already somebody else's child?
00170         NodePtr parent = childP->getParent();
00171         if(parent != NullFC)
00172         {
00173             beginEditCP(parent, Node::ChildrenFieldMask);
00174             parent->subChild(childP);
00175             endEditCP  (parent, Node::ChildrenFieldMask);
00176         }
00177 
00178         _mfChildren.push_back(childP);
00179 
00180         beginEditCP(childP, Node::ParentFieldMask);
00181         {
00182             childP->setParent(getPtr());
00183         }
00184         endEditCP  (childP, Node::ParentFieldMask);
00185 
00186         // TODO Check if required (GV)
00187 #ifndef OSG_GV_BETA
00188         invalidateVolume();
00189 #endif
00190     }
00191 }

void Node::insertChild ( UInt32  childIndex,
const NodePtr childP 
)

Definition at line 193 of file OSGNode.cpp.

References _mfChildren, osg::addRefCP(), osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::beginEditCP(), ChildrenFieldMask, osg::endEditCP(), getPtr(), osg::MField< FieldTypeT, fieldNameSpace >::insert(), invalidateVolume(), osg::NullFC, and ParentFieldMask.

00194 {
00195     MFNodePtr::iterator childIt = _mfChildren.begin();
00196 
00197     if(childP != NullFC)
00198     {
00199         // do the ref early, to prevent destroys on getParent(a)->addChild(a)
00200         addRefCP(childP);
00201 
00202         // already somebody else's child?
00203         NodePtr parent = childP->getParent();
00204         if(parent != NullFC)
00205         {
00206             beginEditCP(parent, Node::ChildrenFieldMask);
00207             parent->subChild(childP);
00208             endEditCP  (parent, Node::ChildrenFieldMask);
00209         }
00210 
00211         childIt += childIndex;
00212 
00213         _mfChildren.insert(childIt, childP);
00214 
00215         beginEditCP(childP, Node::ParentFieldMask);
00216         {
00217             childP->setParent(getPtr());
00218         }
00219         endEditCP  (childP, Node::ParentFieldMask);
00220     }
00221 
00222     // TODO check if required (GV)
00223 #ifndef OSG_GV_BETA
00224     invalidateVolume();
00225 #endif
00226 }

void Node::replaceChild ( UInt32  childIndex,
const NodePtr childP 
)

Definition at line 228 of file OSGNode.cpp.

References _mfChildren, osg::addRefCP(), osg::beginEditCP(), ChildrenFieldMask, osg::endEditCP(), getPtr(), invalidateVolume(), osg::NullFC, NullNode, ParentFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::size(), and osg::subRefCP().

00229 {
00230     if(childP != NullFC && childIndex < _mfChildren.size())
00231     {
00232         // do the ref early, to prevent destroys on getParent(a)->addChild(a)
00233         addRefCP(childP);
00234         // already somebody else's child?
00235         // moved it up could be a child of childIndex.
00236         NodePtr parent = childP->getParent();
00237         if(parent != NullFC)
00238         {
00239             beginEditCP(parent, Node::ChildrenFieldMask);
00240             parent->subChild(childP);
00241             endEditCP  (parent, Node::ChildrenFieldMask);
00242         }
00243 
00244         // remove the current child
00245         beginEditCP(_mfChildren[childIndex], Node::ParentFieldMask);
00246         {
00247             _mfChildren[childIndex]->setParent(NullNode);
00248         }
00249         endEditCP  (_mfChildren[childIndex], Node::ParentFieldMask);
00250 
00251         subRefCP(_mfChildren[childIndex]);
00252 
00253         // set the new child
00254         _mfChildren[childIndex] = childP;
00255 
00256         beginEditCP(childP, Node::ParentFieldMask);
00257         {
00258             childP->setParent(getPtr());
00259         }
00260         endEditCP  (childP, Node::ParentFieldMask);
00261     }
00262 
00263     // TODO check if required (GV)
00264 #ifndef OSG_GV_BETA
00265     invalidateVolume();
00266 #endif
00267 }

bool Node::replaceChildBy ( const NodePtr childP,
const NodePtr newChildP 
)

Definition at line 271 of file OSGNode.cpp.

References _mfChildren, osg::addRefCP(), osg::beginEditCP(), ChildrenFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::endEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::find(), getPtr(), invalidateVolume(), osg::NullFC, NullNode, ParentFieldMask, and osg::subRefCP().

00273 {
00274     MFNodePtr::iterator childIt = _mfChildren.find(childP);
00275 
00276     if(newChildP != NullFC)
00277     {
00278         if(childIt != _mfChildren.end())
00279         {
00280             // do the ref early, to prevent destroys on
00281             // getParent(a)->addChild(a)
00282 
00283             addRefCP(newChildP);
00284             // already somebody else's child?
00285             // moved it up could be a child of childP.
00286             NodePtr parent = newChildP->getParent();
00287             if(parent != NullFC)
00288             {
00289                 beginEditCP(parent, Node::ChildrenFieldMask);
00290                 parent->subChild(newChildP);
00291                 endEditCP  (parent, Node::ChildrenFieldMask);
00292             }
00293 
00294             beginEditCP(childP, Node::ParentFieldMask);
00295             {
00296                 childP->setParent(NullNode);
00297             }
00298             endEditCP  (childP, Node::ParentFieldMask);
00299 
00300             subRefCP(childP);
00301 
00302             (*childIt) = newChildP;
00303 
00304             beginEditCP(newChildP, Node::ParentFieldMask);
00305             {
00306                 newChildP->setParent(getPtr());
00307             }
00308             endEditCP  (newChildP, Node::ParentFieldMask);
00309 
00310             // TODO check if required (GV)
00311 #ifndef OSG_GV_BETA
00312             invalidateVolume();
00313 #endif
00314 
00315             return true;
00316         }
00317     }
00318 
00319     return false;
00320 }

Int32 Node::findChild ( const NodePtr childP  )  const

Definition at line 322 of file OSGNode.cpp.

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

00323 {
00324     UInt32 index;
00325 
00326     for(index = 0; index < _mfChildren.size(); index++)
00327     {
00328         if( _mfChildren[index] == childP)
00329             break;
00330     }
00331 
00332     if(index < _mfChildren.size())
00333         return index;
00334     else
00335         return -1;
00336 }

void Node::subChild ( const NodePtr childP  ) 

Definition at line 338 of file OSGNode.cpp.

References _mfChildren, osg::beginEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::endEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::erase(), osg::MField< FieldTypeT, fieldNameSpace >::find(), invalidateVolume(), NullNode, ParentFieldMask, osg::subRefCP(), and SWARNING.

00339 {
00340     MFNodePtr::iterator childIt = _mfChildren.find(childP);
00341 
00342     if(childIt != _mfChildren.end())
00343     {
00344         beginEditCP(childP, Node::ParentFieldMask);
00345         {
00346             childP->setParent(NullNode);
00347         }
00348         endEditCP  (childP, Node::ParentFieldMask);
00349 
00350         subRefCP(childP);
00351 
00352         _mfChildren.erase(childIt);
00353     }
00354     else
00355     {
00356         SWARNING << "Node(" << this << ")::subChild: " << childP
00357                  << " is not one of my children!" << std::endl;
00358     }
00359 
00360     // TODO check if required (GV)
00361 #ifndef OSG_GV_BETA
00362     invalidateVolume();
00363 #endif
00364 }

void Node::subChild ( UInt32  childIndex  ) 

Definition at line 366 of file OSGNode.cpp.

References _mfChildren, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::beginEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::endEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::erase(), invalidateVolume(), NullNode, ParentFieldMask, and osg::subRefCP().

00367 {
00368     MFNodePtr::iterator childIt = _mfChildren.begin();
00369 
00370     childIt += childIndex;
00371 
00372     if(childIt != _mfChildren.end())
00373     {
00374         beginEditCP(*childIt, Node::ParentFieldMask);
00375         {
00376             (*childIt)->setParent(NullNode);
00377         }
00378         endEditCP  (*childIt, Node::ParentFieldMask);
00379 
00380         subRefCP(*childIt);
00381 
00382         _mfChildren.erase(childIt);
00383     }
00384 
00385     // TODO check if required (GV)
00386 #ifndef OSG_GV_BETA
00387     invalidateVolume();
00388 #endif
00389 }

NodePtr osg::Node::getChild ( UInt32  childIndex  )  [inline]

Definition at line 84 of file OSGNodeImpl.inl.

References _mfChildren, OSG_ASSERT, and osg::MField< FieldTypeT, fieldNameSpace >::size().

00085 {
00086     OSG_ASSERT((childIndex < _mfChildren.size()));
00087 
00088     return _mfChildren[childIndex];
00089 }

bool osg::Node::getActive ( void   )  const [inline]

Definition at line 105 of file OSGNodeImpl.inl.

References getTravMask().

00106 {
00107     return getTravMask() == TypeTraits<UInt32>::getMax();
00108 }

void osg::Node::setActive ( bool  val  )  [inline]

Definition at line 111 of file OSGNodeImpl.inl.

References _sfTravMask, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00112 {
00113     _sfTravMask.setValue(val ? TypeTraits<UInt32>::getMax()        :
00114                                TypeTraits<UInt32>::getZeroElement() );
00115 }

void osg::Node::setTravMask ( UInt32  val  )  [inline]

Definition at line 99 of file OSGNodeImpl.inl.

References _sfTravMask, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00100 {
00101     _sfTravMask.setValue(val);
00102 }

UInt32 osg::Node::getTravMask ( void   )  const [inline]

Definition at line 93 of file OSGNodeImpl.inl.

References _sfTravMask, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by getActive(), and updateVolume().

00094 {
00095     return _sfTravMask.getValue();
00096 }

void osg::Node::setOcclusionMask ( UInt8  val  )  [inline]

Definition at line 118 of file OSGNodeImpl.inl.

References _occlusionMask.

00119 {
00120     _occlusionMask = val;
00121 }

UInt8 osg::Node::getOcclusionMask ( void   )  const [inline]

Definition at line 124 of file OSGNodeImpl.inl.

References _occlusionMask.

00125 {
00126     return _occlusionMask;
00127 }

NodePtr osg::Node::clone ( void   )  [inline]

Definition at line 156 of file OSGNodePtrDepImpl.inl.

References osg::cloneTree(), and getPtr().

00157 {
00158     return cloneTree(getPtr());
00159 }

SFDynamicVolume * osg::Node::getSFVolume ( void   )  [inline]

Definition at line 133 of file OSGNodeImpl.inl.

References _sfVolume.

00134 {
00135     return &_sfVolume;
00136 }

SFUInt32 * osg::Node::getSFTravMask ( void   )  [inline]

Definition at line 139 of file OSGNodeImpl.inl.

References _sfTravMask.

00140 {
00141     return &_sfTravMask;
00142 }

SFNodePtr * osg::Node::getSFParent ( void   )  [inline]

Definition at line 145 of file OSGNodeImpl.inl.

References _sfParent.

00146 {
00147     return &_sfParent;
00148 }

SFNodeCorePtr * osg::Node::getSFCore ( void   )  [inline]

Definition at line 151 of file OSGNodeImpl.inl.

References _sfCore.

00152 {
00153     return &_sfCore;
00154 }

MFNodePtr * osg::Node::getMFChildren ( void   )  [inline]

Definition at line 157 of file OSGNodeImpl.inl.

References _mfChildren.

00158 {
00159     return &_mfChildren;
00160 }

Matrix Node::getToWorld ( void   ) 

Definition at line 395 of file OSGNode.cpp.

00396 {
00397     Matrix tmp;
00398 
00399     getToWorld(tmp);
00400 
00401     return tmp;
00402 }

void Node::getToWorld ( Matrix result  ) 

Definition at line 404 of file OSGNode.cpp.

References getCore(), getParent(), osg::NullFC, and osg::TransformationMatrix< ValueTypeT >::setIdentity().

00405 {
00406     if(getParent() != NullFC)
00407     {
00408         getParent()->getToWorld(result);
00409     }
00410     else
00411     {
00412         result.setIdentity();
00413     }
00414 
00415     if(getCore() != NullFC)
00416         getCore()->accumulateMatrix(result);
00417 }

DynamicVolume & osg::Node::getVolume ( bool  update  )  [inline]

Definition at line 63 of file OSGNodeImpl.inl.

References _sfVolume, osg::SField< FieldTypeT, fieldNameSpace >::getValue(), and updateVolume().

Referenced by osg::RenderAction::isVisible().

00064 {
00065     if(update == true)
00066         updateVolume();
00067 
00068     return _sfVolume.getValue();
00069 }

const DynamicVolume & osg::Node::getVolume ( void   )  const [inline]

Definition at line 57 of file OSGNodeImpl.inl.

References _sfVolume, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by getWorldVolume().

00058 {
00059     return _sfVolume.getValue();
00060 }

void Node::getWorldVolume ( DynamicVolume result  ) 

Definition at line 422 of file OSGNode.cpp.

References getParent(), getVolume(), osg::NullFC, osg::TransformationMatrix< ValueTypeT >::setIdentity(), osg::DynamicVolume::transform(), and updateVolume().

Referenced by osg::DrawAction::isVisible().

00423 {
00424     Matrix m;
00425 
00426     if(getParent() != NullFC)
00427     {
00428         getParent()->getToWorld(m);
00429     }
00430     else
00431     {
00432         m.setIdentity();
00433     }
00434 
00435     updateVolume();
00436 
00437     result = getVolume();
00438     result.transform(m);
00439 /*
00440 Pnt3f low,high;
00441 result.getBounds(low,high);
00442 fprintf(stderr,"%p: node 0x%p gwv (%f %f %f  %f %f %f)\n",
00443             Thread::getCurrent(), this,
00444             low[0], low[1], low[2],
00445             high[0], high[1], high[2] );
00446 */
00447 }

void Node::updateVolume ( void   ) 

Definition at line 449 of file OSGNode.cpp.

References _mfChildren, _sfVolume, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::beginEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::endEditCP(), osg::Volume::extendBy(), getCore(), osg::DynamicVolume::getInstance(), getPtr(), getTravMask(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::DynamicVolume::instanceChanged(), osg::NullFC, osg::Volume::setEmpty(), osg::SField< FieldTypeT, fieldNameSpace >::setValue(), and VolumeFieldMask.

Referenced by getVolume(), getWorldVolume(), and osg::RenderAction::isVisible().

00450 {
00451     if(_sfVolume.getValue().getInstance().isValid() == true ||
00452        getTravMask()                                == 0x0000)
00453     {
00454         return;             // still valid, nothing to do
00455     }
00456 
00457     // be careful to not change the real volume. If two threads
00458     // are updating the same aspect this will lead to chaos
00459 
00460     DynamicVolume vol = _sfVolume.getValue();
00461 
00462 //fprintf(stderr,"%p: node 0x%p update needed\n", Thread::getCurrent(), this);
00463 
00464     MFNodePtr::iterator it;
00465 
00466     vol.getInstance().setEmpty();
00467 
00468     for(it = _mfChildren.begin(); it != _mfChildren.end(); ++it)
00469     {
00470         if((*it)->getTravMask())
00471         {
00472             (*it)->updateVolume();
00473             vol.getInstance().extendBy((*it)->getVolume());
00474         }
00475     }
00476 
00477     // test for null core. Shouldn't happen, but just in case...
00478     if(getCore() != NullFC)
00479         getCore()->adjustVolume(vol.getInstance());
00480 
00481     NodePtr thisP = getPtr();
00482 
00483     beginEditCP(thisP, VolumeFieldMask);
00484 
00485     vol.instanceChanged();
00486 
00487     _sfVolume.setValue(vol);
00488 
00489     endEditCP(thisP, VolumeFieldMask);
00490 }

void Node::invalidateVolume ( void   ) 

Definition at line 492 of file OSGNode.cpp.

References _sfVolume, osg::beginEditCP(), osg::endEditCP(), getParent(), getPtr(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::Volume::isStatic(), osg::Volume::isValid(), osg::NullFC, osg::Volume::setValid(), and VolumeFieldMask.

Referenced by addChild(), changed(), insertChild(), replaceChild(), replaceChildBy(), and subChild().

00493 {
00494     Volume &vol=_sfVolume.getValue().getInstance();
00495 
00496     if(vol.isValid() == true && vol.isStatic() == false)
00497     {
00498         NodePtr thisP = getPtr();
00499 
00500         beginEditCP(thisP, VolumeFieldMask);
00501 
00502         vol.setValid(false);
00503         _sfVolume.getValue().instanceChanged();
00504 
00505         endEditCP(thisP, VolumeFieldMask);
00506 
00507         if(getParent() != NullFC)
00508         {
00509             getParent()->invalidateVolume();
00510         }
00511     }
00512 }

void osg::Node::changed ( BitVector  whichField,
UInt32  origin 
) [inline, virtual]

Reimplemented from osg::AttachmentContainer.

Definition at line 167 of file OSGNodeImpl.inl.

References _mfChildren, _sfCore, osg::ChangedOrigin::Abstract, osg::ChangedOrigin::AbstrIncRefCount, osg::addRefCP(), osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::beginEditCP(), osg::AttachmentContainer::changed(), ChildrenFieldMask, CoreFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::endEditCP(), getParent(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), invalidateVolume(), osg::NullFC, TravMaskFieldMask, and VolumeFieldMask.

00169 {
00170     Inherited::changed(whichField, origin);
00171 
00172     if(whichField & CoreFieldMask)
00173     {
00174         invalidateVolume();
00175 
00176         if(origin & ChangedOrigin::Abstract)
00177         {
00178             if(origin & ChangedOrigin::AbstrIncRefCount)
00179             {
00180                 addRefCP(_sfCore.getValue());
00181             }
00182         }
00183     }
00184 
00185     if(whichField & TravMaskFieldMask)
00186     {
00187         beginEditCP(getParent(), Node::VolumeFieldMask);
00188         if(getParent() != NullFC)
00189         {
00190             getParent()->invalidateVolume();
00191         }
00192         else
00193         {
00194             invalidateVolume();
00195         }
00196         endEditCP(getParent(), Node::VolumeFieldMask);
00197     }
00198     
00199     if(whichField & ChildrenFieldMask)
00200     {
00201         invalidateVolume();
00202 
00203         if(origin & ChangedOrigin::Abstract)
00204         {
00205             if(origin & ChangedOrigin::AbstrIncRefCount)
00206             {
00207                 MFNodePtr::iterator       vChildIt    = _mfChildren.begin();
00208                 MFNodePtr::const_iterator endChildren = _mfChildren.end  ();
00209                 
00210                 while(vChildIt != endChildren)
00211                 {
00212                     addRefCP(*vChildIt);
00213 
00214                     ++vChildIt;
00215                 }
00216             }
00217         }
00218     }
00219 }

UInt32 osg::Node::getBinSize ( const BitVector whichField  )  [inline, virtual]

Reimplemented from osg::AttachmentContainer.

Definition at line 225 of file OSGNodeImpl.inl.

References _mfChildren, _sfCore, _sfParent, _sfTravMask, _sfVolume, ChildrenFieldMask, CoreFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::AttachmentContainer::getBinSize(), osg::FieldBits::NoField, ParentFieldMask, TravMaskFieldMask, and VolumeFieldMask.

00226 {
00227     UInt32 returnValue = Inherited::getBinSize(whichField);
00228 
00229     if(FieldBits::NoField != (VolumeFieldMask & whichField))
00230     {
00231         returnValue += _sfVolume       .getBinSize();
00232     }
00233 
00234     if(FieldBits::NoField != (TravMaskFieldMask & whichField))
00235     {
00236         returnValue += _sfTravMask     .getBinSize();
00237     }
00238 
00239     if(FieldBits::NoField != (ParentFieldMask & whichField))
00240     {
00241         returnValue += _sfParent       .getBinSize();
00242     }
00243 
00244     if(FieldBits::NoField != (ChildrenFieldMask & whichField))
00245     {
00246         returnValue += _mfChildren     .getBinSize();
00247     }
00248 
00249     if(FieldBits::NoField != (CoreFieldMask & whichField))
00250     {
00251         returnValue += _sfCore         .getBinSize();
00252     }
00253 
00254     return returnValue;
00255 }

void osg::Node::copyToBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [inline, virtual]

Reimplemented from osg::AttachmentContainer.

Definition at line 258 of file OSGNodeImpl.inl.

References _mfChildren, _sfCore, _sfParent, _sfTravMask, _sfVolume, ChildrenFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::AttachmentContainer::copyToBin(), CoreFieldMask, osg::FieldBits::NoField, ParentFieldMask, TravMaskFieldMask, and VolumeFieldMask.

00260 {
00261     Inherited::copyToBin(pMem, whichField);
00262 
00263     if(FieldBits::NoField != (VolumeFieldMask & whichField))
00264     {
00265         _sfVolume.copyToBin(pMem);
00266     }
00267 
00268     if(FieldBits::NoField != (TravMaskFieldMask & whichField))
00269     {
00270         _sfTravMask.copyToBin(pMem);
00271     }
00272 
00273     if(FieldBits::NoField != (ParentFieldMask & whichField))
00274     {
00275         _sfParent.copyToBin(pMem);
00276     }
00277 
00278     if(FieldBits::NoField != (ChildrenFieldMask & whichField))
00279     {
00280         _mfChildren.copyToBin(pMem);
00281     }
00282 
00283     if(FieldBits::NoField != (CoreFieldMask & whichField))
00284     {
00285         _sfCore.copyToBin(pMem);
00286     }
00287 }

void osg::Node::copyFromBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [inline, virtual]

Reimplemented from osg::AttachmentContainer.

Definition at line 290 of file OSGNodeImpl.inl.

References _mfChildren, _sfCore, _sfParent, _sfTravMask, _sfVolume, ChildrenFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::AttachmentContainer::copyFromBin(), CoreFieldMask, osg::FieldBits::NoField, ParentFieldMask, TravMaskFieldMask, and VolumeFieldMask.

00292 {
00293     Inherited::copyFromBin(pMem, whichField);
00294 
00295     if(FieldBits::NoField != (VolumeFieldMask & whichField))
00296     {
00297         _sfVolume.copyFromBin(pMem);
00298     }
00299 
00300     if(FieldBits::NoField != (TravMaskFieldMask & whichField))
00301     {
00302         _sfTravMask.copyFromBin(pMem);
00303     }
00304 
00305     if(FieldBits::NoField != (ParentFieldMask & whichField))
00306     {
00307         _sfParent.copyFromBin(pMem);
00308     }
00309 
00310     if(FieldBits::NoField != (ChildrenFieldMask & whichField))
00311     {
00312         _mfChildren.copyFromBin(pMem);
00313     }
00314 
00315     if(FieldBits::NoField != (CoreFieldMask & whichField))
00316     {
00317         _sfCore.copyFromBin(pMem);
00318     }
00319 }

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

Reimplemented from osg::AttachmentContainer.

Definition at line 517 of file OSGNode.cpp.

References osg::AttachmentContainer::_attachmentMap, _mfChildren, _sfCore, _sfParent, osg::MField< FieldTypeT, fieldNameSpace >::dump(), osg::AttachmentContainer::dump(), osg::FieldContainerPtrBase::getFieldContainerId(), getPtr(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::indentLog(), osg::NullFC, PLOG, and osg::MField< FieldTypeT, fieldNameSpace >::size().

00519 {
00520     UInt32 i;
00521 
00522     NodePtr thisP = getPtr();
00523 
00524     indentLog(uiIndent, PLOG);
00525 
00526     PLOG << "Node"
00527          << "("
00528          << thisP.getFieldContainerId()
00529          << ") : "
00530          << _mfChildren.size()
00531          << " children | "
00532          << _attachmentMap.getValue().size()
00533          << " attachments | "
00534          << "Parent : " << std::hex;
00535 
00536     if(_sfParent.getValue() != NullFC)
00537         PLOG << "0x" << &(*(_sfParent.getValue())) << " | ";
00538     else
00539         PLOG << "NULL | ";
00540 
00541     PLOG << "0x" << this << std::dec << std::endl;
00542 
00543     indentLog(uiIndent, PLOG);
00544 
00545     PLOG << "[" << std::endl;
00546 
00547     if(_sfCore.getValue() != NullFC)
00548     {
00549         _sfCore.getValue()->dump(uiIndent + 4, bvFlags);
00550     }
00551     else
00552     {
00553         indentLog(uiIndent + 4, PLOG);
00554         PLOG << "Core : " << "NULL" << std::endl;
00555     }
00556 
00557     Inherited::dump(uiIndent, bvFlags);
00558 
00559     indentLog(uiIndent, PLOG);
00560     PLOG << "]" << std::endl;
00561 
00562     indentLog(uiIndent, PLOG);
00563 
00564     PLOG << "{" << std::endl;
00565 
00566     for(i = 0; i < _mfChildren.size(); i++)
00567     {
00568         _mfChildren[i]->dump(uiIndent + 4, bvFlags);
00569         PLOG << std::endl;
00570     }
00571 
00572 
00573     indentLog(uiIndent, PLOG);
00574 
00575     PLOG << "}" << std::endl;
00576 
00577 /*
00578     for(i = 0; i < indent; i++)
00579     {
00580         cerr << " ";
00581     }
00582     cerr << "  Parent : ";
00583 
00584 
00585     for(i = 0; i < indent; i++)
00586     {
00587         cerr << " ";
00588     }
00589 
00590     for(i = 0; i < indent; i++)
00591         fprintf(stderr, " ");
00592 
00593     fprintf(stderr, "NAttachments : \n");
00594 
00595     map<UInt32, AttachmentPtr>::const_iterator fcI;
00596 
00597     fcI = _attachmentMap.getValue().begin();
00598 
00599     while(fcI != _attachmentMap.getValue().end())
00600     {
00601         (*fcI).second->dump(indent + 2);
00602         ++fcI;
00603     }
00604 
00605     for(i = 0; i < indent; i++)
00606     {
00607         cerr << " ";
00608     }
00609 
00610     cerr << "{" << std::endl;
00611 
00612 
00613     for(i = 0; i < indent; i++)
00614     {
00615         cerr << " ";
00616     }
00617 
00618     cerr << "}" << std::endl;
00619 */
00620 }

void osg::Node::setParent ( const NodePtr parent  )  [inline, protected]

Definition at line 326 of file OSGNodeImpl.inl.

References _sfParent, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00327 {
00328     _sfParent.setValue(parent);
00329 }

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

Definition at line 133 of file OSGNodePtrDepImpl.inl.

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

00134 {
00135     if(source == NULL)
00136         return;
00137 
00138     setCore(source->getCore());
00139 
00140     AttachmentMap::const_iterator fcI = 
00141         source->_attachmentMap.getValue().begin();
00142     AttachmentMap::const_iterator fcEnd = 
00143         source->_attachmentMap.getValue().end();
00144 
00145     while(fcI != fcEnd)
00146     {
00147         addAttachment((*fcI).second);
00148 
00149         ++fcI;
00150     }
00151 }

void osg::Node::executeSync ( FieldContainer other,
const BitVector whichField 
) [inline, protected, virtual]

Reimplemented from osg::AttachmentContainer.

Definition at line 368 of file OSGNodeImpl.inl.

References executeSyncImpl().

00370 {
00371     this->executeSyncImpl((Node *) &other, whichField);
00372 }

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

Definition at line 336 of file OSGNodeImpl.inl.

References _mfChildren, _sfCore, _sfParent, _sfTravMask, _sfVolume, ChildrenFieldMask, CoreFieldMask, osg::AttachmentContainer::executeSyncImpl(), osg::FieldBits::NoField, ParentFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::syncWith(), osg::SField< FieldTypeT, fieldNameSpace >::syncWith(), TravMaskFieldMask, and VolumeFieldMask.

Referenced by executeSync().

00338 {
00339     Inherited::executeSyncImpl(pOther, whichField);
00340 
00341     if (FieldBits::NoField != (VolumeFieldMask & whichField))
00342     {
00343         _sfVolume.syncWith(pOther->_sfVolume);
00344     }
00345 
00346     if (FieldBits::NoField != (TravMaskFieldMask & whichField))
00347     {
00348         _sfTravMask.syncWith(pOther->_sfTravMask);
00349     }
00350 
00351     if (FieldBits::NoField != (ParentFieldMask & whichField))
00352     {
00353         _sfParent.syncWith(pOther->_sfParent);
00354     }
00355 
00356     if (FieldBits::NoField != (ChildrenFieldMask & whichField))
00357     {
00358         _mfChildren.syncWith(pOther->_mfChildren);
00359     }
00360 
00361     if (FieldBits::NoField != (CoreFieldMask & whichField))
00362     {
00363         _sfCore.syncWith(pOther->_sfCore);
00364     }
00365 }

NodePtr osg::Node::getPtr ( void   )  const [inline, protected]

Definition at line 100 of file OSGNodePtrDepImpl.inl.

Referenced by addChild(), clone(), dump(), insertChild(), invalidateVolume(), replaceChild(), replaceChildBy(), updateVolume(), and ~Node().

00101 {
00102     return NodePtr(*this);
00103 }

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

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

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

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

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

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 }

void FieldContainer::onDestroy ( void   )  [protected, virtual, inherited]


Friends And Related Function Documentation

friend class FieldContainer [friend]

Reimplemented from osg::AttachmentContainer.

Definition at line 243 of file OSGNodeImpl.h.

friend class FieldContainerType [friend]

Reimplemented from osg::AttachmentContainer.

Definition at line 244 of file OSGNodeImpl.h.


Member Data Documentation

Initial value:

        (TypeTraits<BitVector>::One << Node::VolumeFieldId     )

Definition at line 97 of file OSGNodeImpl.h.

Referenced by changed(), copyFromBin(), copyToBin(), osg::BINWriter::doIndexFC(), executeSyncImpl(), getBinSize(), invalidateVolume(), and updateVolume().

Initial value:

        (TypeTraits<BitVector>::One << Node::TravMaskFieldId   )

Definition at line 98 of file OSGNodeImpl.h.

Referenced by changed(), copyFromBin(), copyToBin(), executeSyncImpl(), and getBinSize().

Initial value:

        (TypeTraits<BitVector>::One << Node::ParentFieldId     )

Definition at line 99 of file OSGNodeImpl.h.

Referenced by addChild(), copyFromBin(), copyToBin(), executeSyncImpl(), getBinSize(), insertChild(), replaceChild(), replaceChildBy(), subChild(), and ~Node().

FieldDescription * Node::_desc [static, protected]

Reimplemented from osg::AttachmentContainer.

Definition at line 250 of file OSGNodeImpl.h.

FieldContainerType Node::_type [static, protected]

Reimplemented from osg::AttachmentContainer.

Definition at line 251 of file OSGNodeImpl.h.

const NodePtr Node::NullNode [static, protected]

Definition at line 253 of file OSGNodeImpl.h.

Referenced by replaceChild(), replaceChildBy(), subChild(), and ~Node().

Definition at line 269 of file OSGNodeImpl.h.

Referenced by getOcclusionMask(), and setOcclusionMask().

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

Initial value:

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

Definition at line 75 of file OSGFieldContainerImpl.h.

const BitVector osg::FieldContainer::MTInfluenceMask = 0x00 [static, inherited]

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

Definition at line 77 of file OSGFieldContainerImpl.h.

const bool osg::FieldContainer::isNodeCore = false [static, inherited]

Reimplemented in osg::NodeCore.

Definition at line 181 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:05:03 2008 for OpenSG by  doxygen 1.5.5