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

osg::DistanceLOD Class Reference

Distance-based Level Of Detail. More...

#include <OSGDistanceLOD.h>

Inheritance diagram for osg::DistanceLOD:

osg::DistanceLODBase osg::Group osg::GroupBase osg::NodeCore osg::AttachmentContainer osg::FieldContainer List of all members.

Public Types

typedef DistanceLODPtr Ptr
enum  { CenterFieldId = Inherited::NextFieldId, RangeFieldId = CenterFieldId + 1, NextFieldId = RangeFieldId + 1 }

Public Member Functions

Sync
*virtual void changed (BitVector whichField, UInt32 origin)
Dump
*virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
FieldContainer Get
*virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Field Get
*SFPnt3fgetSFCenter (void)
 Get the DistanceLOD::_sfCenter field.
MFReal32getMFRange (void)
 Get the DistanceLOD::_mfRange field.
Pnt3fgetCenter (void)
 Get the value of the DistanceLOD::_sfCenter field.
const Pnt3fgetCenter (void) const
 Get the value of the DistanceLOD::_sfCenter field.
Real32getRange (const UInt32 index)
 Get the value of the index element the DistanceLOD::_mfRange field.
MFReal32getRange (void)
 Get the DistanceLOD::_mfRange field.
const MFReal32getRange (void) const
 Get the DistanceLOD::_mfRange field.
Field Set
*void setCenter (const Pnt3f &value)
 Set the value of the DistanceLOD::_sfCenter 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)
Copy
*virtual FieldContainerPtr shallowCopy (void) const

Static Public Member Functions

Class Get
*static FieldContainerTypegetClassType (void)
 access the type of the class
static UInt32 getClassTypeId (void)
 access the numerical type of the class
Construction
*static DistanceLODPtr create (void)
 create a new instance of the class
static DistanceLODPtr createEmpty (void)
 create an empty new instance of the class, do not copy the prototype

Static Public Attributes

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

Protected Types

typedef DistanceLODBase Inherited

Protected Member Functions

Constructors
DistanceLOD (void)
 DistanceLOD (const DistanceLOD &source)
Destructors
*virtual ~DistanceLOD (void)
Draw
*Action::ResultE draw (Action *action)
Sync
*void executeSyncImpl (DistanceLODBase *pOther, const BitVector &whichField)
virtual void executeSync (FieldContainer &other, const BitVector &whichField)

Protected Attributes

Fields
*SFPnt3f _sfCenter
MFReal32 _mfRange

Private Member Functions

void operator= (const DistanceLOD &source)
 prohibit default function (move to 'public' if needed)

Static Private Member Functions

Init
*static void initMethod (void)

Friends

class FieldContainer
class DistanceLODBase

Detailed Description

This Node manages the different levels of detail available for a Geometry and decides which one should be rendered, according to the distance from the current camera. The details of the selection process are taken from VRML97 standard.

The node chooses which child to render based on the range values in the Range multi-field and the current distance of the camera from the object. The children should be ordered from the highest level of detail to the lowest level of detail. The range values specify the distances at which to switch between the different children.

The center field is a translation offset in the local coordinate system that specified the center of the object for distance calculations. In order to calculate which level to display, first the distance is calculate from the viewpoint to the center point of the LOD node (which corresponding transformations). If the distance is less than the first range value, then the first LOD is drawn. If it is between the first and the second values, then the second LOD is drawn, and so on.

Example: Setting up a osg::DistanceLOD

Here is an example of setting up an lod core with a center and a range. You would also need to add children for the 4 LODs.

DistanceLOD lod = DistanceLOD::create();
beginEditCP(lod);
    // this is supposed to be the center of the LOD model,
    // that is, this is the point the distance is measured from
    lod->setCenter(12,1,5);
    // now we add the distances when models will change
    lod->getMFRange()->push_back(6.0);
    lod->getMFRange()->push_back(12.0);
    lod->getMFRange()->push_back(24.0);    
endEditCP(lod);

Definition at line 56 of file OSGDistanceLOD.h.


Member Typedef Documentation

typedef DistanceLODBase osg::DistanceLOD::Inherited [protected]
 

Reimplemented from osg::DistanceLODBase.

Definition at line 80 of file OSGDistanceLOD.h.

typedef DistanceLODPtr osg::DistanceLODBase::Ptr [inherited]
 

Reimplemented from osg::GroupBase.

Definition at line 91 of file OSGDistanceLODBase.h.


Member Enumeration Documentation

anonymous enum [inherited]
 

Enumerator:
CenterFieldId 
RangeFieldId 
NextFieldId 

Reimplemented from osg::NodeCore.

Definition at line 93 of file OSGDistanceLODBase.h.

00094     {
00095         CenterFieldId = Inherited::NextFieldId,
00096         RangeFieldId  = CenterFieldId + 1,
00097         NextFieldId   = RangeFieldId  + 1
00098     };


Constructor & Destructor Documentation

DistanceLOD::DistanceLOD void   )  [protected]
 

Definition at line 119 of file OSGDistanceLOD.cpp.

00119                              :
00120     Inherited()
00121 {
00122 }

DistanceLOD::DistanceLOD const DistanceLOD source  )  [protected]
 

Definition at line 124 of file OSGDistanceLOD.cpp.

00124                                                   :
00125     Inherited(source)
00126 {
00127 }

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

Definition at line 132 of file OSGDistanceLOD.cpp.

00133 {
00134 }


Member Function Documentation

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

Reimplemented from osg::Group.

Definition at line 102 of file OSGDistanceLOD.cpp.

References osg::Group::changed().

00103 {
00104     Inherited::changed(whichField, origin);
00105 }

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

Reimplemented from osg::Group.

Definition at line 110 of file OSGDistanceLOD.cpp.

References SLOG.

00112 {
00113     SLOG << "Dump DistanceLOD NI" << std::endl;
00114 }

Action::ResultE DistanceLOD::draw Action action  )  [protected]
 

Definition at line 139 of file OSGDistanceLOD.cpp.

References osg::Action::addNode(), osg::Action::Continue, osg::Action::getActNode(), osg::DrawActionBase::getCameraToWorld(), osg::DistanceLODBase::getCenter(), osg::NodePtr::getCPtr(), osg::DistanceLODBase::getMFRange(), osg::Action::getNNodes(), osg::Action::getNode(), osg::DrawActionBase::isVisible(), osg::TransformationMatrix< ValueTypeT >::mult(), osg::osgMin(), osg::osgsqrt(), osg::MField< FieldTypeT, fieldNameSpace >::size(), osg::RenderAction::top_matrix(), and osg::Action::useNodeList().

Referenced by initMethod().

00140 {
00141     DrawActionBase *da        = dynamic_cast<DrawActionBase *>(action);
00142     RenderAction   *ra        = dynamic_cast<RenderAction   *>(action);
00143 
00144     UInt32          numLevels = action->getNNodes();
00145     UInt32          numRanges = getMFRange()->size();
00146 
00147     UInt32          limit     = osgMin(numLevels, numRanges); 
00148     
00149     Int32           index     = -1;
00150 
00151     Pnt3f            eyepos(0.f, 0.f, 0.f);
00152     Pnt3f            objpos;
00153 
00154     da->getCameraToWorld().mult(eyepos);
00155 
00156     if(ra != NULL)
00157     {
00158         ra->top_matrix()              .mult(getCenter(), objpos);
00159     }
00160     else
00161     {
00162         da->getActNode()->getToWorld().mult(getCenter(), objpos);
00163     }
00164         
00165     Real32 dist = osgsqrt((eyepos[0] - objpos[0])*(eyepos[0] - objpos[0]) +
00166                           (eyepos[1] - objpos[1])*(eyepos[1] - objpos[1]) +
00167                           (eyepos[2] - objpos[2])*(eyepos[2] - objpos[2]));
00168     
00169     da->useNodeList();
00170     
00171     if(numRanges != 0 && numLevels!=0 )
00172     {
00173         if(dist < (*(getMFRange()))[0])
00174         {
00175             index = 0;
00176         } 
00177         else if(dist >= (*(getMFRange()))[numRanges-1])
00178         {
00179         index = (numLevels > numRanges) ? numRanges : (limit-1); 
00180         }
00181         else
00182         {
00183             UInt32 i = 1;
00184 
00185             while( (i < numRanges) && 
00186                   !( ((*(getMFRange()))[i-1] <= dist) && 
00187                      (dist < (*(getMFRange()))[i]   )   ) )
00188             {
00189                 i++;
00190             }
00191             
00192             index = osgMin(i, limit-1);
00193         } 
00194         
00195         if(da->isVisible(action->getNode(index).getCPtr()))
00196         {
00197             da->addNode(action->getNode(index));
00198         }
00199     }
00200 
00201     return Action::Continue;
00202 }

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

Reimplemented from osg::Group.

Definition at line 207 of file OSGDistanceLOD.cpp.

References draw(), osg::DistanceLODBase::getClassType(), osg::osgTypedMethodFunctor2BaseCPtrRef(), osg::RenderAction::registerEnterDefault(), and osg::DrawAction::registerEnterDefault().

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

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

Reimplemented from osg::GroupBase.

Definition at line 58 of file OSGDistanceLODBase.inl.

References osg::DistanceLODBase::_type.

Referenced by osg::DistanceLODBase::create(), initMethod(), osg::SplitGraphOp::isGroup(), and osg::MergeGraphOp::isGroup().

00059 {
00060     return _type; 
00061 } 

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

Reimplemented from osg::GroupBase.

Definition at line 65 of file OSGDistanceLODBase.inl.

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

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

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

Reimplemented from osg::GroupBase.

Definition at line 117 of file OSGDistanceLODBase.cpp.

References osg::DistanceLODBase::_type.

00118 {
00119     return _type; 
00120 } 

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

Reimplemented from osg::GroupBase.

Definition at line 122 of file OSGDistanceLODBase.cpp.

References osg::DistanceLODBase::_type.

00123 {
00124     return _type;
00125 } 

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

Reimplemented from osg::GroupBase.

Definition at line 137 of file OSGDistanceLODBase.cpp.

00138 { 
00139     return sizeof(DistanceLOD); 
00140 }

SFPnt3f * osg::DistanceLODBase::getSFCenter void   )  [inline, inherited]
 

Definition at line 101 of file OSGDistanceLODBase.inl.

References osg::DistanceLODBase::_sfCenter.

00102 {
00103     return &_sfCenter;
00104 }

MFReal32 * osg::DistanceLODBase::getMFRange void   )  [inline, inherited]
 

Definition at line 108 of file OSGDistanceLODBase.inl.

References osg::DistanceLODBase::_mfRange.

Referenced by draw().

00109 {
00110     return &_mfRange;
00111 }

Pnt3f & osg::DistanceLODBase::getCenter void   )  [inline, inherited]
 

Definition at line 116 of file OSGDistanceLODBase.inl.

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

Referenced by draw().

00117 {
00118     return _sfCenter.getValue();
00119 }

const Pnt3f & osg::DistanceLODBase::getCenter void   )  const [inline, inherited]
 

Definition at line 123 of file OSGDistanceLODBase.inl.

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

00124 {
00125     return _sfCenter.getValue();
00126 }

Real32 & osg::DistanceLODBase::getRange const UInt32  index  )  [inline, inherited]
 

Definition at line 138 of file OSGDistanceLODBase.inl.

References osg::DistanceLODBase::_mfRange.

00139 {
00140     return _mfRange[index];
00141 }

MFReal32 & osg::DistanceLODBase::getRange void   )  [inline, inherited]
 

Definition at line 145 of file OSGDistanceLODBase.inl.

References osg::DistanceLODBase::_mfRange.

00146 {
00147     return _mfRange;
00148 }

const MFReal32 & osg::DistanceLODBase::getRange void   )  const [inline, inherited]
 

Definition at line 152 of file OSGDistanceLODBase.inl.

References osg::DistanceLODBase::_mfRange.

00153 {
00154     return _mfRange;
00155 }

void osg::DistanceLODBase::setCenter const Pnt3f value  )  [inline, inherited]
 

Definition at line 130 of file OSGDistanceLODBase.inl.

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

00131 {
00132     _sfCenter.setValue(value);
00133 }

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

Reimplemented from osg::GroupBase.

Definition at line 202 of file OSGDistanceLODBase.cpp.

References osg::DistanceLODBase::_mfRange, osg::DistanceLODBase::_sfCenter, osg::DistanceLODBase::CenterFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::GroupBase::getBinSize(), osg::FieldBits::NoField, and osg::DistanceLODBase::RangeFieldMask.

00203 {
00204     UInt32 returnValue = Inherited::getBinSize(whichField);
00205 
00206     if(FieldBits::NoField != (CenterFieldMask & whichField))
00207     {
00208         returnValue += _sfCenter.getBinSize();
00209     }
00210 
00211     if(FieldBits::NoField != (RangeFieldMask & whichField))
00212     {
00213         returnValue += _mfRange.getBinSize();
00214     }
00215 
00216 
00217     return returnValue;
00218 }

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

Reimplemented from osg::GroupBase.

Definition at line 220 of file OSGDistanceLODBase.cpp.

References osg::DistanceLODBase::_mfRange, osg::DistanceLODBase::_sfCenter, osg::DistanceLODBase::CenterFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::GroupBase::copyToBin(), osg::FieldBits::NoField, and osg::DistanceLODBase::RangeFieldMask.

00222 {
00223     Inherited::copyToBin(pMem, whichField);
00224 
00225     if(FieldBits::NoField != (CenterFieldMask & whichField))
00226     {
00227         _sfCenter.copyToBin(pMem);
00228     }
00229 
00230     if(FieldBits::NoField != (RangeFieldMask & whichField))
00231     {
00232         _mfRange.copyToBin(pMem);
00233     }
00234 
00235 
00236 }

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

Reimplemented from osg::GroupBase.

Definition at line 238 of file OSGDistanceLODBase.cpp.

References osg::DistanceLODBase::_mfRange, osg::DistanceLODBase::_sfCenter, osg::DistanceLODBase::CenterFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::GroupBase::copyFromBin(), osg::FieldBits::NoField, and osg::DistanceLODBase::RangeFieldMask.

00240 {
00241     Inherited::copyFromBin(pMem, whichField);
00242 
00243     if(FieldBits::NoField != (CenterFieldMask & whichField))
00244     {
00245         _sfCenter.copyFromBin(pMem);
00246     }
00247 
00248     if(FieldBits::NoField != (RangeFieldMask & whichField))
00249     {
00250         _mfRange.copyFromBin(pMem);
00251     }
00252 
00253 
00254 }

DistanceLODPtr osg::DistanceLODBase::create void   )  [inline, static, inherited]
 

Reimplemented from osg::GroupBase.

Definition at line 72 of file OSGDistanceLODBase.inl.

References osg::AttachmentContainerPtr::dcast(), osg::DistanceLODBase::getClassType(), osg::FieldContainerType::getPrototype(), osg::NullFC, and osg::DistanceLODBase::shallowCopy().

Referenced by osg::VRMLLODDesc::init().

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

DistanceLODPtr osg::DistanceLODBase::createEmpty void   )  [inline, static, inherited]
 

Reimplemented from osg::GroupBase.

Definition at line 87 of file OSGDistanceLODBase.inl.

References osg::FieldContainer::newPtr().

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

FieldContainerPtr DistanceLODBase::shallowCopy void   )  const [virtual, inherited]
 

Reimplemented from osg::GroupBase.

Definition at line 128 of file OSGDistanceLODBase.cpp.

References osg::FieldContainer::newPtr().

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

00129 { 
00130     DistanceLODPtr returnValue; 
00131 
00132     newPtr(returnValue, dynamic_cast<const DistanceLOD *>(this)); 
00133 
00134     return returnValue; 
00135 }

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

Definition at line 257 of file OSGDistanceLODBase.cpp.

References osg::DistanceLODBase::_mfRange, osg::DistanceLODBase::_sfCenter, osg::DistanceLODBase::CenterFieldMask, osg::GroupBase::executeSyncImpl(), osg::FieldBits::NoField, osg::DistanceLODBase::RangeFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::syncWith(), and osg::SField< FieldTypeT, fieldNameSpace >::syncWith().

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

00259 {
00260 
00261     Inherited::executeSyncImpl(pOther, whichField);
00262 
00263     if(FieldBits::NoField != (CenterFieldMask & whichField))
00264         _sfCenter.syncWith(pOther->_sfCenter);
00265 
00266     if(FieldBits::NoField != (RangeFieldMask & whichField))
00267         _mfRange.syncWith(pOther->_mfRange);
00268 
00269 
00270 }

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

Definition at line 191 of file OSGGroupBase.cpp.

References osg::NodeCore::executeSyncImpl().

Referenced by osg::GroupBase::executeSync(), osg::TransformBase::executeSyncImpl(), osg::SwitchBase::executeSyncImpl(), osg::ProxyGroupBase::executeSyncImpl(), osg::MaterialPoolBase::executeSyncImpl(), osg::MaterialGroupBase::executeSyncImpl(), osg::InverseTransformBase::executeSyncImpl(), osg::DistanceLODBase::executeSyncImpl(), and osg::BillboardBase::executeSyncImpl().

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

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

Definition at line 180 of file OSGNodeCore.inl.

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

Referenced by osg::NodeCore::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 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 DistanceLODBase::executeSync FieldContainer other,
const BitVector whichField
[protected, virtual, inherited]
 

Reimplemented from osg::GroupBase.

Definition at line 144 of file OSGDistanceLODBase.cpp.

References osg::DistanceLODBase::executeSyncImpl().

00146 {
00147     this->executeSyncImpl((DistanceLODBase *) &other, whichField);
00148 }

Action::ResultE Group::drawEnter Action action  )  [protected, inherited]
 

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

Definition at line 100 of file OSGGroup.cpp.

References osg::Action::Continue, osg::DrawActionBase::selectVisibles(), and osg::Action::Skip.

Referenced by osg::Group::initMethod().

00101 {
00102     DrawActionBase *da = dynamic_cast<DrawActionBase *>(action);
00103 
00104     if(da->selectVisibles() == 0)
00105         return Action::Skip;
00106     
00107     return Action::Continue;
00108 }

Action::ResultE Group::drawLeave Action action  )  [protected, inherited]
 

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

Definition at line 110 of file OSGGroup.cpp.

References osg::Action::Continue.

Referenced by osg::Group::initMethod().

00111 {
00112     return Action::Continue;
00113 }

Action::ResultE Group::renderEnter Action action  )  [protected, inherited]
 

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

Definition at line 118 of file OSGGroup.cpp.

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

Referenced by osg::Group::initMethod(), and osg::MaterialGroup::renderEnter().

00119 {
00120     RenderAction *ra = dynamic_cast<RenderAction *>(action);
00121 
00122     ra->pushVisibility();
00123     
00124     return Action::Continue;
00125 }

Action::ResultE Group::renderLeave Action action  )  [protected, inherited]
 

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

Definition at line 127 of file OSGGroup.cpp.

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

Referenced by osg::Group::initMethod(), and osg::MaterialGroup::renderLeave().

00128 {
00129     RenderAction *ra = dynamic_cast<RenderAction *>(action);
00130 
00131     ra->popVisibility();
00132     
00133     return Action::Continue;
00134 }

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

Reimplemented in osg::Switch.

Definition at line 139 of file OSGGroup.cpp.

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

Referenced by osg::Group::initMethod().

00140 {
00141           IntersectAction *ia = dynamic_cast<IntersectAction *>(action);
00142     const DynamicVolume   &dv = ia->getActNode()->getVolume();
00143     
00144     if(dv.isValid() && ! dv.intersect(ia->getLine()))
00145     {
00146         return Action::Skip;  //bv missed -> can not hit children
00147     }
00148     
00149     return Action::Continue;
00150 }

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

Definition at line 56 of file OSGNodeCore.inl.

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

00057 {
00058     return _parents;
00059 }

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

Definition at line 62 of file OSGNodeCore.inl.

References osg::NodeCore::_parents.

00063 {
00064     return _parents;
00065 }

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

Definition at line 68 of file OSGNodeCore.inl.

References osg::NodeCore::_parents.

00069 {
00070     return &_parents;
00071 }