530 lines
28 KiB
HTML
530 lines
28 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>class SG_EXPORT osg::NodeVisitor</TITLE>
|
|
<META NAME="GENERATOR" CONTENT="DOC++ 3.4.8">
|
|
</HEAD>
|
|
<BODY BGCOLOR="#ffffff">
|
|
|
|
<H2>class SG_EXPORT <A HREF="#DOC.DOCU">osg::NodeVisitor</A></H2></H2><BLOCKQUOTE>Visitor for type safe operations on osg::Node's.</BLOCKQUOTE>
|
|
<HR>
|
|
|
|
<H2>Inheritance:</H2>
|
|
<APPLET CODE="ClassGraph.class" WIDTH=600 HEIGHT=95>
|
|
<param name=classes value="CReferenced,MReferenced.html,CNodeVisitor,MNodeVisitor.html,CCollectOccludersVisitor,MCollectOccludersVisitor.html">
|
|
<param name=before value="M,M,M^_">
|
|
<param name=after value="Md_,M,M">
|
|
<param name=indent value="0,1,1">
|
|
<param name=arrowdir value="down">
|
|
</APPLET>
|
|
<HR>
|
|
|
|
<DL>
|
|
<P><DL>
|
|
<DT><H3>Public Methods</H3><DD><DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif> <B><A HREF="#DOC.2.79.3">NodeVisitor</A></B>(<!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> tm=<!1><A HREF="NodeVisitor.html#DOC.2.79.1.1">TRAVERSE_NONE</A>)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif> <B><A HREF="#DOC.2.79.4">NodeVisitor</A></B>(<!1><A HREF="NodeVisitor.html#DOC.2.79.2">VisitorType</A> type, <!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> tm=<!1><A HREF="NodeVisitor.html#DOC.2.79.1.1">TRAVERSE_NONE</A>)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual <B><A HREF="#DOC.2.79.5">~NodeVisitor</A></B>()
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.6">reset</A></B>()
|
|
<DD><I>Method to call to reset visitor.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline void <B><A HREF="#DOC.2.79.7">setVisitorType</A></B>(<!1><A HREF="NodeVisitor.html#DOC.2.79.2">VisitorType</A> type)
|
|
<DD><I>Set the VisitorType, used to distingush different visitors during traversal of the scene, typically used in the Node::traverse() method to select which behaviour to use for different types of traversal/visitors</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline <!1><A HREF="NodeVisitor.html#DOC.2.79.2">VisitorType</A> <B><A HREF="#DOC.2.79.8">getVisitorType</A></B>() const
|
|
<DD><I>Get the VisitorType</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline void <B><A HREF="#DOC.2.79.9">setTraversalNumber</A></B>(const int fn)
|
|
<DD><I>Set the traversal number.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline const int <B><A HREF="#DOC.2.79.10">getTraversalNumber</A></B>() const
|
|
<DD><I>Get the traversal number.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline void <B><A HREF="#DOC.2.79.11">setFrameStamp</A></B>(<!1><A HREF="FrameStamp.html">FrameStamp</A>* fs)
|
|
<DD><I>Set the FrameStamp that this traversal is assoicated with</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline const <!1><A HREF="FrameStamp.html">FrameStamp</A>* <B><A HREF="#DOC.2.79.12">getFrameStamp</A></B>() const
|
|
<DD><I>Get the FrameStamp that this traversal is assoicated with</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline void <B><A HREF="#DOC.2.79.13">setTraversalMask</A></B>(const Node::NodeMask mask)
|
|
<DD><I>Set the TraversalMask of this NodeVisitor.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline const Node::NodeMask <B><A HREF="#DOC.2.79.14">getTraversalMask</A></B>() const
|
|
<DD><I>Get the TraversalMask</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline void <B><A HREF="#DOC.2.79.15">setNodeMaskOverride</A></B>(const Node::NodeMask mask)
|
|
<DD><I>Set the NodeMaskOverride mask.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline const Node::NodeMask <B><A HREF="#DOC.2.79.16">getNodeMaskOverride</A></B>() const
|
|
<DD><I>Get the NodeMaskOverride mask</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline const bool <B><A HREF="#DOC.2.79.17">validNodeMask</A></B>(const osg::Node& node) const
|
|
<DD><I>Method to called by Node and its subclass' Node::accept() method, if the result is true to be used to cull operations of nodes and their subgraphs.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.79.18">setTraversalMode</A></B>(const <!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> mode)
|
|
<DD><I>Set the traversal mode for Node::traverse() to use when deciding which children of a node to traverse.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline const <!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> <B><A HREF="#DOC.2.79.19">getTraversalMode</A></B>() const
|
|
<DD><I>Get the traversal mode</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.79.20">setTraversalVisitor</A></B>(<!1><A HREF="NodeVisitor.html">NodeVisitor</A>* nv)
|
|
<DD><I>Set a visitor to handle traversal.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline <!1><A HREF="NodeVisitor.html">NodeVisitor</A>* <B><A HREF="#DOC.2.79.21">getTraversalVisitor</A></B>()
|
|
<DD><I>Get the traversal visitor, returns NULL if none is attached</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline void <B><A HREF="#DOC.2.79.22">traverse</A></B>(Node& node)
|
|
<DD><I>Method for handling traversal of a nodes.</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline void <B><A HREF="#DOC.2.79.23">pushOntoNodePath</A></B>(Node* node)
|
|
<DD><I>Method called by osg::Node::accept() method before a call the NodeVisitor::apply().</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline void <B><A HREF="#DOC.2.79.24">popFromNodePath</A></B>()
|
|
<DD><I>Method callby osg::Node::accept() method after a call the NodeVisitor::apply().</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>NodePath& <B><A HREF="#DOC.2.79.25">getNodePath</A></B>()
|
|
<DD><I>Get the non const NodePath from the top most node applied down to the current Node being visited</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>const NodePath& <B><A HREF="#DOC.2.79.26">getNodePath</A></B>() const
|
|
<DD><I>Get the const NodePath from the top most node applied down to the current Node being visited</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>const bool <B><A HREF="#DOC.2.79.27">getLocalToWorldMatrix</A></B>(<!1><A HREF="Matrix.html">Matrix</A>& matrix, Node* node)
|
|
<DD><I>Get the Local To World Matrix from the NodePath for specified Transform::Mode, and u</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>const bool <B><A HREF="#DOC.2.79.28">getWorldToLocalMatrix</A></B>(<!1><A HREF="Matrix.html">Matrix</A>& matrix, Node* node)
|
|
<DD><I>Get the World To Local Matrix from the NodePath for specified Transform::Mode</I>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.29">apply</A></B>(Node& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.30">apply</A></B>(<!1><A HREF="Geode.html">Geode</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.31">apply</A></B>(<!1><A HREF="Billboard.html">Billboard</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.32">apply</A></B>(<!1><A HREF="Group.html">Group</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.33">apply</A></B>(<!1><A HREF="Projection.html">Projection</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.34">apply</A></B>(<!1><A HREF="ClipNode.html">ClipNode</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.35">apply</A></B>(<!1><A HREF="LightSource.html">LightSource</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.36">apply</A></B>(<!1><A HREF="Transform.html">Transform</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.37">apply</A></B>(<!1><A HREF="DOFTransform.html">DOFTransform</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.38">apply</A></B>(<!1><A HREF="MatrixTransform.html">MatrixTransform</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.39">apply</A></B>(<!1><A HREF="PositionAttitudeTransform.html">PositionAttitudeTransform</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.40">apply</A></B>(<!1><A HREF="Switch.html">Switch</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.41">apply</A></B>(<!1><A HREF="Sequence.html">Sequence</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.42">apply</A></B>(<!1><A HREF="LOD.html">LOD</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.43">apply</A></B>(<!1><A HREF="Impostor.html">Impostor</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.44">apply</A></B>(<!1><A HREF="ClearNode.html">ClearNode</A>& node)
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.79.45">apply</A></B>(<!1><A HREF="OccluderNode.html">OccluderNode</A>& node)
|
|
</DL></P>
|
|
|
|
<P><DL>
|
|
<DT><H3>Public Members</H3><DD><DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>enum <B><A HREF="#DOC.2.79.1">TraversalMode</A></B>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>enum <B><A HREF="#DOC.2.79.2">VisitorType</A></B>
|
|
</DL></P>
|
|
|
|
<P><DL>
|
|
<DT><H3>Protected Fields</H3><DD><DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif><!1><A HREF="NodeVisitor.html#DOC.2.79.2">VisitorType</A> <B><A HREF="#DOC.2.79.46">_visitorType</A></B>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>int <B><A HREF="#DOC.2.79.47">_traversalNumber</A></B>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif><!1><A HREF="ref_ptr.html">ref_ptr</A><<!1><A HREF="FrameStamp.html">FrameStamp</A>> <B><A HREF="#DOC.2.79.48">_frameStamp</A></B>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif><!1><A HREF="ref_ptr.html">ref_ptr</A><<!1><A HREF="NodeVisitor.html">NodeVisitor</A>> <B><A HREF="#DOC.2.79.49">_traversalVisitor</A></B>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif><!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> <B><A HREF="#DOC.2.79.50">_traversalMode</A></B>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>Node::NodeMask <B><A HREF="#DOC.2.79.51">_traversalMask</A></B>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>Node::NodeMask <B><A HREF="#DOC.2.79.52">_nodeMaskOverride</A></B>
|
|
<DT>
|
|
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>NodePath <B><A HREF="#DOC.2.79.53">_nodePath</A></B>
|
|
</DL></P>
|
|
|
|
</DL>
|
|
<HR><H3>Inherited from <A HREF="Referenced.html">Referenced</A>:</H3>
|
|
<DL>
|
|
<P><DL>
|
|
<DT><H3>Public Methods</H3><DD><DT>
|
|
<IMG ALT="o" SRC=icon2.gif>inline <!1><A HREF="Referenced.html">Referenced</A>& <B>operator = </B>(<!1><A HREF="Referenced.html">Referenced</A>&)
|
|
<DT>
|
|
<IMG ALT="o" SRC=icon2.gif>inline void <B>ref</B>() const
|
|
<DT>
|
|
<IMG ALT="o" SRC=icon2.gif>inline void <B>unref</B>() const
|
|
<DT>
|
|
<IMG ALT="o" SRC=icon2.gif>inline void <B>unref_nodelete</B>() const
|
|
<DT>
|
|
<IMG ALT="o" SRC=icon2.gif>inline const int <B>referenceCount</B>() const
|
|
</DL></P>
|
|
|
|
<P><DL>
|
|
<DT><H3>Protected Fields</H3><DD><DT>
|
|
<IMG ALT="o" SRC=icon2.gif>mutable int <B>_refCount</B>
|
|
</DL></P>
|
|
|
|
</DL>
|
|
|
|
<A NAME="DOC.DOCU"></A>
|
|
<HR>
|
|
<H2>Documentation</H2>
|
|
<BLOCKQUOTE>Visitor for type safe operations on osg::Node's.
|
|
Based on GOF's Visitor pattern. The NodeVisitor
|
|
is useful for developing type safe operations to nodes
|
|
in the scene graph (as per Visitor pattern), and adds to this
|
|
support for optional scene graph traversal to allow
|
|
operations to be applied to whole scenes at once. The Visitor
|
|
pattern uses a technique of double dispatch as a mechanism to
|
|
called the appropriate apply(..) method of the NodeVisitor. To
|
|
use this feature one must use the Node::accept(NodeVisitor) which
|
|
is extended in each Node subclass, rather than the NodeVisitor
|
|
apply directly. So use root->accept(myVisitor); instead of
|
|
myVisitor.apply(*root). The later method will bypass the double
|
|
dispatch and the appropriate NodeVisitor::apply(..) method will
|
|
not be called. </BLOCKQUOTE>
|
|
<DL>
|
|
|
|
<A NAME="TraversalMode"></A>
|
|
<A NAME="DOC.2.79.1"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>enum TraversalMode</B></TT>
|
|
<DL><DT><DD></DL><P><DL>
|
|
|
|
<A NAME="TRAVERSE_NONE"></A>
|
|
<A NAME="DOC.2.79.1.1"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> TRAVERSE_NONE</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="TRAVERSE_PARENTS"></A>
|
|
<A NAME="DOC.2.79.1.2"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> TRAVERSE_PARENTS</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="TRAVERSE_ALL_CHILDREN"></A>
|
|
<A NAME="DOC.2.79.1.3"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> TRAVERSE_ALL_CHILDREN</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="TRAVERSE_ACTIVE_CHILDREN"></A>
|
|
<A NAME="DOC.2.79.1.4"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> TRAVERSE_ACTIVE_CHILDREN</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="TRAVERSE_VISITOR"></A>
|
|
<A NAME="DOC.2.79.1.5"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> TRAVERSE_VISITOR</B></TT>
|
|
<DL><DT><DD></DL><P></DL>
|
|
|
|
<A NAME="VisitorType"></A>
|
|
<A NAME="DOC.2.79.2"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>enum VisitorType</B></TT>
|
|
<DL><DT><DD></DL><P><DL>
|
|
|
|
<A NAME="NODE_VISITOR"></A>
|
|
<A NAME="DOC.2.79.2.1"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> NODE_VISITOR</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="APP_VISITOR"></A>
|
|
<A NAME="DOC.2.79.2.2"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> APP_VISITOR</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="COLLECT_OCCLUDER_VISITOR"></A>
|
|
<A NAME="DOC.2.79.2.3"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> COLLECT_OCCLUDER_VISITOR</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="CULL_VISITOR"></A>
|
|
<A NAME="DOC.2.79.2.4"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> CULL_VISITOR</B></TT>
|
|
<DL><DT><DD></DL><P></DL>
|
|
|
|
<A NAME="NodeVisitor"></A>
|
|
<A NAME="DOC.2.79.3"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> NodeVisitor(<!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> tm=<!1><A HREF="NodeVisitor.html#DOC.2.79.1.1">TRAVERSE_NONE</A>)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="NodeVisitor"></A>
|
|
<A NAME="DOC.2.79.4"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> NodeVisitor(<!1><A HREF="NodeVisitor.html#DOC.2.79.2">VisitorType</A> type, <!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> tm=<!1><A HREF="NodeVisitor.html#DOC.2.79.1.1">TRAVERSE_NONE</A>)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="~NodeVisitor"></A>
|
|
<A NAME="DOC.2.79.5"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual ~NodeVisitor()</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="reset"></A>
|
|
<A NAME="DOC.2.79.6"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void reset()</B></TT>
|
|
<DD>Method to call to reset visitor. Useful for your visitor accumulates
|
|
state during a traversal, and you plan to reuse the visitor.
|
|
To flush that state for the next traversal than call reset() prior
|
|
to each traversal.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="setVisitorType"></A>
|
|
<A NAME="DOC.2.79.7"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline void setVisitorType(<!1><A HREF="NodeVisitor.html#DOC.2.79.2">VisitorType</A> type)</B></TT>
|
|
<DD>Set the VisitorType, used to distingush different visitors during
|
|
traversal of the scene, typically used in the Node::traverse() method
|
|
to select which behaviour to use for different types of traversal/visitors
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getVisitorType"></A>
|
|
<A NAME="DOC.2.79.8"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline <!1><A HREF="NodeVisitor.html#DOC.2.79.2">VisitorType</A> getVisitorType() const </B></TT>
|
|
<DD>Get the VisitorType
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="setTraversalNumber"></A>
|
|
<A NAME="DOC.2.79.9"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline void setTraversalNumber(const int fn)</B></TT>
|
|
<DD>Set the traversal number. Typically used to denote the frame count.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getTraversalNumber"></A>
|
|
<A NAME="DOC.2.79.10"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline const int getTraversalNumber() const </B></TT>
|
|
<DD>Get the traversal number. Typically used to denote the frame count.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="setFrameStamp"></A>
|
|
<A NAME="DOC.2.79.11"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline void setFrameStamp(<!1><A HREF="FrameStamp.html">FrameStamp</A>* fs)</B></TT>
|
|
<DD>Set the FrameStamp that this traversal is assoicated with
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getFrameStamp"></A>
|
|
<A NAME="DOC.2.79.12"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline const <!1><A HREF="FrameStamp.html">FrameStamp</A>* getFrameStamp() const </B></TT>
|
|
<DD>Get the FrameStamp that this traversal is assoicated with
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="setTraversalMask"></A>
|
|
<A NAME="DOC.2.79.13"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline void setTraversalMask(const Node::NodeMask mask)</B></TT>
|
|
<DD>Set the TraversalMask of this NodeVisitor.
|
|
The TraversalMask is used by the NodeVisitor::validNodeMask() method
|
|
to determine whether to operate on a node and its subgraph.
|
|
validNodeMask() is called automaticaly in the Node::accept() method before
|
|
any call to NodeVisitor::apply(), apply() is only ever called if validNodeMask
|
|
returns true. Note, if NodeVisitor::_traversalMask is 0 then all operations
|
|
will be swithced off for all nodes. Whereas setting both _traversalMask and
|
|
_nodeMaskOverride to 0xffffffff will allow a visitor to work on all nodes
|
|
regardless of their own Node::_nodeMask state.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getTraversalMask"></A>
|
|
<A NAME="DOC.2.79.14"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline const Node::NodeMask getTraversalMask() const </B></TT>
|
|
<DD>Get the TraversalMask
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="setNodeMaskOverride"></A>
|
|
<A NAME="DOC.2.79.15"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline void setNodeMaskOverride(const Node::NodeMask mask)</B></TT>
|
|
<DD>Set the NodeMaskOverride mask.
|
|
Used in validNodeMask() to determine whether to operate on a node or its
|
|
subgraph, by OR'ing NodeVisitor::_nodeMaskOverride with the Node's own Node::_nodeMask.
|
|
Typically used to force on nodes which may have
|
|
been switched off by their own Node::_nodeMask.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getNodeMaskOverride"></A>
|
|
<A NAME="DOC.2.79.16"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline const Node::NodeMask getNodeMaskOverride() const </B></TT>
|
|
<DD>Get the NodeMaskOverride mask
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="validNodeMask"></A>
|
|
<A NAME="DOC.2.79.17"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline const bool validNodeMask(const osg::Node& node) const </B></TT>
|
|
<DD>Method to called by Node and its subclass' Node::accept() method, if the result is true
|
|
to be used to cull operations of nodes and their subgraphs.
|
|
Return true if the result of a bit wise and of the NodeVisitor::_traversalMask
|
|
with the bit or between NodeVistor::_nodeMaskOverride and the Node::_nodeMask.
|
|
default values for _traversalMask is 0xffffffff, _nodeMaskOverride is 0x0,
|
|
and osg::Node::_nodeMask is 0xffffffff.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="setTraversalMode"></A>
|
|
<A NAME="DOC.2.79.18"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void setTraversalMode(const <!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> mode)</B></TT>
|
|
<DD>Set the traversal mode for Node::traverse() to use when
|
|
deciding which children of a node to traverse. If a
|
|
NodeVisitor has been attached via setTraverseVisitor()
|
|
and the new mode is not TRAVERSE_VISITOR then the attached
|
|
visitor is detached. Default mode is TRAVERSE_NONE.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getTraversalMode"></A>
|
|
<A NAME="DOC.2.79.19"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline const <!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> getTraversalMode() const </B></TT>
|
|
<DD>Get the traversal mode
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="setTraversalVisitor"></A>
|
|
<A NAME="DOC.2.79.20"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void setTraversalVisitor(<!1><A HREF="NodeVisitor.html">NodeVisitor</A>* nv)</B></TT>
|
|
<DD>Set a visitor to handle traversal.
|
|
Overrides the traverse mode setting it to TRAVERSAL_VISITOR.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getTraversalVisitor"></A>
|
|
<A NAME="DOC.2.79.21"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline <!1><A HREF="NodeVisitor.html">NodeVisitor</A>* getTraversalVisitor()</B></TT>
|
|
<DD>Get the traversal visitor, returns NULL if none is attached
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="traverse"></A>
|
|
<A NAME="DOC.2.79.22"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline void traverse(Node& node)</B></TT>
|
|
<DD>Method for handling traversal of a nodes.
|
|
If you intend to use the visitor for actively traversing
|
|
the scene graph then make sure the accept() methods call
|
|
this method unless they handle traversal directly.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="pushOntoNodePath"></A>
|
|
<A NAME="DOC.2.79.23"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline void pushOntoNodePath(Node* node)</B></TT>
|
|
<DD>Method called by osg::Node::accept() method before
|
|
a call the NodeVisitor::apply(). The back of the list will,
|
|
therefore, be the current node being visited inside the apply(..),
|
|
and the rest of the list will be the parental sequence of nodes
|
|
from the top most node applied down the graph to the current node.
|
|
Note, the user does not typically call pushNodeOnPath() as it
|
|
will be called automatically by the Node::accept() method.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="popFromNodePath"></A>
|
|
<A NAME="DOC.2.79.24"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline void popFromNodePath()</B></TT>
|
|
<DD>Method callby osg::Node::accept() method after
|
|
a call the NodeVisitor::apply().
|
|
Note, the user does not typically call pushNodeOnPath() as it
|
|
will be called automatically by the Node::accept() method.
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getNodePath"></A>
|
|
<A NAME="DOC.2.79.25"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>NodePath& getNodePath()</B></TT>
|
|
<DD>Get the non const NodePath from the top most node applied down
|
|
to the current Node being visited
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getNodePath"></A>
|
|
<A NAME="DOC.2.79.26"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>const NodePath& getNodePath() const </B></TT>
|
|
<DD>Get the const NodePath from the top most node applied down
|
|
to the current Node being visited
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getLocalToWorldMatrix"></A>
|
|
<A NAME="DOC.2.79.27"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>const bool getLocalToWorldMatrix(<!1><A HREF="Matrix.html">Matrix</A>& matrix, Node* node)</B></TT>
|
|
<DD>Get the Local To World Matrix from the NodePath for specified Transform::Mode, and u
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="getWorldToLocalMatrix"></A>
|
|
<A NAME="DOC.2.79.28"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>const bool getWorldToLocalMatrix(<!1><A HREF="Matrix.html">Matrix</A>& matrix, Node* node)</B></TT>
|
|
<DD>Get the World To Local Matrix from the NodePath for specified Transform::Mode
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.29"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(Node& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.30"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="Geode.html">Geode</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.31"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="Billboard.html">Billboard</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.32"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="Group.html">Group</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.33"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="Projection.html">Projection</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.34"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="ClipNode.html">ClipNode</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.35"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="LightSource.html">LightSource</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.36"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="Transform.html">Transform</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.37"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="DOFTransform.html">DOFTransform</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.38"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="MatrixTransform.html">MatrixTransform</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.39"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="PositionAttitudeTransform.html">PositionAttitudeTransform</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.40"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="Switch.html">Switch</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.41"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="Sequence.html">Sequence</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.42"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="LOD.html">LOD</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.43"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="Impostor.html">Impostor</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.44"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="ClearNode.html">ClearNode</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="apply"></A>
|
|
<A NAME="DOC.2.79.45"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(<!1><A HREF="OccluderNode.html">OccluderNode</A>& node)</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="_visitorType"></A>
|
|
<A NAME="DOC.2.79.46"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="NodeVisitor.html#DOC.2.79.2">VisitorType</A> _visitorType</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="_traversalNumber"></A>
|
|
<A NAME="DOC.2.79.47"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int _traversalNumber</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="_frameStamp"></A>
|
|
<A NAME="DOC.2.79.48"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="ref_ptr.html">ref_ptr</A><<!1><A HREF="FrameStamp.html">FrameStamp</A>> _frameStamp</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="_traversalVisitor"></A>
|
|
<A NAME="DOC.2.79.49"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="ref_ptr.html">ref_ptr</A><<!1><A HREF="NodeVisitor.html">NodeVisitor</A>> _traversalVisitor</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="_traversalMode"></A>
|
|
<A NAME="DOC.2.79.50"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="NodeVisitor.html#DOC.2.79.1">TraversalMode</A> _traversalMode</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="_traversalMask"></A>
|
|
<A NAME="DOC.2.79.51"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>Node::NodeMask _traversalMask</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="_nodeMaskOverride"></A>
|
|
<A NAME="DOC.2.79.52"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>Node::NodeMask _nodeMaskOverride</B></TT>
|
|
<DL><DT><DD></DL><P>
|
|
<A NAME="_nodePath"></A>
|
|
<A NAME="DOC.2.79.53"></A>
|
|
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>NodePath _nodePath</B></TT>
|
|
<DL><DT><DD></DL><P></DL>
|
|
<HR>
|
|
<DL><DT><B>Direct child classes:
|
|
</B><DD><A HREF="CollectOccludersVisitor.html">CollectOccludersVisitor</A><BR>
|
|
</DL>
|
|
|
|
<DL><DT><DD></DL><P><P><I><A HREF="index.html">Alphabetic index</A></I> <I><A HREF="HIER.html">HTML hierarchy of classes</A> or <A HREF="HIERjava.html">Java</A></I></P><HR>
|
|
<BR>
|
|
This page was generated with the help of <A HREF="http://docpp.sourceforge.net">DOC++</A>.
|
|
</BODY>
|
|
</HTML>
|