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

osg::Material Class Reference
[Materials]

Abstract Material base class. See Materials for a description. More...

#include <OSGMaterial.h>

Inheritance diagram for osg::Material:

osg::MaterialBase osg::AttachmentContainer osg::FieldContainer osg::ChunkMaterialBase osg::MultiPassMaterialBase osg::ChunkMaterial osg::MultiPassMaterial osg::DVRAppearanceBase osg::FresnelMaterialBase osg::PhongMaterialBase osg::SimpleMaterialBase osg::DVRAppearance osg::FresnelMaterial osg::PhongMaterial osg::SimpleMaterial osg::SimpleTexturedMaterialBase osg::SimpleTexturedMaterial List of all members.

Rendering

virtual void draw (DrawFunctor &func, DrawActionBase *action)=0
virtual void draw (Geometry *geo, DrawActionBase *action)=0
virtual StatePtr makeState (void)=0
virtual void rebuildState (void)=0
StatePtr getState (void)
virtual bool isTransparent (void) const =0
*typedef TypedFunctor1Base<
Action::ResultE, PtrCallArg<
DrawActionBase > > 
DrawFunctor

Public Types

typedef MaterialPtr Ptr
enum  { SortKeyFieldId = Inherited::NextFieldId, NextFieldId = SortKeyFieldId + 1 }

Public Member Functions

Sync
*virtual void changed (BitVector whichField, UInt32 origin)
Output
*virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
Comparison
*virtual bool operator< (const Material &other) const
virtual bool operator== (const Material &other) const
virtual bool operator!= (const Material &other) const
FieldContainer Get
*virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Field Get
*SFInt32getSFSortKey (void)
 Get the Material::_sfSortKey field.
Int32getSortKey (void)
 Get the value of the Material::_sfSortKey field.
const Int32getSortKey (void) const
 Get the value of the Material::_sfSortKey field.
Field Set
*void setSortKey (const Int32 &value)
 Set the value of the Material::_sfSortKey field.
Binary Access
*virtual UInt32 getBinSize (const BitVector &whichField)
virtual void copyToBin (BinaryDataHandler &pMem, const BitVector &whichField)
virtual void copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField)
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)
Field Access *SFAttachmentMapgetSFAttachments (void)
Clone
*virtual FieldContainerPtr shallowCopy (void) const =0

Static Public Member Functions

Class Get
*static const char * getClassname (void)
Class Get
*static FieldContainerTypegetClassType (void)
 access the type of the class
static UInt32 getClassTypeId (void)
 access the numerical type of the class

Static Public Attributes

static const osg::BitVector SortKeyFieldMask
static const osg::BitVector MTInfluenceMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
Constants
*static const Int32 NoStateSorting = 0x7fffffff

Protected Member Functions

Constructors
Material (void)
 Material (const Material &source)
Destructors
*virtual ~Material (void)
Sync
*void executeSyncImpl (MaterialBase *pOther, const BitVector &whichField)
virtual void executeSync (FieldContainer &other, const BitVector &whichField)
Sync
void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Pointer
*AttachmentContainerPtr getPtr (void)
MT Destruction
*virtual void onDestroy (void)

Protected Attributes

StatePtr _pState
Fields
*SFInt32 _sfSortKey
Fields
*SFAttachmentMap _attachmentMap

Private Types

typedef MaterialBase Inherited

Private Member Functions

void operator= (const Material &source)

Static Private Member Functions

static void initMethod (void)

Friends

class FieldContainer
class MaterialBase

Detailed Description

The material base class.

Ext: The Material has two interfaces to return a State that represents it. osg::Material::makeState() creates a new osg::State and returns it. This is ok for rare use, but for every frame this is going to be too expensive. For these cases osg::Material::rebuildState() and osg::Material::getState() are used, which modify and return an internal copy of the State.

The other method to implement is osg::Material::isTransparent(), to identify transparent materials to be rendered after the opaque ones.

Definition at line 62 of file OSGMaterial.h.


Member Typedef Documentation

typedef MaterialBase osg::Material::Inherited [private]
 

Reimplemented from osg::MaterialBase.

Reimplemented in osg::ChunkMaterial, osg::ChunkMaterialBase, osg::FresnelMaterial, osg::FresnelMaterialBase, osg::MultiPassMaterial, osg::MultiPassMaterialBase, osg::PhongMaterial, osg::PhongMaterialBase, osg::SimpleMaterial, osg::SimpleMaterialBase, osg::SimpleTexturedMaterial, osg::SimpleTexturedMaterialBase, osg::DVRAppearance, and osg::DVRAppearanceBase.

Definition at line 161 of file OSGMaterial.h.

typedef MaterialPtr osg::MaterialBase::Ptr [inherited]
 

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 90 of file OSGMaterialBase.h.


Member Enumeration Documentation

anonymous enum [inherited]
 

Enumerator:
SortKeyFieldId 
NextFieldId 

Reimplemented from osg::AttachmentContainer.

Definition at line 92 of file OSGMaterialBase.h.

00093     {
00094         SortKeyFieldId = Inherited::NextFieldId,
00095         NextFieldId    = SortKeyFieldId + 1
00096     };


Constructor & Destructor Documentation

Material::Material void   )  [protected]
 

Definition at line 129 of file OSGMaterial.cpp.

00129                        :
00130     Inherited(),
00131     _pState  ()
00132 {
00133 }

Material::Material const Material source  )  [protected]
 

Definition at line 135 of file OSGMaterial.cpp.

00135                                          :
00136     Inherited(source),
00137     _pState  ()
00138 {
00139 // Doing this kills using prototypes with preset states. 
00140 // What's the point of this anyway? Sharing _pState between Materials never
00141 // makes sense
00142 //    setRefdCP(_pState, source._pState); 
00143 }

Material::~Material void   )  [protected, virtual]
 

Definition at line 145 of file OSGMaterial.cpp.

References _pState, and osg::subRefCP().

00146 {
00147     subRefCP(_pState);
00148 }


Member Function Documentation

* static const char* osg::Material::getClassname void   )  [inline, static]
 

Reimplemented in osg::ChunkMaterial, and osg::SimpleMaterial.

Definition at line 71 of file OSGMaterial.h.

00071 { return "Material"; };

void Material::changed BitVector  whichField,
UInt32  origin
[virtual]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, osg::SimpleTexturedMaterial, and osg::DVRAppearance.

Definition at line 157 of file OSGMaterial.cpp.

References osg::AttachmentContainer::changed(), and rebuildState().

Referenced by osg::MultiPassMaterial::changed(), and osg::ChunkMaterial::changed().

00158 {
00159     Inherited::changed(whichField, origin);
00160 
00161     rebuildState();
00162 }

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

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, osg::SimpleTexturedMaterial, and osg::DVRAppearance.

Definition at line 166 of file OSGMaterial.cpp.

References SLOG.

00168 {
00169     SLOG << "Material::dump called: NIY!" << std::endl;
00170 //   Inherited::dump(uiIndent, bvFlags);
00171 }

virtual void osg::Material::draw DrawFunctor func,
DrawActionBase action
[pure virtual]
 

Implemented in osg::ChunkMaterial, and osg::MultiPassMaterial.

Referenced by osg::DVRVolume::doDraw(), and osg::MaterialDrawable::drawActionHandler().

virtual void osg::Material::draw Geometry geo,
DrawActionBase action
[pure virtual]
 

Implemented in osg::ChunkMaterial, and osg::MultiPassMaterial.

osg::Material::makeState void   )  [pure virtual]
 

Creates an instance of a osg::State that is used to represent the material. This is used by the osg::DrawAction.

Implemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, and osg::SimpleTexturedMaterial.

osg::Material::rebuildState void   )  [pure virtual]
 

Update the internal osg::State.

Implemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, and osg::SimpleTexturedMaterial.

Referenced by changed(), osg::RenderAction::dropFunctor(), and osg::RenderAction::dropGeometry().

StatePtr Material::getState void   ) 
 

Access the internal osg::State, used by the osg::RenderAction.

Definition at line 152 of file OSGMaterial.cpp.

References _pState.

Referenced by osg::RenderAction::dropFunctor(), and osg::RenderAction::dropGeometry().

00153 {
00154     return _pState;
00155 }

osg::Material::isTransparent void   )  const [pure virtual]
 

Check if the Material is transparent and thus has to be rendered afte the opaque ones.

Implemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, and osg::SimpleTexturedMaterial.

Referenced by osg::RenderAction::dropFunctor(), and osg::RenderAction::dropGeometry().

bool Material::operator< const Material other  )  const [virtual]
 

Definition at line 175 of file OSGMaterial.cpp.

00176 {
00177     return this < &other;
00178 }

bool Material::operator== const Material other  )  const [virtual]
 

Definition at line 180 of file OSGMaterial.cpp.

References _pState.

00181 {
00182     return _pState == other._pState;
00183 }

bool Material::operator!= const Material other  )  const [virtual]
 

Definition at line 185 of file OSGMaterial.cpp.

00186 {
00187     return ! (*this == other);
00188 }

void Material::initMethod void   )  [static, private]
 

Reimplemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, osg::SimpleTexturedMaterial, and osg::DVRAppearance.

Definition at line 114 of file OSGMaterial.cpp.

00115 {
00116 }

void osg::Material::operator= const Material source  )  [private]
 

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

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 58 of file OSGMaterialBase.inl.

References osg::MaterialBase::_type.

00059 {
00060     return _type; 
00061 } 

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

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 65 of file OSGMaterialBase.inl.

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

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

FieldContainerType & MaterialBase::getType void   )  [virtual, inherited]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 106 of file OSGMaterialBase.cpp.

References osg::MaterialBase::_type.

00107 {
00108     return _type; 
00109 } 

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

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 111 of file OSGMaterialBase.cpp.

References osg::MaterialBase::_type.

00112 {
00113     return _type;
00114 } 

UInt32 MaterialBase::getContainerSize void   )  const [virtual, inherited]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 117 of file OSGMaterialBase.cpp.

00118 { 
00119     return sizeof(Material); 
00120 }

SFInt32 * osg::MaterialBase::getSFSortKey void   )  [inline, inherited]
 

Definition at line 75 of file OSGMaterialBase.inl.

References osg::MaterialBase::_sfSortKey.

00076 {
00077     return &_sfSortKey;
00078 }

Int32 & osg::MaterialBase::getSortKey void   )  [inline, inherited]
 

Definition at line 83 of file OSGMaterialBase.inl.

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

Referenced by osg::RenderAction::dropFunctor(), and osg::RenderAction::dropGeometry().

00084 {
00085     return _sfSortKey.getValue();
00086 }

const Int32 & osg::MaterialBase::getSortKey void   )  const [inline, inherited]
 

Definition at line 90 of file OSGMaterialBase.inl.

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

00091 {
00092     return _sfSortKey.getValue();
00093 }

void osg::MaterialBase::setSortKey const Int32 value  )  [inline, inherited]
 

Definition at line 97 of file OSGMaterialBase.inl.

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

00098 {
00099     _sfSortKey.setValue(value);
00100 }

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

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 179 of file OSGMaterialBase.cpp.

References osg::MaterialBase::_sfSortKey, osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::AttachmentContainer::getBinSize(), osg::FieldBits::NoField, and osg::MaterialBase::SortKeyFieldMask.

Referenced by osg::MultiPassMaterialBase::getBinSize(), and osg::ChunkMaterialBase::getBinSize().

00180 {
00181     UInt32 returnValue = Inherited::getBinSize(whichField);
00182 
00183     if(FieldBits::NoField != (SortKeyFieldMask & whichField))
00184     {
00185         returnValue += _sfSortKey.getBinSize();
00186     }
00187 
00188 
00189     return returnValue;
00190 }

void MaterialBase::copyToBin BinaryDataHandler pMem,
const BitVector whichField
[virtual, inherited]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 192 of file OSGMaterialBase.cpp.

References osg::MaterialBase::_sfSortKey, osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::AttachmentContainer::copyToBin(), osg::FieldBits::NoField, and osg::MaterialBase::SortKeyFieldMask.

Referenced by osg::MultiPassMaterialBase::copyToBin(), and osg::ChunkMaterialBase::copyToBin().

00194 {
00195     Inherited::copyToBin(pMem, whichField);
00196 
00197     if(FieldBits::NoField != (SortKeyFieldMask & whichField))
00198     {
00199         _sfSortKey.copyToBin(pMem);
00200     }
00201 
00202 
00203 }

void MaterialBase::copyFromBin BinaryDataHandler pMem,
const BitVector whichField
[virtual, inherited]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 205 of file OSGMaterialBase.cpp.

References osg::MaterialBase::_sfSortKey, osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::AttachmentContainer::copyFromBin(), osg::FieldBits::NoField, and osg::MaterialBase::SortKeyFieldMask.

Referenced by osg::MultiPassMaterialBase::copyFromBin(), and osg::ChunkMaterialBase::copyFromBin().

00207 {
00208     Inherited::copyFromBin(pMem, whichField);
00209 
00210     if(FieldBits::NoField != (SortKeyFieldMask & whichField))
00211     {
00212         _sfSortKey.copyFromBin(pMem);
00213     }
00214 
00215 
00216 }

void MaterialBase::executeSyncImpl MaterialBase pOther,
const BitVector whichField
[protected, inherited]
 

Definition at line 219 of file OSGMaterialBase.cpp.

References osg::MaterialBase::_sfSortKey, osg::AttachmentContainer::executeSyncImpl(), osg::FieldBits::NoField, osg::MaterialBase::SortKeyFieldMask, and osg::SField< FieldTypeT, fieldNameSpace >::syncWith().

Referenced by osg::MaterialBase::executeSync(), osg::MultiPassMaterialBase::executeSyncImpl(), and osg::ChunkMaterialBase::executeSyncImpl().

00221 {
00222 
00223     Inherited::executeSyncImpl(pOther, whichField);
00224 
00225     if(FieldBits::NoField != (SortKeyFieldMask & whichField))
00226         _sfSortKey.syncWith(pOther->_sfSortKey);
00227 
00228 
00229 }

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

Definition at line 316 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::AttachmentContainer::AttachmentsFieldMask, osg::FieldContainer::executeSyncImpl(), osg::FieldBits::NoField, and osg::SField< FieldTypeT, fieldNameSpace >::syncWith().

Referenced by osg::AttachmentContainer::executeSync(), osg::WindowBase::executeSyncImpl(), osg::ViewportBase::executeSyncImpl(), osg::ShaderParameterBase::executeSyncImpl(), osg::Node::executeSyncImpl(), osg::NodeCore::executeSyncImpl(), osg::MaterialBase::executeSyncImpl(), osg::ImageComposerBase::executeSyncImpl(), osg::ImageBase::executeSyncImpl(), osg::ForegroundBase::executeSyncImpl(), osg::DisplayCalibrationBase::executeSyncImpl(), osg::CameraBase::executeSyncImpl(), and osg::BackgroundBase::executeSyncImpl().

00319 {
00320     Inherited::executeSyncImpl(pOther, whichField);
00321 
00322     if (FieldBits::NoField != (AttachmentsFieldMask & whichField))
00323     {
00324         _attachmentMap.syncWith(pOther->_attachmentMap);
00325     }
00326 }

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

Definition at line 333 of file OSGFieldContainerImpl.inl.

Referenced by osg::StateBase::executeSyncImpl(), osg::DVRShaderBase::executeSyncImpl(), osg::DVRClipGeometryBase::executeSyncImpl(), osg::AttachmentContainer::executeSyncImpl(), and osg::Attachment::executeSyncImpl().

00335 {
00336 }

void MaterialBase::executeSync FieldContainer other,
const BitVector whichField
[protected, virtual, inherited]
 

Reimplemented from osg::AttachmentContainer.

Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase.

Definition at line 124 of file OSGMaterialBase.cpp.

References osg::MaterialBase::executeSyncImpl().

00126 {
00127     this->executeSyncImpl((MaterialBase *) &other, whichField);
00128 }

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 }

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

Definition at line 352 of file OSGAttachmentContainer.cpp.

Referenced by osg::AttachmentContainer::subAttachment(), and