Node
Go to the documentation of this file.
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#ifndef OSG_NODE
#define OSG_NODE 1
#include <osg/Object>
#include <osg/StateSet>
#include <osg/BoundingSphere>
#include <osg/BoundingBox>
#include <osg/Callback>
#include <string>
#include <vector>
// forward declare osgTerrrain::Terrain to enable declaration of asTerrain() method.
namespace osgTerrain {
class Terrain;
}
namespace osg {
// forcing declare classes to enable declaration of as*() methods.
class NodeVisitor;
class Drawable;
class Geometry;
class Group;
class Transform;
class Node;
class Switch;
class Geode;
class Camera;
typedef std::vector< Node* > NodePath;
typedef std::vector< NodePath > NodePathList;
typedef std::vector< Matrix > MatrixList;
#define META_Node(library,name) \
virtual osg::Object* cloneType() const { return new name (); } \
virtual osg::Object* clone(const osg::CopyOp& copyop) const { return new name (*this,copyop); } \
virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const name *>(obj)!=NULL; } \
virtual const char* className() const { return #name; } \
virtual const char* libraryName() const { return #library; } \
virtual void accept(osg::NodeVisitor& nv) { if (nv.validNodeMask(*this)) { nv.pushOntoNodePath(this); nv.apply(*this); nv.popFromNodePath(); } } \
class OSG_EXPORT Node : public Object
{
public:
Node();
Node(const Node&,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
virtual Object* cloneType() const { return new Node(); }
virtual Object* clone(const CopyOp& copyop) const { return new Node(*this,copyop); }
virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast<const Node*>(obj)!=NULL; }
virtual const char* libraryName() const { return "osg"; }
virtual const char* className() const { return "Node"; }
virtual Node* asNode() { return this; }
virtual const Node* asNode() const { return this; }
virtual Drawable* asDrawable() { return 0; }
virtual const Drawable* asDrawable() const { return 0; }
virtual Geometry* asGeometry() { return 0; }
virtual const Geometry* asGeometry() const { return 0; }
virtual Group* asGroup() { return 0; }
virtual const Group* asGroup() const { return 0; }
virtual Transform* asTransform() { return 0; }
virtual const Transform* asTransform() const { return 0; }
virtual Switch* asSwitch() { return 0; }
virtual const Switch* asSwitch() const { return 0; }
virtual Geode* asGeode() { return 0; }
virtual const Geode* asGeode() const { return 0; }
virtual osgTerrain::Terrain* asTerrain() { return 0; }
virtual const osgTerrain::Terrain* asTerrain() const { return 0; }
virtual void accept(NodeVisitor& nv);
virtual void ascend(NodeVisitor& nv);
virtual void traverse(NodeVisitor& /*nv*/) {}
typedef std::vector<Group*> ParentList;
inline const ParentList& getParents() const { return _parents; }
inline ParentList getParents() { return _parents; }
inline Group* getParent(unsigned int i) { return _parents[i]; }
inline const Group* getParent(unsigned int i) const { return _parents[i]; }
inline unsigned int getNumParents() const { return static_cast<unsigned int>(_parents.size()); }
NodePathList getParentalNodePaths(osg::Node* haltTraversalAtNode=0) const;
MatrixList getWorldMatrices(const osg::Node* haltTraversalAtNode=0) const;
void setUpdateCallback(Callback* nc);
template<class T> void setUpdateCallback(const ref_ptr<T>& nc) { setUpdateCallback(nc.get()); }
inline Callback* getUpdateCallback() { return _updateCallback.get(); }
inline const Callback* getUpdateCallback() const { return _updateCallback.get(); }
inline void addUpdateCallback(Callback* nc) {
if (nc != NULL) {
if (_updateCallback.valid()) _updateCallback->addNestedCallback(nc);
else setUpdateCallback(nc);
}
}
template<class T> void addUpdateCallback(const ref_ptr<T>& nc) { addUpdateCallback(nc.get()); }
inline void removeUpdateCallback(Callback* nc) {
if (nc != NULL && _updateCallback.valid()) {
if (_updateCallback == nc)
{
ref_ptr<osg::Callback> new_nested_callback = nc->getNestedCallback();
nc->setNestedCallback(0);
setUpdateCallback(new_nested_callback.get());
}
else _updateCallback->removeNestedCallback(nc);
}
}
template<class T> void removeUpdateCallback(const ref_ptr<T>& nc) { removeUpdateCallback(nc.get()); }
inline unsigned int getNumChildrenRequiringUpdateTraversal() const { return _numChildrenRequiringUpdateTraversal; }
void setEventCallback(Callback* nc);
template<class T> void setEventCallback(const ref_ptr<T>& nc) { setEventCallback(nc.get()); }
inline Callback* getEventCallback() { return _eventCallback.get(); }
inline const Callback* getEventCallback() const { return _eventCallback.get(); }
inline void addEventCallback(Callback* nc) {
if (nc != NULL) {
if (_eventCallback.valid()) _eventCallback->addNestedCallback(nc);
else setEventCallback(nc);
}
}
template<class T> void addEventCallback(const ref_ptr<T>& nc) { addEventCallback(nc.get()); }
inline void removeEventCallback(Callback* nc) {
if (nc != NULL && _eventCallback.valid()) {
if (_eventCallback == nc)
{
ref_ptr<osg::Callback> new_nested_callback = nc->getNestedCallback();
nc->setNestedCallback(0);
setEventCallback(new_nested_callback.get()); // replace the callback by the nested one
}
else _eventCallback->removeNestedCallback(nc);
}
}
template<class T> void removeEventCallback(const ref_ptr<T>& nc) { removeEventCallback(nc.get()); }
inline unsigned int getNumChildrenRequiringEventTraversal() const { return _numChildrenRequiringEventTraversal; }
void setCullCallback(Callback* nc) { _cullCallback = nc; }
template<class T> void setCullCallback(const ref_ptr<T>& nc) { setCullCallback(nc.get()); }
inline Callback* getCullCallback() { return _cullCallback.get(); }
inline const Callback* getCullCallback() const { return _cullCallback.get(); }
inline void addCullCallback(Callback* nc) {
if (nc != NULL) {
if (_cullCallback.valid()) _cullCallback->addNestedCallback(nc);
else setCullCallback(nc);
}
}
template<class T> void addCullCallback(const ref_ptr<T>& nc) { addCullCallback(nc.get()); }
inline void removeCullCallback(Callback* nc) {
if (nc != NULL && _cullCallback.valid()) {
if (_cullCallback == nc)
{
ref_ptr<osg::Callback> new_nested_callback = nc->getNestedCallback();
nc->setNestedCallback(0);
setCullCallback(new_nested_callback.get()); // replace the callback by the nested one
}
else _cullCallback->removeNestedCallback(nc);
}
}
template<class T> void removeCullCallback(const ref_ptr<T>& nc) { removeCullCallback(nc.get()); }
void setCullingActive(bool active);
inline bool getCullingActive() const { return _cullingActive; }
inline unsigned int getNumChildrenWithCullingDisabled() const { return _numChildrenWithCullingDisabled; }
inline bool isCullingActive() const { return _numChildrenWithCullingDisabled==0 && _cullingActive && getBound().valid(); }
inline unsigned int getNumChildrenWithOccluderNodes() const { return _numChildrenWithOccluderNodes; }
bool containsOccluderNodes() const;
typedef unsigned int NodeMask;
inline void setNodeMask(NodeMask nm) { _nodeMask = nm; }
inline NodeMask getNodeMask() const { return _nodeMask; }
void setStateSet(osg::StateSet* stateset);
template<class T> void setStateSet(const osg::ref_ptr<T>& stateset) { setStateSet(stateset.get()); }
osg::StateSet* getOrCreateStateSet();
inline osg::StateSet* getStateSet() { return _stateset.get(); }
inline const osg::StateSet* getStateSet() const { return _stateset.get(); }
typedef std::vector<std::string> DescriptionList;
void setDescriptions(const DescriptionList& descriptions);
DescriptionList& getDescriptions();
const DescriptionList& getDescriptions() const;
const std::string& getDescription(unsigned int i) const;
std::string& getDescription(unsigned int i);
unsigned int getNumDescriptions() const;
void addDescription(const std::string& desc);
void setInitialBound(const osg::BoundingSphere& bsphere) { _initialBound = bsphere; dirtyBound(); }
const BoundingSphere& getInitialBound() const { return _initialBound; }
void dirtyBound();
inline const BoundingSphere& getBound() const
{
if(!_boundingSphereComputed)
{
_boundingSphere = _initialBound;
if (_computeBoundCallback.valid())
_boundingSphere.expandBy(_computeBoundCallback->computeBound(*this));
else
_boundingSphere.expandBy(computeBound());
_boundingSphereComputed = true;
}
return _boundingSphere;
}
virtual BoundingSphere computeBound() const;
struct ComputeBoundingSphereCallback : public osg::Object
{
ComputeBoundingSphereCallback() {}
ComputeBoundingSphereCallback(const ComputeBoundingSphereCallback& org,const CopyOp& copyop):
Object(org, copyop) {}
META_Object(osg,ComputeBoundingSphereCallback);
virtual BoundingSphere computeBound(const osg::Node&) const { return BoundingSphere(); }
};
void setComputeBoundingSphereCallback(ComputeBoundingSphereCallback* callback) { _computeBoundCallback = callback; }
template<class T> void setComputeBoundingSphereCallback(const ref_ptr<T>& callback) { setComputeBoundingSphereCallback(callback.get()); }
ComputeBoundingSphereCallback* getComputeBoundingSphereCallback() { return _computeBoundCallback.get(); }
const ComputeBoundingSphereCallback* getComputeBoundingSphereCallback() const { return _computeBoundCallback.get(); }
virtual void setThreadSafeRefUnref(bool threadSafe);
virtual void resizeGLObjectBuffers(unsigned int /*maxSize*/);
virtual void releaseGLObjects(osg::State* = 0) const;
protected:
virtual ~Node();
BoundingSphere _initialBound;
ref_ptr<ComputeBoundingSphereCallback> _computeBoundCallback;
mutable BoundingSphere _boundingSphere;
mutable bool _boundingSphereComputed;
void addParent(osg::Group* parent);
void removeParent(osg::Group* parent);
ParentList _parents;
friend class osg::Group;
friend class osg::Drawable;
friend class osg::StateSet;
ref_ptr<Callback> _updateCallback;
unsigned int _numChildrenRequiringUpdateTraversal;
void setNumChildrenRequiringUpdateTraversal(unsigned int num);
ref_ptr<Callback> _eventCallback;
unsigned int _numChildrenRequiringEventTraversal;
void setNumChildrenRequiringEventTraversal(unsigned int num);
ref_ptr<Callback> _cullCallback;
bool _cullingActive;
unsigned int _numChildrenWithCullingDisabled;
void setNumChildrenWithCullingDisabled(unsigned int num);
unsigned int _numChildrenWithOccluderNodes;
void setNumChildrenWithOccluderNodes(unsigned int num);
NodeMask _nodeMask;
ref_ptr<StateSet> _stateset;
};
}
#endif
BoundingBox
BoundingSphere
Callback
Object
StateSet
osgTerrain::Terrain
Definition Terrain:28
osg::Callback
Definition Callback:34
osg::Callback::getNestedCallback
osg::Callback * getNestedCallback()
Definition Callback:89
osg::Callback::setNestedCallback
void setNestedCallback(osg::Callback *cb)
Definition Callback:88
osg::CopyOp
Definition CopyOp:41
osg::CopyOp::SHALLOW_COPY
@ SHALLOW_COPY
Definition CopyOp:47
osg::Drawable
Definition Drawable:89
osg::Geode
Definition Geode:29
osg::Geometry
Definition Geometry:31
osg::Group
Definition Group:29
osg::NodeVisitor
Definition NodeVisitor:82
osg::Node
Definition Node:72
osg::Node::asTerrain
virtual const osgTerrain::Terrain * asTerrain() const
Definition Node:159
osg::Node::setEventCallback
void setEventCallback(const ref_ptr< T > &nc)
Definition Node:249
osg::Node::releaseGLObjects
virtual void releaseGLObjects(osg::State *=0) const
osg::Node::setCullCallback
void setCullCallback(Callback *nc)
Definition Node:288
osg::Node::setUpdateCallback
void setUpdateCallback(const ref_ptr< T > &nc)
Definition Node:208
osg::Node::setUpdateCallback
void setUpdateCallback(Callback *nc)
osg::Node::_eventCallback
ref_ptr< Callback > _eventCallback
Definition Node:511
osg::Node::getParent
const Group * getParent(unsigned int i) const
Definition Node:186
osg::Node::getDescription
std::string & getDescription(unsigned int i)
osg::Node::asGeode
virtual const Geode * asGeode() const
Definition Node:151
osg::Node::_cullingActive
bool _cullingActive
Definition Node:517
osg::Node::addDescription
void addDescription(const std::string &desc)
osg::Node::_numChildrenWithOccluderNodes
unsigned int _numChildrenWithOccluderNodes
Definition Node:521
osg::Node::setEventCallback
void setEventCallback(Callback *nc)
osg::Node::traverse
virtual void traverse(NodeVisitor &)
Definition Node:167
osg::Node::_computeBoundCallback
ref_ptr< ComputeBoundingSphereCallback > _computeBoundCallback
Definition Node:495
osg::Node::getNumParents
unsigned int getNumParents() const
Definition Node:192
osg::Node::containsOccluderNodes
bool containsOccluderNodes() const
osg::Node::getDescriptions
DescriptionList & getDescriptions()
osg::Node::_updateCallback
ref_ptr< Callback > _updateCallback
Definition Node:507
osg::Node::setNumChildrenRequiringUpdateTraversal
void setNumChildrenRequiringUpdateTraversal(unsigned int num)
osg::Node::_nodeMask
NodeMask _nodeMask
Definition Node:524
osg::Node::setNumChildrenWithOccluderNodes
void setNumChildrenWithOccluderNodes(unsigned int num)
osg::Node::libraryName
virtual const char * libraryName() const
Definition Node:93
osg::Node::removeEventCallback
void removeEventCallback(Callback *nc)
Definition Node:268
osg::Node::isCullingActive
bool isCullingActive() const
Definition Node:337
osg::Node::getCullingActive
bool getCullingActive() const
Definition Node:330
osg::Node::getNumDescriptions
unsigned int getNumDescriptions() const
osg::Node::asGeometry
virtual Geometry * asGeometry()
Definition Node:115
osg::Node::getParentalNodePaths
NodePathList getParentalNodePaths(osg::Node *haltTraversalAtNode=0) const
osg::Node::getNumChildrenRequiringEventTraversal
unsigned int getNumChildrenRequiringEventTraversal() const
Definition Node:284
osg::Node::asGroup
virtual Group * asGroup()
Definition Node:122
osg::Node::_stateset
ref_ptr< StateSet > _stateset
Definition Node:526
osg::Node::getNodeMask
NodeMask getNodeMask() const
Definition Node:367
osg::Node::setNumChildrenRequiringEventTraversal
void setNumChildrenRequiringEventTraversal(unsigned int num)
osg::Node::ParentList
std::vector< Group * > ParentList
Definition Node:170
osg::Node::removeCullCallback
void removeCullCallback(Callback *nc)
Definition Node:309
osg::Node::addParent
void addParent(osg::Group *parent)
osg::Node::asGeode
virtual Geode * asGeode()
Definition Node:147
osg::Node::getStateSet
const osg::StateSet * getStateSet() const
Definition Node:385
osg::Node::getStateSet
osg::StateSet * getStateSet()
Definition Node:382
osg::Node::getNumChildrenWithCullingDisabled
unsigned int getNumChildrenWithCullingDisabled() const
Definition Node:333
osg::Node::asDrawable
virtual Drawable * asDrawable()
Definition Node:108
osg::Node::resizeGLObjectBuffers
virtual void resizeGLObjectBuffers(unsigned int)
osg::Node::asSwitch
virtual const Switch * asSwitch() const
Definition Node:143
osg::Node::removeUpdateCallback
void removeUpdateCallback(const ref_ptr< T > &nc)
Definition Node:239
osg::Node::addEventCallback
void addEventCallback(const ref_ptr< T > &nc)
Definition Node:265
osg::Node::_cullCallback
ref_ptr< Callback > _cullCallback
Definition Node:515
osg::Node::setStateSet
void setStateSet(const osg::ref_ptr< T > &stateset)
Definition Node:374
osg::Node::getNumChildrenWithOccluderNodes
unsigned int getNumChildrenWithOccluderNodes() const
Definition Node:340
osg::Node::Node
Node()
osg::Node::getOrCreateStateSet
osg::StateSet * getOrCreateStateSet()
osg::Node::setInitialBound
void setInitialBound(const osg::BoundingSphere &bsphere)
Definition Node:415
osg::Node::getParent
Group * getParent(unsigned int i)
Definition Node:179
osg::Node::~Node
virtual ~Node()
osg::Node::setCullingActive
void setCullingActive(bool active)
osg::Node::asGroup
virtual const Group * asGroup() const
Definition Node:125
osg::Node::setComputeBoundingSphereCallback
void setComputeBoundingSphereCallback(ComputeBoundingSphereCallback *callback)
Definition Node:459
osg::Node::asTerrain
virtual osgTerrain::Terrain * asTerrain()
Definition Node:155
osg::Node::DescriptionList
std::vector< std::string > DescriptionList
Definition Node:389
osg::Node::addEventCallback
void addEventCallback(Callback *nc)
Definition Node:258
osg::Node::getUpdateCallback
Callback * getUpdateCallback()
Definition Node:211
osg::Node::computeBound
virtual BoundingSphere computeBound() const
osg::Node::Group
friend class osg::Group
Definition Node:503
osg::Node::addUpdateCallback
void addUpdateCallback(const ref_ptr< T > &nc)
Definition Node:224
osg::Node::isSameKindAs
virtual bool isSameKindAs(const Object *obj) const
Definition Node:90
osg::Node::getInitialBound
const BoundingSphere & getInitialBound() const
Definition Node:418
osg::Node::className
virtual const char * className() const
Definition Node:96
osg::Node::asTransform
virtual Transform * asTransform()
Definition Node:129
osg::Node::setNodeMask
void setNodeMask(NodeMask nm)
Definition Node:365
osg::Node::getCullCallback
Callback * getCullCallback()
Definition Node:293
osg::Node::getNumChildrenRequiringUpdateTraversal
unsigned int getNumChildrenRequiringUpdateTraversal() const
Definition Node:243
osg::Node::getUpdateCallback
const Callback * getUpdateCallback() const
Definition Node:214
osg::Node::asTransform
virtual const Transform * asTransform() const
Definition Node:133
osg::Node::_numChildrenRequiringUpdateTraversal
unsigned int _numChildrenRequiringUpdateTraversal
Definition Node:508
osg::Node::getCullCallback
const Callback * getCullCallback() const
Definition Node:296
osg::Node::setCullCallback
void setCullCallback(const ref_ptr< T > &nc)
Definition Node:290
osg::Node::getWorldMatrices
MatrixList getWorldMatrices(const osg::Node *haltTraversalAtNode=0) const
osg::Node::asNode
virtual const Node * asNode() const
Definition Node:104
osg::Node::asDrawable
virtual const Drawable * asDrawable() const
Definition Node:111
osg::Node::addCullCallback
void addCullCallback(Callback *nc)
Definition Node:299
osg::Node::addCullCallback
void addCullCallback(const ref_ptr< T > &nc)
Definition Node:306
osg::Node::_initialBound
BoundingSphere _initialBound
Definition Node:494
osg::Node::removeUpdateCallback
void removeUpdateCallback(Callback *nc)
Definition Node:227
osg::Node::setDescriptions
void setDescriptions(const DescriptionList &descriptions)
osg::Node::setThreadSafeRefUnref
virtual void setThreadSafeRefUnref(bool threadSafe)
osg::Node::getParents
ParentList getParents()
Definition Node:177
osg::Node::removeEventCallback
void removeEventCallback(const ref_ptr< T > &nc)
Definition Node:280
osg::Node::getDescription
const std::string & getDescription(unsigned int i) const
osg::Node::setNumChildrenWithCullingDisabled
void setNumChildrenWithCullingDisabled(unsigned int num)
osg::Node::cloneType
virtual Object * cloneType() const
Definition Node:84
osg::Node::setComputeBoundingSphereCallback
void setComputeBoundingSphereCallback(const ref_ptr< T > &callback)
Definition Node:461
osg::Node::getParents
const ParentList & getParents() const
Definition Node:173
osg::Node::NodeMask
unsigned int NodeMask
Definition Node:363
osg::Node::getDescriptions
const DescriptionList & getDescriptions() const
osg::Node::asNode
virtual Node * asNode()
Definition Node:100
osg::Node::asSwitch
virtual Switch * asSwitch()
Definition Node:139
osg::Node::removeCullCallback
void removeCullCallback(const ref_ptr< T > &nc)
Definition Node:321
osg::Node::setStateSet
void setStateSet(osg::StateSet *stateset)
osg::Node::clone
virtual Object * clone(const CopyOp &copyop) const
Definition Node:87
osg::Node::accept
virtual void accept(NodeVisitor &nv)
osg::Node::addUpdateCallback
void addUpdateCallback(Callback *nc)
Definition Node:217
osg::Node::asGeometry
virtual const Geometry * asGeometry() const
Definition Node:118
osg::Node::removeParent
void removeParent(osg::Group *parent)
osg::Node::dirtyBound
void dirtyBound()
osg::Node::ascend
virtual void ascend(NodeVisitor &nv)
osg::Node::getEventCallback
Callback * getEventCallback()
Definition Node:252
osg::Node::_boundingSphereComputed
bool _boundingSphereComputed
Definition Node:497
osg::Node::Node
Node(const Node &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
osg::Node::Drawable
friend class osg::Drawable
Definition Node:504
osg::Node::_parents
ParentList _parents
Definition Node:502
osg::Node::getComputeBoundingSphereCallback
const ComputeBoundingSphereCallback * getComputeBoundingSphereCallback() const
Definition Node:467
osg::Node::getBound
const BoundingSphere & getBound() const
Definition Node:425
osg::Node::_boundingSphere
BoundingSphere _boundingSphere
Definition Node:496
osg::Node::getComputeBoundingSphereCallback
ComputeBoundingSphereCallback * getComputeBoundingSphereCallback()
Definition Node:464
osg::Node::getEventCallback
const Callback * getEventCallback() const
Definition Node:255
osg::Node::_numChildrenRequiringEventTraversal
unsigned int _numChildrenRequiringEventTraversal
Definition Node:512
osg::Node::_numChildrenWithCullingDisabled
unsigned int _numChildrenWithCullingDisabled
Definition Node:518
osg::Object
Definition Object:61
osg::Object::Object
Object()
Definition Object:69
osg::StateSet
Definition StateSet:46
osg::State
Definition State:80
osg::Switch
Definition Switch:27
osg::Transform
Definition Transform:75
osg::ref_ptr
Definition ref_ptr:32
osg::ref_ptr::get
T * get() const
Definition ref_ptr:117
osgTerrain
Definition Node:29
osg
Definition AlphaFunc:19
osg::MatrixList
std::vector< Matrix > MatrixList
Definition Node:53
osg::NodePathList
std::vector< NodePath > NodePathList
Definition Node:50
osg::BoundingSphere
BoundingSphered BoundingSphere
Definition BoundingSphere:314
osg::NodePath
std::vector< Node * > NodePath
Definition Node:47
NULL
#define NULL
Definition osg/Export:55
OSG_EXPORT
#define OSG_EXPORT
Definition osg/Export:39
osg::Node::ComputeBoundingSphereCallback
Definition Node:447
osg::Node::ComputeBoundingSphereCallback::ComputeBoundingSphereCallback
ComputeBoundingSphereCallback()
Definition Node:448
osg::Node::ComputeBoundingSphereCallback::META_Object
META_Object(osg, ComputeBoundingSphereCallback)
osg::Node::ComputeBoundingSphereCallback::ComputeBoundingSphereCallback
ComputeBoundingSphereCallback(const ComputeBoundingSphereCallback &org, const CopyOp &copyop)
Definition Node:450
osg::Node::ComputeBoundingSphereCallback::computeBound
virtual BoundingSphere computeBound(const osg::Node &) const
Definition Node:455