Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::NodeCore Class Reference
[Field Container]

#include <OSGNodeCore.h>

Inheritance diagram for osg::NodeCore:

osg::AttachmentContainer osg::FieldContainer osg::DrawableBase osg::DVRVolumeBase osg::GroupBase osg::InlineBase osg::LightBase osg::LightEnvBase osg::StateSortingGroupBase osg::Drawable osg::DVRVolume osg::Group osg::Inline osg::Light osg::LightEnv osg::StateSortingGroup osg::MaterialDrawableBase osg::BillboardBase osg::DistanceLODBase osg::InverseTransformBase osg::MaterialGroupBase osg::MaterialPoolBase osg::ProxyGroupBase osg::SwitchBase osg::TransformBase osg::DirectionalLightBase osg::PointLightBase List of all members.

General Fieldcontainer Declaration

*virtual osg::FieldContainerTypegetType (void)
virtual const osg::FieldContainerTypegetType (void) const
virtual osg::UInt32 getContainerSize (void) const
static osg::FieldContainerTypegetClassType (void)
static osg::UInt32 getClassTypeId (void)

Public Types

enum  { ParentsFieldId = Inherited::NextFieldId, NextFieldId = ParentsFieldId + 1 }

Public Member Functions

Parents
*MFNodePtrgetParents (void)
const MFNodePtrgetParents (void) const
MFNodePtrgetMFParents (void)
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
Volume
*virtual void invalidateVolume (void)
Changed
*virtual void changed (BitVector whichField, UInt32 origin)
Clone
*virtual FieldContainerPtr shallowCopy (void) const =0

Static Public Attributes

static const BitVector ParentsFieldMask = (1 << NodeCore::ParentsFieldId )
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
static const BitVector MTInfluenceMask = 0x00
CoredNodePtr helper
*static const bool isNodeCore = true

Protected Types

typedef AttachmentContainer Inherited

Protected Member Functions

Constructors
NodeCore (void)
 NodeCore (const NodeCore &obj)
Destructor
*virtual ~NodeCore (void)
MT Destruction
*virtual void onDestroy (void)
Set / Get Parents
*void addParent (const NodePtr &parent)
void subParent (const NodePtr &parent)
Pointer
*NodeCorePtr getPtr (void) const
Sync
*virtual void executeSync (FieldContainer &other, const BitVector &whichField)
void executeSyncImpl (NodeCore *pOther, const BitVector &whichField)
Transformation
*virtual void accumulateMatrix (Matrix &result)
Volume
*virtual void adjustVolume (Volume &volume)

Protected Attributes

Fields
*MFNodePtr _parents

Static Protected Attributes

Type information
*static FieldDescription_desc []
static FieldContainerType _type

Private Member Functions

void operator= (const NodeCore &source)

Friends

class Node
class Attachment
class FieldContainer

Detailed Description

Definition at line 75 of file OSGNodeCore.h.


Member Typedef Documentation

typedef AttachmentContainer osg::NodeCore::Inherited [protected]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::Drawable, osg::DrawableBase, osg::MaterialDrawable, osg::MaterialDrawableBase, osg::Geometry, osg::GeometryBase, osg::Slices, osg::SlicesBase, osg::Particles, osg::ParticlesBase, osg::DVRGeometry, osg::DVRGeometryBase, osg::DVRVolume, osg::DVRVolumeBase, osg::Surface, osg::SurfaceBase, osg::Group, osg::GroupBase, osg::DirectionalLight, osg::DirectionalLightBase, osg::Light, osg::LightBase, osg::LightEnv, osg::LightEnvBase, osg::PointLight, osg::PointLightBase, osg::SpotLight, osg::SpotLightBase, osg::Billboard, osg::BillboardBase, osg::ComponentTransform, osg::ComponentTransformBase, osg::DistanceLOD, osg::DistanceLODBase, osg::Inline, osg::InlineBase, osg::InverseTransform, osg::InverseTransformBase, osg::MaterialGroup, osg::MaterialGroupBase, osg::MaterialPool, osg::MaterialPoolBase, osg::ProxyGroup, osg::ProxyGroupBase, osg::StateSortingGroup, osg::StateSortingGroupBase, osg::Switch, osg::SwitchBase, osg::Transform, and osg::TransformBase.

Definition at line 81 of file OSGNodeCore.h.


Member Enumeration Documentation

anonymous enum
 

Enumerator:
ParentsFieldId 
NextFieldId 

Reimplemented from osg::AttachmentContainer.

Definition at line 87 of file OSGNodeCore.h.

00088     { 
00089         ParentsFieldId     = Inherited::NextFieldId, 
00090         NextFieldId        = ParentsFieldId + 1
00091     };


Constructor & Destructor Documentation

osg::NodeCore::NodeCore void   )  [inline, protected]
 

Definition at line 117 of file OSGNodeCore.inl.

00117                        :
00118      Inherited(),
00119     _parents  ()
00120 {
00121 }

osg::NodeCore::NodeCore const NodeCore obj  )  [inline, protected]
 

Definition at line 124 of file OSGNodeCore.inl.

00124                                       :
00125      Inherited(obj),
00126     _parents  (   )
00127 {
00128 }

osg::NodeCore::~NodeCore void   )  [inline, protected, virtual]
 

Definition at line 134 of file OSGNodeCore.inl.

00135 {
00136 }


Member Function Documentation

osg::FieldContainerType & NodeCore::getType void   )  [virtual]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

Definition at line 75 of file OSGNodeCore.cpp.

Referenced by osg::Action::callEnter(), osg::Action::callLeave(), dump(), osg::VRMLShapeDesc::getFieldAndDesc(), osg::SplitGraphOp::isGroup(), osg::MergeGraphOp::isGroup(), osg::SplitGraphOp::splitNode(), osg::SingleTypeGraphOp< Type >::traverseEnter(), osg::SingleTypeGraphOp< Type >::traverseLeave(), and osg::VerifyGeoGraphOp::travNodeEnter().

const osg::FieldContainerType & NodeCore::getType void   )  const [virtual]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

Definition at line 75 of file OSGNodeCore.cpp.

static osg ::FieldContainerType& osg::NodeCore::getClassType void   )  [static]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

Referenced by osg::FieldContainerType::initBaseType().

static osg ::UInt32 osg::NodeCore::getClassTypeId void   )  [static]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

osg::UInt32 NodeCore::getContainerSize void   )  const [virtual]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

Definition at line 75 of file OSGNodeCore.cpp.

MFNodePtr & osg::NodeCore::getParents void   )  [inline]
 

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]
 

Definition at line 62 of file OSGNodeCore.inl.

References _parents.

00063 {
00064     return _parents;
00065 }

MFNodePtr * osg::NodeCore::getMFParents void   )  [inline]
 

Definition at line 68 of file OSGNodeCore.inl.

References _parents.

00069 {
00070     return &_parents;
00071 }

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

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

Definition at line 77 of file OSGNodeCore.inl.

References _parents, osg::MField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::AttachmentContainer::getBinSize(), osg::FieldBits::NoField, and ParentsFieldMask.

Referenced by osg::StateSortingGroupBase::getBinSize(), osg::LightEnvBase::getBinSize(), osg::LightBase::getBinSize(), osg::InlineBase::getBinSize(), osg::GroupBase::getBinSize(), osg::DVRVolumeBase::getBinSize(), and osg::DrawableBase::getBinSize().

00078 {
00079     UInt32 returnValue = Inherited::getBinSize(whichField);
00080 
00081     if(FieldBits::NoField != (ParentsFieldMask & whichField))
00082     {
00083         returnValue += _parents.getBinSize();
00084     }
00085 
00086     return returnValue;
00087 }

void osg::NodeCore::copyToBin BinaryDataHandler pMem,
const BitVector whichField
[inline, virtual]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

Definition at line 90 of file OSGNodeCore.inl.

References _parents, osg::MField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::AttachmentContainer::copyToBin(), osg::FieldBits::NoField, and ParentsFieldMask.

Referenced by osg::StateSortingGroupBase::copyToBin(), osg::LightEnvBase::copyToBin(), osg::LightBase::copyToBin(), osg::InlineBase::copyToBin(), osg::GroupBase::copyToBin(), osg::DVRVolumeBase::copyToBin(), and osg::DrawableBase::copyToBin().

00092 {
00093     Inherited::copyToBin(pMem, whichField);
00094 
00095     if(FieldBits::NoField != (ParentsFieldMask & whichField))
00096     {
00097         _parents.copyToBin(pMem);
00098     }
00099 }

void osg::NodeCore::copyFromBin BinaryDataHandler pMem,
const BitVector whichField
[inline, virtual]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

Definition at line 102 of file OSGNodeCore.inl.

References _parents, osg::MField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::AttachmentContainer::copyFromBin(), osg::FieldBits::NoField, and ParentsFieldMask.

Referenced by osg::StateSortingGroupBase::copyFromBin(), osg::LightEnvBase::copyFromBin(), osg::LightBase::copyFromBin(), osg::InlineBase::copyFromBin(), osg::GroupBase::copyFromBin(), osg::DVRVolumeBase::copyFromBin(), and osg::DrawableBase::copyFromBin().

00104 {
00105     Inherited::copyFromBin(pMem, whichField);
00106 
00107     if(FieldBits::NoField != (ParentsFieldMask & whichField))
00108     {
00109         _parents.copyFromBin(pMem);
00110     }
00111 }

void NodeCore::dump UInt32  uiIndent = 0,
const BitVector  bvFlags = 0
const [virtual]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::Drawable, osg::MaterialDrawable, osg::Geometry, osg::Slices, osg::Particles, osg::DVRGeometry, osg::DVRVolume, osg::Surface, osg::Group, osg::DirectionalLight, osg::Light, osg::LightEnv, osg::PointLight, osg::SpotLight, osg::Billboard, osg::ComponentTransform, osg::DistanceLOD, osg::Inline, osg::InverseTransform, osg::MaterialGroup, osg::MaterialPool, osg::ProxyGroup, osg::StateSortingGroup, osg::Switch, and osg::Transform.

Definition at line 87 of file OSGNodeCore.cpp.

References osg::AttachmentContainer::_attachmentMap, _parents, osg::AttachmentContainer::dump(), osg::FieldContainerPtrBase::getFieldContainerId(), osg::TypeBase::getName(), getPtr(), getType(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::indentLog(), PLOG, and osg::MField< FieldTypeT, fieldNameSpace >::size().

Referenced by osg::StateSortingGroup::dump(), osg::LightEnv::dump(), osg::Light::dump(), and osg::Group::dump().

00089 {
00090     UInt32 i;
00091 
00092     NodeCorePtr thisP = getPtr();
00093 
00094 //    thisP.dump(0, FCDumpFlags::RefCount);
00095 
00096     indentLog(uiIndent, PLOG);
00097 
00098     PLOG << "Core"
00099          << "("
00100          << std::dec
00101          << thisP.getFieldContainerId()
00102          << ") : " << getType().getName()
00103          << " "
00104          << _attachmentMap.getValue().size()
00105          << " attachments | "
00106          << this
00107          << std::endl;
00108 
00109     indentLog(uiIndent, PLOG);
00110     PLOG << "[" << std::endl;
00111 
00112     indentLog(uiIndent + 4, PLOG);
00113     PLOG << "Parents : " << std::endl;
00114 
00115     for(i = 0; i < _parents.size(); i++)
00116     {
00117         indentLog(uiIndent + 4, PLOG);
00118         PLOG << "           " << i << ") " << &(*(_parents[i])) << std::endl;
00119     }
00120 
00121     indentLog(uiIndent, PLOG);
00122     PLOG << "]" << std::endl;
00123 
00124     indentLog(uiIndent, PLOG);
00125     PLOG << "{" << std::endl;
00126 
00127     Inherited::dump(uiIndent, bvFlags);
00128 
00129     indentLog(uiIndent, PLOG);
00130     PLOG << "}" << std::endl;
00131 }

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

Definition at line 237 of file OSGNodeCore.inl.

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

Referenced by osg::Transform::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]
 

Reimplemented from osg::FieldContainer.

Reimplemented in osg::MaterialPool.

Definition at line 142 of file OSGNodeCore.inl.

00143 {
00144 }

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

Definition at line 150 of file OSGNodeCore.inl.

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

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

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

Definition at line 156 of file OSGNodeCore.inl.

References _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]
 

Reimplemented in osg::Geometry.

Definition at line 170 of file OSGNodeCore.inl.

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

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

void osg::NodeCore::executeSync FieldContainer other,
const BitVector whichField
[inline, protected, virtual]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::DrawableBase, osg::MaterialDrawableBase, osg::GeometryBase, osg::SlicesBase, osg::ParticlesBase, osg::DVRGeometryBase, osg::DVRVolumeBase, osg::SurfaceBase, osg::GroupBase, osg::DirectionalLightBase, osg::LightBase, osg::LightEnvBase, osg::PointLightBase, osg::SpotLightBase, osg::BillboardBase, osg::ComponentTransformBase, osg::DistanceLODBase, osg::InlineBase, osg::InverseTransformBase, osg::MaterialGroupBase, osg::MaterialPoolBase, osg::ProxyGroupBase, osg::StateSortingGroupBase, osg::SwitchBase, and osg::TransformBase.

Definition at line 192 of file OSGNodeCore.inl.

References executeSyncImpl().

00194 {
00195     this->executeSyncImpl((NodeCore *) &other, whichField);
00196 }

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

Definition at line 180 of file OSGNodeCore.inl.

References _parents, osg::AttachmentContainer::executeSyncImpl(), osg::FieldBits::NoField, ParentsFieldMask, and osg::MField< FieldTypeT, fieldNameSpace >::syncWith().

Referenced by executeSync(), osg::StateSortingGroupBase::executeSyncImpl(), osg::LightEnvBase::executeSyncImpl(), osg::LightBase::executeSyncImpl(), osg::InlineBase::executeSyncImpl(), osg::GroupBase::executeSyncImpl(), osg::DVRVolumeBase::executeSyncImpl(), and osg::DrawableBase::executeSyncImpl().

00182 {
00183     Inherited::executeSyncImpl(pOther, whichField);
00184 
00185     if(FieldBits::NoField != (ParentsFieldMask & whichField))
00186     {
00187         _parents.syncWith(pOther->_parents);
00188     }
00189 }

void osg::NodeCore::accumulateMatrix Matrix result  )  [inline, protected, virtual]
 

Reimplemented in osg::Billboard, osg::InverseTransform, and osg::Transform.

Definition at line 224 of file OSGNodeCore.inl.

00225 {
00226 }

void osg::NodeCore::adjustVolume Volume volume  )  [inline, protected, virtual]
 

Reimplemented in osg::Geometry, osg::Slices, osg::Particles, osg::DVRVolume, osg::Surface, osg::Billboard, osg::InverseTransform, osg::ProxyGroup, and osg::Transform.

Definition at line 232 of file OSGNodeCore.inl.

Referenced by osg::Billboard::adjustVolume().

00233 {
00234 }

void osg::NodeCore::operator= const NodeCore 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(), 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]
 

Definition at line 170 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap.

00171 {
00172     return &_attachmentMap;
00173 }

void AttachmentContainer::changed BitVector  whichField,
UInt32  origin
[virtual, inherited]
 

Reimplemented from osg::FieldContainer.

Reimplemented in osg::ClusterWindow, osg::DisplayCalibration, osg::ImageComposer, osg::MultiDisplayWindow, osg::SortFirstWindow, osg::Node, osg::Image, osg::ChunkMaterial, osg::FresnelMaterial, osg::Material, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, osg::SimpleTexturedMaterial, osg::Drawable, osg::MaterialDrawable, osg::Geometry, osg::Slices, osg::Particles, osg::DVRAppearance, osg::DVRGeometry, osg::DVRVolume, osg::Surface, osg::Group, osg::DirectionalLight, osg::Light,