openscenegraph
|
Base class for all internal nodes in the scene graph. Provides interface for most common node operations (Composite Pattern).
typedef std::vector<std::string> osg::Node::DescriptionList |
A vector of std::string's which are used to describe the object.
typedef unsigned int osg::Node::NodeMask |
This is a set of bits (flags) that represent the Node. The default value is 0xffffffff (all bits set).
The most common use of these is during traversal of the scene graph. For instance, when traversing the scene graph the osg::NodeVisitor does a bitwise AND of its TraversalMask with the Node::s NodeMask to determine if the Node should be processed/traversed.
For example, if a Node has a NodeMask value of 0x02 (only 2nd bit set) and the osg::Camera has a CullMask of 0x4 (2nd bit not set) then during cull traversal, which takes it's TraversalMask from the Camera's CullMask, the node and any children would be ignored and thereby treated as "culled" and thus not rendered. Conversely, if the osg::Camera CullMask were 0x3 (2nd bit set) then the node would be processed and child Nodes would be examined.
typedef std::vector<Group*> osg::Node::ParentList |
A vector of osg::Group pointers which is used to store the parent(s) of node.
osg::Node::Node | ( | ) |
Construct a node. Initialize the parent list to empty, node name to "" and bounding sphere dirty flag to true.
Copy constructor using CopyOp to manage deep vs shallow copy.
virtual osg::Node::~Node | ( | ) | [protected, virtual] |
Node destructor. Note, is protected so that Nodes cannot be deleted other than by being dereferenced and the reference count being zero (see osg::Referenced), preventing the deletion of nodes which are still in use. This also means that Nodes cannot be created on stack i.e Node node will not compile, forcing all nodes to be created on the heap i.e Node* node = new Node().
virtual void osg::Node::accept | ( | NodeVisitor & | nv | ) | [virtual] |
Visitor Pattern : calls the apply method of a NodeVisitor with this node's type.
Reimplemented in osg::AutoTransform, osgParticle::Emitter, osgParticle::ParticleEffect, osgParticle::ParticleProcessor, osgParticle::PrecipitationEffect, and osgParticle::Program.
Referenced by osgDB::Registry::_buildKdTreeIfRequired(), osgUtil::CullVisitor::handle_cull_callbacks_and_accept(), osg::CollectOccludersVisitor::handle_cull_callbacks_and_accept(), and osg::NodeAcceptOp::operator()().
void osg::Node::addCullCallback | ( | NodeCallback * | nc | ) | [inline] |
Convenience method that sets the cull callback of the node if it doesn't exist, or nest it into the existing one.
References NULL.
void osg::Node::addDescription | ( | const std::string & | desc | ) |
Add a description string to the node.
void osg::Node::addEventCallback | ( | NodeCallback * | nc | ) | [inline] |
Convenience method that sets the event callback of the node if it doesn't exist, or nest it into the existing one.
References NULL.
void osg::Node::addParent | ( | osg::Group * | node | ) | [protected] |
void osg::Node::addUpdateCallback | ( | NodeCallback * | nc | ) | [inline] |
Convenience method that sets the update callback of the node if it doesn't exist, or nest it into the existing one.
References NULL.
virtual void osg::Node::ascend | ( | NodeVisitor & | nv | ) | [virtual] |
Traverse upwards : calls parents' accept method with NodeVisitor.
Referenced by osg::NodeVisitor::traverse().
virtual Geode* osg::Node::asGeode | ( | ) | [inline, virtual] |
Convert 'this' into a Geode pointer if Node is a Geode, otherwise return 0. Equivalent to dynamic_cast<Geode*>(this).
Reimplemented in osg::Geode.
virtual const Geode* osg::Node::asGeode | ( | ) | const [inline, virtual] |
convert 'const this' into a const Geode pointer if Node is a Geode, otherwise return 0. Equivalent to dynamic_cast<const Geode*>(this).
Reimplemented in osg::Geode.
virtual Group* osg::Node::asGroup | ( | ) | [inline, virtual] |
convert 'this' into a Group pointer if Node is a Group, otherwise return 0. Equivalent to dynamic_cast<Group*>(this).
Reimplemented in osg::Group.
virtual const Group* osg::Node::asGroup | ( | ) | const [inline, virtual] |
convert 'const this' into a const Group pointer if Node is a Group, otherwise return 0. Equivalent to dynamic_cast<const Group*>(this).
Reimplemented in osg::Group.
virtual Switch* osg::Node::asSwitch | ( | ) | [inline, virtual] |
Convert 'this' into a Switch pointer if Node is a Switch, otherwise return 0. Equivalent to dynamic_cast<Switch*>(this).
Reimplemented in osg::Switch.
virtual const Switch* osg::Node::asSwitch | ( | ) | const [inline, virtual] |
convert 'const this' into a const Switch pointer if Node is a Switch, otherwise return 0. Equivalent to dynamic_cast<const Switch*>(this).
Reimplemented in osg::Switch.
virtual osgTerrain::Terrain* osg::Node::asTerrain | ( | ) | [inline, virtual] |
Convert 'this' into a Transform pointer if Node is a Terrain, otherwise return 0. Equivalent to dynamic_cast<Terrrain*>(this).
Reimplemented in osgTerrain::Terrain.
virtual const osgTerrain::Terrain* osg::Node::asTerrain | ( | ) | const [inline, virtual] |
convert 'const this' into a const Terrain pointer if Node is a Terrain, otherwise return 0. Equivalent to dynamic_cast<const Terrain*>(this).
Reimplemented in osgTerrain::Terrain.
virtual const Transform* osg::Node::asTransform | ( | ) | const [inline, virtual] |
convert 'const this' into a const Transform pointer if Node is a Transform, otherwise return 0. Equivalent to dynamic_cast<const Transform*>(this).
Reimplemented in osg::Transform.
virtual Transform* osg::Node::asTransform | ( | ) | [inline, virtual] |
Convert 'this' into a Transform pointer if Node is a Transform, otherwise return 0. Equivalent to dynamic_cast<Transform*>(this).
Reimplemented in osg::Transform.
virtual const char* osg::Node::className | ( | ) | const [inline, virtual] |
return the name of the node's class type.
Implements osg::Object.
Reimplemented in osg::AutoTransform, osgFX::Effect, osgParticle::Emitter, osgParticle::ParticleEffect, osgParticle::ParticleProcessor, osgParticle::PrecipitationEffect, and osgParticle::Program.
return a clone of a node, with Object* return type.
Implements osg::Object.
Reimplemented in osg::AutoTransform, and osgManipulator::AntiSquish.
virtual Object* osg::Node::cloneType | ( | ) | const [inline, virtual] |
clone an object of the same type as the node.
Implements osg::Object.
Reimplemented in osg::AutoTransform, and osgManipulator::AntiSquish.
virtual BoundingSphere osg::Node::computeBound | ( | ) | const [virtual] |
Compute the bounding sphere around Node's geometry or children. This method is automatically called by getBound() when the bounding sphere has been marked dirty via dirtyBound().
Reimplemented in osg::AutoTransform, osg::Billboard, osg::ClipNode, osg::Geode, osg::Group, osg::LightSource, osg::LOD, osg::OccluderNode, osg::OcclusionQueryNode, osg::ProxyNode, osg::Switch, osg::Transform, osgParticle::ParticleProcessor, osgParticle::ParticleSystemUpdater, osgSim::Impostor, osgSim::LightPointNode, osgTerrain::TerrainTile, and osgVolume::VolumeTile.
bool osg::Node::containsOccluderNodes | ( | ) | const |
return true if this node is an OccluderNode or the subgraph below this node are OccluderNodes.
void osg::Node::dirtyBound | ( | ) |
Mark this node's bounding sphere dirty. Forcing it to be computed on the next call to getBound().
const BoundingSphere& osg::Node::getBound | ( | ) | const [inline] |
Get the bounding sphere of node. Using lazy evaluation computes the bounding sphere if it is 'dirty'.
References osg::BoundingSphereImpl< VT >::expandBy().
Referenced by osg::CullStack::isCulled().
ComputeBoundingSphereCallback* osg::Node::getComputeBoundingSphereCallback | ( | ) | [inline] |
Get the compute bound callback.
const ComputeBoundingSphereCallback* osg::Node::getComputeBoundingSphereCallback | ( | ) | const [inline] |
Get the const compute bound callback.
NodeCallback* osg::Node::getCullCallback | ( | ) | [inline] |
Get cull node callback, called during cull traversal.
Referenced by osgUtil::CullVisitor::handle_cull_callbacks_and_accept(), osgUtil::CullVisitor::handle_cull_callbacks_and_traverse(), and osgUtil::Optimizer::isOperationPermissibleForObjectImplementation().
const NodeCallback* osg::Node::getCullCallback | ( | ) | const [inline] |
Get const cull node callback, called during cull traversal.
bool osg::Node::getCullingActive | ( | ) | const [inline] |
Get the view frustum/small feature _cullingActive flag for this node. Used as a guide to the cull traversal.
const std::string& osg::Node::getDescription | ( | unsigned int | i | ) | const |
Get a single const description of the const node.
std::string& osg::Node::getDescription | ( | unsigned int | i | ) |
Get a single description of the node.
DescriptionList& osg::Node::getDescriptions | ( | ) |
Get the description list of the node.
const DescriptionList& osg::Node::getDescriptions | ( | ) | const |
Get the const description list of the const node.
const NodeCallback* osg::Node::getEventCallback | ( | ) | const [inline] |
Get const event node callback, called during event traversal.
NodeCallback* osg::Node::getEventCallback | ( | ) | [inline] |
Get event node callback, called during event traversal.
Referenced by osgGA::EventVisitor::handle_callbacks_and_traverse(), osgGA::EventVisitor::handle_geode_callbacks(), osgUtil::Optimizer::isOperationPermissibleForObjectImplementation(), and osgGA::EventVisitor::traverseGeode().
const BoundingSphere& osg::Node::getInitialBound | ( | ) | const [inline] |
Set the initial bounding volume to use when computing the overall bounding volume.
NodeMask osg::Node::getNodeMask | ( | ) | const [inline] |
Get the node Mask.
Reimplemented in osgWidget::WindowManager.
Referenced by osgUtil::Optimizer::isOperationPermissibleForObjectImplementation(), and osg::NodeVisitor::validNodeMask().
unsigned int osg::Node::getNumChildrenRequiringEventTraversal | ( | ) | const [inline] |
Get the number of Children of this node which require Event traversal, since they have an Event Callback attached to them or their children.
unsigned int osg::Node::getNumChildrenRequiringUpdateTraversal | ( | ) | const [inline] |
Get the number of Children of this node which require Update traversal, since they have an Update Callback attached to them or their children.
unsigned int osg::Node::getNumChildrenWithCullingDisabled | ( | ) | const [inline] |
Get the number of Children of this node which have culling disabled.
unsigned int osg::Node::getNumChildrenWithOccluderNodes | ( | ) | const [inline] |
Get the number of Children of this node which are or have OccluderNode's.
Referenced by osg::CollectOccludersVisitor::handle_cull_callbacks_and_accept(), and osg::CollectOccludersVisitor::handle_cull_callbacks_and_traverse().
unsigned int osg::Node::getNumDescriptions | ( | ) | const |
Get the number of descriptions of the node.
Referenced by osgUtil::Optimizer::isOperationPermissibleForObjectImplementation().
unsigned int osg::Node::getNumParents | ( | ) | const [inline] |
Get the number of parents of node.
osg::StateSet* osg::Node::getOrCreateStateSet | ( | ) |
Group* osg::Node::getParent | ( | unsigned int | i | ) | [inline] |
const Group* osg::Node::getParent | ( | unsigned int | i | ) | const [inline] |
Get a single const parent of node.
i | index of the parent to get. |
NodePathList osg::Node::getParentalNodePaths | ( | osg::Node * | haltTraversalAtNode = 0 | ) | const |
Get the list of node paths parent paths. The optional Node* haltTraversalAtNode allows the user to prevent traversal beyond a specifed node.
const ParentList& osg::Node::getParents | ( | ) | const [inline] |
Get the parent list of node.
ParentList osg::Node::getParents | ( | ) | [inline] |
Get the a copy of parent list of node. A copy is returned to prevent modification of the parent list.
osg::StateSet* osg::Node::getStateSet | ( | ) | [inline] |
Return the node's StateSet. returns NULL if a stateset is not attached.
Referenced by osgUtil::UpdateVisitor::handle_callbacks_and_traverse(), osgGA::EventVisitor::handle_callbacks_and_traverse(), osgUtil::UpdateVisitor::handle_geode_callbacks(), osgGA::EventVisitor::handle_geode_callbacks(), osgUtil::Optimizer::isOperationPermissibleForObjectImplementation(), and osgGA::EventVisitor::traverseGeode().
const osg::StateSet* osg::Node::getStateSet | ( | ) | const [inline] |
Return the node's const StateSet. Returns NULL if a stateset is not attached.
const NodeCallback* osg::Node::getUpdateCallback | ( | ) | const [inline] |
Get const update node callback, called during update traversal.
NodeCallback* osg::Node::getUpdateCallback | ( | ) | [inline] |
Get update node callback, called during update traversal.
Referenced by osgUtil::UpdateVisitor::handle_callbacks_and_traverse(), osgUtil::UpdateVisitor::handle_geode_callbacks(), and osgUtil::Optimizer::isOperationPermissibleForObjectImplementation().
MatrixList osg::Node::getWorldMatrices | ( | const osg::Node * | haltTraversalAtNode = 0 | ) | const |
Get the list of matrices that transform this node from local coordinates to world coordinates. The optional Node* haltTraversalAtNode allows the user to prevent traversal beyond a specifed node.
bool osg::Node::isCullingActive | ( | ) | const [inline] |
Return true if this node can be culled by view frustum, occlusion or small feature culling during the cull traversal. Note, returns true only if no children have culling disabled, and the local _cullingActive flag is true.
Referenced by osg::CullStack::isCulled().
virtual bool osg::Node::isSameKindAs | ( | const Object * | obj | ) | const [inline, virtual] |
return true if this and obj are of the same kind of object.
Reimplemented from osg::Object.
Reimplemented in osg::AutoTransform, osgFX::Effect, osgManipulator::AntiSquish, osgParticle::Emitter, osgParticle::ParticleEffect, osgParticle::ParticleProcessor, osgParticle::PrecipitationEffect, and osgParticle::Program.
References NULL.
virtual const char* osg::Node::libraryName | ( | ) | const [inline, virtual] |
return the name of the node's library.
Implements osg::Object.
Reimplemented in osg::AutoTransform, osgFX::Effect, osgParticle::Emitter, osgParticle::ParticleEffect, osgParticle::ParticleProcessor, osgParticle::PrecipitationEffect, and osgParticle::Program.
virtual void osg::Node::releaseGLObjects | ( | osg::State * | = 0 | ) | const [virtual] |
If State is non-zero, this function releases any associated OpenGL objects for the specified graphics context. Otherwise, releases OpenGL objects for all graphics contexts.
Reimplemented from osg::Object.
Reimplemented in osg::Camera, osg::Geode, osg::Group, osg::OcclusionQueryNode, osgSim::OverlayNode, and osgTerrain::TerrainTile.
void osg::Node::removeCullCallback | ( | NodeCallback * | nc | ) | [inline] |
Convenience method that removes a given callback from a node, even if that callback is nested. There is no error return in case the given callback is not found.
References osg::NodeCallback::getNestedCallback(), and NULL.
void osg::Node::removeEventCallback | ( | NodeCallback * | nc | ) | [inline] |
Convenience method that removes a given callback from a node, even if that callback is nested. There is no error return in case the given callback is not found.
References osg::NodeCallback::getNestedCallback(), and NULL.
void osg::Node::removeParent | ( | osg::Group * | node | ) | [protected] |
void osg::Node::removeUpdateCallback | ( | NodeCallback * | nc | ) | [inline] |
Convenience method that removes a given callback from a node, even if that callback is nested. There is no error return in case the given callback is not found.
References osg::NodeCallback::getNestedCallback(), and NULL.
virtual void osg::Node::resizeGLObjectBuffers | ( | unsigned | int | ) | [virtual] |
Resize any per context GLObject buffers to specified size.
Reimplemented from osg::Object.
Reimplemented in osg::Camera, osg::Geode, osg::Group, and osgSim::OverlayNode.
void osg::Node::setComputeBoundingSphereCallback | ( | ComputeBoundingSphereCallback * | callback | ) | [inline] |
Set the compute bound callback to override the default computeBound.
void osg::Node::setCullCallback | ( | NodeCallback * | nc | ) | [inline] |
Set cull node callback, called during cull traversal.
void osg::Node::setCullingActive | ( | bool | active | ) |
Set the view frustum/small feature culling of this node to be active or inactive. The default value is true for _cullingActive. Used as a guide to the cull traversal.
void osg::Node::setDescriptions | ( | const DescriptionList & | descriptions | ) |
Set the list of string descriptions.
void osg::Node::setEventCallback | ( | NodeCallback * | nc | ) |
Set event node callback, called during event traversal.
void osg::Node::setInitialBound | ( | const osg::BoundingSphere & | bsphere | ) | [inline] |
Set the initial bounding volume to use when computing the overall bounding volume.
void osg::Node::setNodeMask | ( | NodeMask | nm | ) | [inline] |
Set the node mask.
void osg::Node::setNumChildrenRequiringEventTraversal | ( | unsigned int | num | ) | [protected] |
void osg::Node::setNumChildrenRequiringUpdateTraversal | ( | unsigned int | num | ) | [protected] |
void osg::Node::setNumChildrenWithCullingDisabled | ( | unsigned int | num | ) | [protected] |
void osg::Node::setNumChildrenWithOccluderNodes | ( | unsigned int | num | ) | [protected] |
void osg::Node::setStateSet | ( | osg::StateSet * | stateset | ) |
Set the node's StateSet.
virtual void osg::Node::setThreadSafeRefUnref | ( | bool | threadSafe | ) | [virtual] |
Set whether to use a mutex to ensure ref() and unref() are thread safe.
Reimplemented from osg::Object.
Reimplemented in osg::Geode, osg::Group, osg::LightSource, osg::TexGenNode, and osgSim::OverlayNode.
void osg::Node::setUpdateCallback | ( | NodeCallback * | nc | ) |
Set update node callback, called during update traversal.
virtual void osg::Node::traverse | ( | NodeVisitor & | ) | [inline, virtual] |
Traverse downwards : calls children's accept method with NodeVisitor.
Reimplemented in osg::Group, osg::LOD, osg::PagedLOD, osg::ProxyNode, osg::Sequence, osg::Switch, osgFX::Effect, osgManipulator::Dragger, osgParticle::ParticleProcessor, osgParticle::ParticleSystemUpdater, osgParticle::PrecipitationEffect, osgShadow::ShadowedScene, osgSim::DOFTransform, osgSim::Impostor, osgSim::LightPointNode, osgSim::MultiSwitch, osgSim::OverlayNode, osgSim::VisibilityGroup, osgTerrain::Terrain, osgTerrain::TerrainTile, osgVolume::Volume, and osgVolume::VolumeTile.
Referenced by osg::NodeVisitor::traverse().
friend class osg::Drawable [friend] |
friend class osg::Group [friend] |
friend class osg::StateSet [friend] |
BoundingSphere osg::Node::_boundingSphere [mutable, protected] |
bool osg::Node::_boundingSphereComputed [mutable, protected] |
ref_ptr<NodeCallback> osg::Node::_cullCallback [protected] |
bool osg::Node::_cullingActive [protected] |
ref_ptr<NodeCallback> osg::Node::_eventCallback [protected] |
BoundingSphere osg::Node::_initialBound [protected] |
NodeMask osg::Node::_nodeMask [protected] |
unsigned int osg::Node::_numChildrenRequiringEventTraversal [protected] |
unsigned int osg::Node::_numChildrenRequiringUpdateTraversal [protected] |
unsigned int osg::Node::_numChildrenWithCullingDisabled [protected] |
unsigned int osg::Node::_numChildrenWithOccluderNodes [protected] |
ParentList osg::Node::_parents [protected] |
ref_ptr<StateSet> osg::Node::_stateset [protected] |
ref_ptr<NodeCallback> osg::Node::_updateCallback [protected] |