\hypertarget{a03343}{\section{A\+C\+G\+:\+:Scene\+Graph Namespace Reference}
\label{a03343}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \hyperlink{a03347}{Draw\+Modes}
\item 
 \hyperlink{a03348}{G\+L\+S\+L}
\begin{DoxyCompactList}\small\item\em This namespace contains all the classes and functions for handling \hyperlink{a03348}{G\+L\+S\+L} shader and program objects. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{a00297}{Array\+Resource\+Manager\+Node\+T}
\item 
class \hyperlink{a00300}{Arrow\+Node}
\item 
class \hyperlink{a00327}{Base\+Node}
\item 
class \hyperlink{a00367}{Bounding\+Box\+Action}
\item 
class \hyperlink{a00368}{Bounding\+Box\+Node}
\item 
class \hyperlink{a00373}{B\+Spline\+Curve\+Node\+T}
\item 
class \hyperlink{a00378}{B\+Spline\+Surface\+Node\+T}
\item 
class \hyperlink{a00385}{Camera\+Node}
\item 
class \hyperlink{a00389}{Cartesian\+Clipping\+Node}
\item 
class \hyperlink{a00403}{Check\+Dirty\+Action}
\item 
class \hyperlink{a00410}{Clipping\+Node}
\item 
class \hyperlink{a00419}{Collect\+Active\+Draw\+Modes\+Action}
\item 
class \hyperlink{a00421}{Collect\+Draw\+Modes\+Action}
\item 
class \hyperlink{a00462}{Coord\+Frame\+Node}
\item 
class \hyperlink{a00463}{Coordinate\+System\+Node}
\begin{DoxyCompactList}\small\item\em Node for displaying coordinate systems. \end{DoxyCompactList}\item 
class \hyperlink{a00464}{Coordsys\+Node}
\item 
class \hyperlink{a00503}{Draw\+Action}
\item 
struct \hyperlink{a00537}{enable\+\_\+if}
\item 
struct \hyperlink{a00539}{enable\+\_\+if$<$ false, T $>$}
\item 
class \hyperlink{a00542}{Env\+Map\+Node}
\item 
class \hyperlink{a00594}{Find\+Node\+Action}
\item 
class \hyperlink{a00648}{Glut\+Primitive\+Node}
\item 
class \hyperlink{a00660}{Grid\+Node}
\item 
class \hyperlink{a00766}{Light\+Node}
\item 
class \hyperlink{a00769}{Light\+Source}
\begin{DoxyCompactList}\small\item\em Structure to hold options for one \hyperlink{a00769}{Light\+Source}. \end{DoxyCompactList}\item 
class \hyperlink{a00770}{Light\+Source\+Handle}
\item 
class \hyperlink{a00771}{Light\+Source\+Node}
\item 
class \hyperlink{a00774}{Line\+Node}
\item 
struct \hyperlink{a00781}{Lock\+Mod\+T}
\item 
class \hyperlink{a00782}{Lock\+Node\+T}
\item 
class \hyperlink{a00788}{Manipulator\+Node}
\item 
class \hyperlink{a00789}{Material}
\item 
class \hyperlink{a00792}{Material\+Node}
\item 
class \hyperlink{a00828}{Mesh\+Node\+Base}
\item 
class \hyperlink{a00830}{Mesh\+Node\+T}
\item 
class \hyperlink{a00859}{Mouse\+Event\+Action}
\item 
class \hyperlink{a00870}{Multi\+Pass\+Info\+Action}
\item 
class \hyperlink{a00906}{O\+B\+J\+Node}
\item 
class \hyperlink{a00945}{O\+S\+D\+Transform\+Node}
\item 
class \hyperlink{a00956}{Pick\+Action}
\item 
class \hyperlink{a00977}{Point\+Node}
\item 
class \hyperlink{a00983}{Poly\+Line\+Node\+T}
\item 
class \hyperlink{a01055}{Ptr\+Resource\+Manager\+Node\+T}
\item 
class \hyperlink{a01075}{Qt\+Manipulator\+Node}
\item 
class \hyperlink{a01084}{Qt\+Translation\+Manipulator\+Node}
\item 
class \hyperlink{a01086}{Qt\+Widget\+Node}
\item 
class \hyperlink{a01088}{Quad\+Node}
\item 
struct \hyperlink{a01145}{Selection\+Mod\+T}
\item 
class \hyperlink{a01146}{Selection\+Node\+T}
\item 
class \hyperlink{a01151}{Separator\+Node}
\item 
class \hyperlink{a01153}{Set\+Draw\+Modes\+Action}
\item 
class \hyperlink{a01166}{Shader\+Node}
\item 
class \hyperlink{a01187}{Skeleton\+Node\+T}
\item 
class \hyperlink{a01194}{Slice\+Node}
\item 
class \hyperlink{a01221}{Splat\+Cloud\+Node}
\item 
struct \hyperlink{a01240}{Status\+Mod\+T}
\item 
singleton \hyperlink{a01241}{Status\+Node\+Base\+T}
\item 
class \hyperlink{a01242}{Status\+Node\+Base\+T$<$ Mesh, Mod, false $>$}
\item 
class \hyperlink{a01243}{Status\+Node\+Base\+T$<$ Mesh, Mod, true $>$}
\item 
class \hyperlink{a01245}{Status\+Node\+T}
\item 
class \hyperlink{a01247}{Status\+View\+Node\+T}
\item 
class \hyperlink{a01249}{Stencil\+Ref\+Node}
\item 
class \hyperlink{a01253}{Strip}
\begin{DoxyCompactList}\small\item\em class for managing a single triangle strip. \end{DoxyCompactList}\item 
class \hyperlink{a01255}{Strip\+Processor\+T}
\item 
class \hyperlink{a01265}{Switch\+Node}
\item 
class \hyperlink{a01280}{Text\+Node}
\item 
class \hyperlink{a01292}{Texture3\+D\+Node}
\item 
class \hyperlink{a01300}{Texture\+Node}
\item 
class \hyperlink{a01302}{Texture\+Render\+Info}
\item 
class \hyperlink{a01317}{Trackball\+Node}
\item 
class \hyperlink{a01320}{Transform\+Node}
\item 
class \hyperlink{a01321}{Translation\+Manipulator\+Node}
\item 
class \hyperlink{a01330}{Triangle\+Node}
\item 
class \hyperlink{a01341}{Tri\+Strip\+Node\+Deprecated\+T}
\item 
class \hyperlink{a01466}{Volume\+Mesh\+Node\+T}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a03343_a3189e3808d691534c1fb68eed6428711}{typedef unsigned int {\bfseries uint}}\label{a03343_a3189e3808d691534c1fb68eed6428711}

\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0}{Pick\+Target} \{ \\*
\hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0a4bd9a4df9c5977ab401d09cb0e6cbd16}{P\+I\+C\+K\+\_\+\+C\+E\+L\+L}, 
\hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0aacdc618a4766def461047ecafa8724da}{P\+I\+C\+K\+\_\+\+F\+A\+C\+E}, 
\hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0a06758ad68497c1331f2f6639e17b01fe}{P\+I\+C\+K\+\_\+\+E\+D\+G\+E}, 
\hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0ac350d88f39959a7b143792247f8706dd}{P\+I\+C\+K\+\_\+\+V\+E\+R\+T\+E\+X}, 
\\*
\hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0a16466d3b836973188ef3426feda66fcd}{P\+I\+C\+K\+\_\+\+A\+N\+Y\+T\+H\+I\+N\+G}, 
\hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0afa7c865892fd0d2bd9eb346c94312ea0}{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+E\+D\+G\+E}, 
\hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0aa26b6373fff6ab6ed3131d32ab59ced1}{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+V\+E\+R\+T\+E\+X}, 
\hyperlink{a03343_af5fad41dadeca314c2077f897377dbd0a4d101a4910e6004459c53482a3538ff3}{P\+I\+C\+K\+\_\+\+S\+P\+L\+I\+N\+E}
 \}
\begin{DoxyCompactList}\small\item\em What target to use for picking. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{a00327}{Base\+Node} $\ast$ \hyperlink{a03343_a1299f77548fd1f3541aeb9096c4b4b22}{find\+\_\+node} (\hyperlink{a00327}{Base\+Node} $\ast$\+\_\+root, unsigned int \+\_\+node\+\_\+idx)
\begin{DoxyCompactList}\small\item\em Find a node in the scene graph. \end{DoxyCompactList}\item 
\hyperlink{a00327}{Base\+Node} $\ast$ \hyperlink{a03343_a677575bee2f37781b1a43e235037d5d6}{find\+\_\+hidden\+\_\+node} (\hyperlink{a00327}{Base\+Node} $\ast$\+\_\+root, unsigned int \+\_\+node\+\_\+idx)
\begin{DoxyCompactList}\small\item\em Find a node in the scene graph. \end{DoxyCompactList}\item 
\hypertarget{a03343_a1561ba4965dbcd56447336c2ff846c2a}{{\footnotesize template$<$typename Action $>$ }\\\hyperlink{a00537}{enable\+\_\+if}$<$ has\+\_\+enter$<$ Action, \\*
void(Action\+::$\ast$)(\hyperlink{a00327}{Base\+Node} $\ast$) $>$\\*
\+::value, void $>$\+::type {\bfseries if\+\_\+has\+\_\+enter} (Action \&\+\_\+action, \hyperlink{a00327}{Base\+Node} $\ast$\+\_\+node)}\label{a03343_a1561ba4965dbcd56447336c2ff846c2a}

\item 
\hypertarget{a03343_af9da042711482a3fb2b2935154a64bac}{{\footnotesize template$<$typename Action $>$ }\\\hyperlink{a00537}{enable\+\_\+if}$<$!has\+\_\+enter$<$ Action, \\*
void(Action\+::$\ast$)(\hyperlink{a00327}{Base\+Node} $\ast$) $>$\\*
\+::value, void $>$\+::type {\bfseries if\+\_\+has\+\_\+enter} (Action \&, \hyperlink{a00327}{Base\+Node} $\ast$)}\label{a03343_af9da042711482a3fb2b2935154a64bac}

\item 
\hypertarget{a03343_ad057a5dccf37ee828dc60451f2e800bf}{{\footnotesize template$<$typename Action $>$ }\\\hyperlink{a00537}{enable\+\_\+if}$<$ has\+\_\+leave$<$ Action, \\*
void(Action\+::$\ast$)(\hyperlink{a00327}{Base\+Node} $\ast$) $>$\\*
\+::value, void $>$\+::type {\bfseries if\+\_\+has\+\_\+leave} (Action \&\+\_\+action, \hyperlink{a00327}{Base\+Node} $\ast$\+\_\+node)}\label{a03343_ad057a5dccf37ee828dc60451f2e800bf}

\item 
\hypertarget{a03343_a08a7c856c27f42757b89fe53628d1826}{{\footnotesize template$<$typename Action $>$ }\\\hyperlink{a00537}{enable\+\_\+if}$<$!has\+\_\+enter$<$ Action, \\*
void(Action\+::$\ast$)(\hyperlink{a00327}{Base\+Node} $\ast$) $>$\\*
\+::value, void $>$\+::type {\bfseries if\+\_\+has\+\_\+leave} (Action \&, \hyperlink{a00327}{Base\+Node} $\ast$)}\label{a03343_a08a7c856c27f42757b89fe53628d1826}

\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a03343_af10521b6f81a7a588708218d75936f81}{traverse} (\hyperlink{a00327}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a03343_a334bbeb5b340547913d31f7cf17f9872}{traverse\+\_\+all} (\hyperlink{a00327}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a03343_a7a6bc81c886119388cc6efe0fd7c8c85}{traverse\+\_\+multipass} (\hyperlink{a00327}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action, const unsigned int \&\+\_\+pass)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a03343_a43edcdd142eacba808a327fbc942a85c}{traverse\+\_\+multipass} (\hyperlink{a00327}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action, \hyperlink{a00643}{G\+L\+State} \&\+\_\+state, \hyperlink{a00509}{Draw\+Modes\+::\+Draw\+Mode}=\hyperlink{a03347_a86e2ee2cdca1cdeaf861126ce9604507}{Draw\+Modes\+::\+D\+E\+F\+A\+U\+L\+T})
\item 
void \hyperlink{a03343_a8f51719ad75f81a4e74d97d64bbf6c2f}{analyze\+Scene\+Graph} (\hyperlink{a00328}{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} $\ast$\+\_\+root, unsigned int \&\+\_\+max\+Passes, \hyperlink{a01409}{A\+C\+G\+::\+Vec3d} \&\+\_\+bbmin, \hyperlink{a01409}{A\+C\+G\+::\+Vec3d} \&\+\_\+bbmax)
\begin{DoxyCompactList}\small\item\em Analyze the \hyperlink{a03343}{Scene\+Graph} $<$\hyperlink{a01702}{A\+C\+G/\+Scenegraph/\+Scene\+Graph\+Analysis.\+hh}$>$ \end{DoxyCompactList}\item 
\hypertarget{a03343_a8581b93f38bd4e12d0bbf5f45e193543}{bool \hyperlink{a03343_a8581b93f38bd4e12d0bbf5f45e193543}{strip\+Texture\+Compare} (const \hyperlink{a01253}{Strip} \&i, const \hyperlink{a01253}{Strip} \&j)}\label{a03343_a8581b93f38bd4e12d0bbf5f45e193543}

\begin{DoxyCompactList}\small\item\em Compare function for sorting Strips depending on their texture index. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}{\bf stream replacements}\par
{\em These stream provide replacements for clog, cout, and cerr. They have the advantage that they can easily be multiplexed. \begin{DoxySeeAlso}{See also}
Open\+Mesh\+::mostream 
\end{DoxySeeAlso}
}\begin{DoxyCompactItemize}
\item 
\hypertarget{a03343_a0f813ef5c05640fed8f40c91a7c311f7}{O\+P\+E\+N\+M\+E\+S\+H\+D\+L\+L\+E\+X\+P\+O\+R\+T \\*
Open\+Mesh\+::mostream \& {\bfseries omlog} ()}\label{a03343_a0f813ef5c05640fed8f40c91a7c311f7}

\item 
\hypertarget{a03343_adeb09c914310e3151f79726e7fda37b5}{O\+P\+E\+N\+M\+E\+S\+H\+D\+L\+L\+E\+X\+P\+O\+R\+T \\*
Open\+Mesh\+::mostream \& {\bfseries omout} ()}\label{a03343_adeb09c914310e3151f79726e7fda37b5}

\item 
\hypertarget{a03343_a020c3a7966239015383bb1768677069a}{O\+P\+E\+N\+M\+E\+S\+H\+D\+L\+L\+E\+X\+P\+O\+R\+T \\*
Open\+Mesh\+::mostream \& {\bfseries omerr} ()}\label{a03343_a020c3a7966239015383bb1768677069a}

\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a03343_ad5782109b0adcee6557ab4f3d894a051}{const \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{Vec4f} {\bfseries cylinder\+\_\+color} (0.\+8f, 0.\+4f, 0.\+4f, 1.\+0f)}\label{a03343_ad5782109b0adcee6557ab4f3d894a051}

\item 
\hypertarget{a03343_a819c4f2bb17cbdaba7920967e4694796}{const \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{Vec4f} {\bfseries sphere\+\_\+color} (0.\+8f, 0.\+4f, 0.\+4f, 1.\+0f)}\label{a03343_a819c4f2bb17cbdaba7920967e4694796}

\item 
\hypertarget{a03343_ad19e608154f6721a267263dee9d380f2}{const \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{Vec4f} {\bfseries select\+\_\+color} (1.\+0f, 0.\+1f, 0.\+1f, 1.\+0f)}\label{a03343_ad19e608154f6721a267263dee9d380f2}

\item 
\hypertarget{a03343_a71447c0f83fb912c4a64e500f9c2a81c}{const float {\bfseries S\+C\+A\+L\+E\+\_\+\+C\+O\+N\+S\+T} = 5.\+0f}\label{a03343_a71447c0f83fb912c4a64e500f9c2a81c}

\item 
const \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{Vec4f} {\bfseries colors} \mbox{[}4\mbox{]}\mbox{[}6\mbox{]}
\item 
\hypertarget{a03343_a3b32c62ebce5e866fb4ccbdc15561f5d}{const float {\bfseries axis\+\_\+length} = 0.\+1f}\label{a03343_a3b32c62ebce5e866fb4ccbdc15561f5d}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
This namespace holds the \hyperlink{a03336}{A\+C\+G} scene graph, all its nodes and helpers. 

\subsection{Enumeration Type Documentation}
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!Pick\+Target@{Pick\+Target}}
\index{Pick\+Target@{Pick\+Target}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{Pick\+Target}]{\setlength{\rightskip}{0pt plus 5cm}enum A\+C\+G\+::\+Scene\+Graph\+::\+Pick\+Target}}\label{a03343_af5fad41dadeca314c2077f897377dbd0}


What target to use for picking. 

\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{P\+I\+C\+K\+\_\+\+C\+E\+L\+L@{P\+I\+C\+K\+\_\+\+C\+E\+L\+L}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!P\+I\+C\+K\+\_\+\+C\+E\+L\+L@{P\+I\+C\+K\+\_\+\+C\+E\+L\+L}}\item[{\em 
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0a4bd9a4df9c5977ab401d09cb0e6cbd16}{P\+I\+C\+K\+\_\+\+C\+E\+L\+L}\label{a03343_af5fad41dadeca314c2077f897377dbd0a4bd9a4df9c5977ab401d09cb0e6cbd16}
}]picks faces (may not be implemented for all nodes) \index{P\+I\+C\+K\+\_\+\+F\+A\+C\+E@{P\+I\+C\+K\+\_\+\+F\+A\+C\+E}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!P\+I\+C\+K\+\_\+\+F\+A\+C\+E@{P\+I\+C\+K\+\_\+\+F\+A\+C\+E}}\item[{\em 
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0aacdc618a4766def461047ecafa8724da}{P\+I\+C\+K\+\_\+\+F\+A\+C\+E}\label{a03343_af5fad41dadeca314c2077f897377dbd0aacdc618a4766def461047ecafa8724da}
}]picks faces (should be implemented for all nodes) \index{P\+I\+C\+K\+\_\+\+E\+D\+G\+E@{P\+I\+C\+K\+\_\+\+E\+D\+G\+E}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!P\+I\+C\+K\+\_\+\+E\+D\+G\+E@{P\+I\+C\+K\+\_\+\+E\+D\+G\+E}}\item[{\em 
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0a06758ad68497c1331f2f6639e17b01fe}{P\+I\+C\+K\+\_\+\+E\+D\+G\+E}\label{a03343_af5fad41dadeca314c2077f897377dbd0a06758ad68497c1331f2f6639e17b01fe}
}]picks edges (may not be implemented for all nodes) \index{P\+I\+C\+K\+\_\+\+V\+E\+R\+T\+E\+X@{P\+I\+C\+K\+\_\+\+V\+E\+R\+T\+E\+X}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!P\+I\+C\+K\+\_\+\+V\+E\+R\+T\+E\+X@{P\+I\+C\+K\+\_\+\+V\+E\+R\+T\+E\+X}}\item[{\em 
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0ac350d88f39959a7b143792247f8706dd}{P\+I\+C\+K\+\_\+\+V\+E\+R\+T\+E\+X}\label{a03343_af5fad41dadeca314c2077f897377dbd0ac350d88f39959a7b143792247f8706dd}
}]picks verices (may not be implemented for all nodes) \index{P\+I\+C\+K\+\_\+\+A\+N\+Y\+T\+H\+I\+N\+G@{P\+I\+C\+K\+\_\+\+A\+N\+Y\+T\+H\+I\+N\+G}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!P\+I\+C\+K\+\_\+\+A\+N\+Y\+T\+H\+I\+N\+G@{P\+I\+C\+K\+\_\+\+A\+N\+Y\+T\+H\+I\+N\+G}}\item[{\em 
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0a16466d3b836973188ef3426feda66fcd}{P\+I\+C\+K\+\_\+\+A\+N\+Y\+T\+H\+I\+N\+G}\label{a03343_af5fad41dadeca314c2077f897377dbd0a16466d3b836973188ef3426feda66fcd}
}]pick any of the prior targets (should be implemented for all nodes) \index{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+E\+D\+G\+E@{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+E\+D\+G\+E}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+E\+D\+G\+E@{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+E\+D\+G\+E}}\item[{\em 
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0afa7c865892fd0d2bd9eb346c94312ea0}{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+E\+D\+G\+E}\label{a03343_af5fad41dadeca314c2077f897377dbd0afa7c865892fd0d2bd9eb346c94312ea0}
}]picks only visible front edges (may not be implemented for all nodes) \index{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+V\+E\+R\+T\+E\+X@{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+V\+E\+R\+T\+E\+X}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+V\+E\+R\+T\+E\+X@{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+V\+E\+R\+T\+E\+X}}\item[{\em 
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0aa26b6373fff6ab6ed3131d32ab59ced1}{P\+I\+C\+K\+\_\+\+F\+R\+O\+N\+T\+\_\+\+V\+E\+R\+T\+E\+X}\label{a03343_af5fad41dadeca314c2077f897377dbd0aa26b6373fff6ab6ed3131d32ab59ced1}
}]picks only visible front verices (may not be implemented for all nodes) \index{P\+I\+C\+K\+\_\+\+S\+P\+L\+I\+N\+E@{P\+I\+C\+K\+\_\+\+S\+P\+L\+I\+N\+E}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!P\+I\+C\+K\+\_\+\+S\+P\+L\+I\+N\+E@{P\+I\+C\+K\+\_\+\+S\+P\+L\+I\+N\+E}}\item[{\em 
\hypertarget{a03343_af5fad41dadeca314c2077f897377dbd0a4d101a4910e6004459c53482a3538ff3}{P\+I\+C\+K\+\_\+\+S\+P\+L\+I\+N\+E}\label{a03343_af5fad41dadeca314c2077f897377dbd0a4d101a4910e6004459c53482a3538ff3}
}]Pick spline curve or surface (picks u or u,v coords respectively) \end{description}
\end{Desc}


Definition at line 99 of file Base\+Node.\+hh.



\subsection{Function Documentation}
\hypertarget{a03343_a8f51719ad75f81a4e74d97d64bbf6c2f}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!analyze\+Scene\+Graph@{analyze\+Scene\+Graph}}
\index{analyze\+Scene\+Graph@{analyze\+Scene\+Graph}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{analyze\+Scene\+Graph}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+D\+L\+L\+E\+X\+P\+O\+R\+T void A\+C\+G\+::\+Scene\+Graph\+::analyze\+Scene\+Graph (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} $\ast$}]{\+\_\+root, }
\item[{unsigned int \&}]{\+\_\+max\+Passes, }
\item[{{\bf A\+C\+G\+::\+Vec3d} \&}]{\+\_\+bbmin, }
\item[{{\bf A\+C\+G\+::\+Vec3d} \&}]{\+\_\+bbmax}
\end{DoxyParamCaption}
)}}\label{a03343_a8f51719ad75f81a4e74d97d64bbf6c2f}


Analyze the \hyperlink{a03343}{Scene\+Graph} $<$\hyperlink{a01702}{A\+C\+G/\+Scenegraph/\+Scene\+Graph\+Analysis.\+hh}$>$ 


\begin{DoxyParams}{Parameters}
{\em \+\_\+root} & Root node of the scenegraph \\
\hline
{\em \+\_\+max\+Passes} & Returns the maximal number of render passes \\
\hline
{\em \+\_\+bbmin} & Returns lower left of the bounding box \\
\hline
{\em \+\_\+bbmax} & Returns upper right of the bounding box \\
\hline
\end{DoxyParams}


Definition at line 62 of file Scene\+Graph\+Analysis.\+cc.

\hypertarget{a03343_a677575bee2f37781b1a43e235037d5d6}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!find\+\_\+hidden\+\_\+node@{find\+\_\+hidden\+\_\+node}}
\index{find\+\_\+hidden\+\_\+node@{find\+\_\+hidden\+\_\+node}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{find\+\_\+hidden\+\_\+node}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+D\+L\+L\+E\+X\+P\+O\+R\+T {\bf Base\+Node} $\ast$ A\+C\+G\+::\+Scene\+Graph\+::find\+\_\+hidden\+\_\+node (
\begin{DoxyParamCaption}
\item[{{\bf Base\+Node} $\ast$}]{\+\_\+root, }
\item[{unsigned int}]{\+\_\+node\+\_\+idx}
\end{DoxyParamCaption}
)}}\label{a03343_a677575bee2f37781b1a43e235037d5d6}


Find a node in the scene graph. 

Traverses scenegraph just like the find\+\_\+node function, but includes hidden nodes. 

Definition at line 99 of file Scene\+Graph.\+cc.

\hypertarget{a03343_a1299f77548fd1f3541aeb9096c4b4b22}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!find\+\_\+node@{find\+\_\+node}}
\index{find\+\_\+node@{find\+\_\+node}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{find\+\_\+node}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+D\+L\+L\+E\+X\+P\+O\+R\+T {\bf Base\+Node} $\ast$ A\+C\+G\+::\+Scene\+Graph\+::find\+\_\+node (
\begin{DoxyParamCaption}
\item[{{\bf Base\+Node} $\ast$}]{\+\_\+root, }
\item[{unsigned int}]{\+\_\+node\+\_\+idx}
\end{DoxyParamCaption}
)}}\label{a03343_a1299f77548fd1f3541aeb9096c4b4b22}


Find a node in the scene graph. 

Traverse scenegraph starting at \+\_\+root, looking for a node whose id is \+\_\+node\+\_\+idx . Returns 0 if node wasn't found.


\begin{DoxyParams}{Parameters}
{\em \+\_\+root} & The root node where the traversal starts (not necessary the root node of the scenegraph) \\
\hline
{\em \+\_\+node\+\_\+idx} & The node index this function should look for \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if the node was not found, otherwise a pointer to the node. 
\end{DoxyReturn}


Definition at line 83 of file Scene\+Graph.\+cc.

\hypertarget{a03343_af10521b6f81a7a588708218d75936f81}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!traverse@{traverse}}
\index{traverse@{traverse}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{traverse}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Action $>$ void A\+C\+G\+::\+Scene\+Graph\+::traverse (
\begin{DoxyParamCaption}
\item[{{\bf Base\+Node} $\ast$}]{\+\_\+node, }
\item[{Action \&}]{\+\_\+action}
\end{DoxyParamCaption}
)}}\label{a03343_af10521b6f81a7a588708218d75936f81}
Traverse the scenegraph starting at the node {\ttfamily \+\_\+node} and apply the action {\ttfamily \+\_\+action} to each node. This traversal function will call the enter/leave functions of the action if they have been implemented. 

Definition at line 143 of file Scene\+Graph.\+hh.

\hypertarget{a03343_a334bbeb5b340547913d31f7cf17f9872}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!traverse\+\_\+all@{traverse\+\_\+all}}
\index{traverse\+\_\+all@{traverse\+\_\+all}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{traverse\+\_\+all}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Action $>$ void A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+all (
\begin{DoxyParamCaption}
\item[{{\bf Base\+Node} $\ast$}]{\+\_\+node, }
\item[{Action \&}]{\+\_\+action}
\end{DoxyParamCaption}
)}}\label{a03343_a334bbeb5b340547913d31f7cf17f9872}
Traverse the scenegraph exactly like the \hyperlink{a03343_af10521b6f81a7a588708218d75936f81}{traverse()} function does, but also include hidden nodes. 

Definition at line 208 of file Scene\+Graph.\+hh.

\hypertarget{a03343_a7a6bc81c886119388cc6efe0fd7c8c85}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!traverse\+\_\+multipass@{traverse\+\_\+multipass}}
\index{traverse\+\_\+multipass@{traverse\+\_\+multipass}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{traverse\+\_\+multipass}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Action $>$ void A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+multipass (
\begin{DoxyParamCaption}
\item[{{\bf Base\+Node} $\ast$}]{\+\_\+node, }
\item[{Action \&}]{\+\_\+action, }
\item[{const unsigned int \&}]{\+\_\+pass}
\end{DoxyParamCaption}
)}}\label{a03343_a7a6bc81c886119388cc6efe0fd7c8c85}
Traverse the scenegraph starting at the node {\ttfamily \+\_\+node} and apply the action {\ttfamily \+\_\+action} to each node. This traversal function will call the enter/leave functions of the action if they have been implemented. This function traverses the scene graph multiple times if multipass rendering is turned on. \hyperlink{a00643}{G\+L\+State} holds attributes to control render passes. Attention\+: Render passes are 1-\/indexed.~\newline
 !!! You should ot use this function directly. Use the traverse\+\_\+multipass function which controls the glstate too. This function will also manage the passes for you!!! 

Definition at line 260 of file Scene\+Graph.\+hh.

\hypertarget{a03343_a43edcdd142eacba808a327fbc942a85c}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!traverse\+\_\+multipass@{traverse\+\_\+multipass}}
\index{traverse\+\_\+multipass@{traverse\+\_\+multipass}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{traverse\+\_\+multipass}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Action $>$ void A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+multipass (
\begin{DoxyParamCaption}
\item[{{\bf Base\+Node} $\ast$}]{\+\_\+node, }
\item[{Action \&}]{\+\_\+action, }
\item[{G\+L\+State \&}]{\+\_\+state, }
\item[{Draw\+Modes\+::\+Draw\+Mode}]{ = {\ttfamily DrawModes\+:\+:DEFAULT}}
\end{DoxyParamCaption}
)}}\label{a03343_a43edcdd142eacba808a327fbc942a85c}
Traverse the scenegraph starting at the node {\ttfamily \+\_\+node} and apply the action {\ttfamily action} to each node. When arriving at a node, its \hyperlink{a00327_aeb32b92d411b21712d12662ddd910ee8}{Base\+Node\+::enter()} function is called, then {\ttfamily \+\_\+action} is applied and the node's children are traversed. After that the \hyperlink{a00327_abfaa9091bfb2ff5d221884902c100bfe}{Base\+Node\+::leave()} method is called. Do this in multiple passes.

{\bfseries You have to initialize glstate before doing this\+:}~\newline
In the state you give here use \hyperlink{a00643_a832488ef67b1ae775574338c6005c0e5}{G\+L\+State\+::set\+\_\+max\+\_\+render\+\_\+passes} to set the maximum number of renderpasses that should be performed. This is not computed here, as the number only changes if the scenegraph is changed and not for all render calls.

\begin{DoxySeeAlso}{See also}
\hyperlink{a00328}{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} 
\end{DoxySeeAlso}


Definition at line 335 of file Scene\+Graph.\+hh.



\subsection{Variable Documentation}
\hypertarget{a03343_a27afe32f0d3c8c484ff12e2d1a5ea774}{\index{A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}!colors@{colors}}
\index{colors@{colors}!A\+C\+G\+::\+Scene\+Graph@{A\+C\+G\+::\+Scene\+Graph}}
\subsubsection[{colors}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Vec4f} A\+C\+G\+::\+Scene\+Graph\+::colors\mbox{[}4\mbox{]}\mbox{[}6\mbox{]}}}\label{a03343_a27afe32f0d3c8c484ff12e2d1a5ea774}
{\bfseries Initial value\+:}
\begin{DoxyCode}
= \{
  
  \{
    
    \hyperlink{a01409}{Vec4f}(0.2f,0.2f,0.2f,1.0f), \hyperlink{a01409}{Vec4f}(0.5f,0.5f,0.5f,1.0f), \hyperlink{a01409}{Vec4f}(0.8f,0.8f,0.8f,1.0f),
    
    \hyperlink{a01409}{Vec4f}(0.2f,0.2f,0.2f,0.2f), \hyperlink{a01409}{Vec4f}(0.5f,0.5f,0.5f,0.4f), \hyperlink{a01409}{Vec4f}(0.8f,0.8f,0.8f,0.6f)
  \},
  
  \{
    
    \hyperlink{a01409}{Vec4f}(0.2f,0.0f,0.0f,1.0f), \hyperlink{a01409}{Vec4f}(0.5f,0.0f,0.0f,1.0f), \hyperlink{a01409}{Vec4f}(0.8f,0.0f,0.0f,1.0f),
    
    \hyperlink{a01409}{Vec4f}(0.3f,0.1f,0.1f,0.2f), \hyperlink{a01409}{Vec4f}(0.5f,0.2f,0.2f,0.4f), \hyperlink{a01409}{Vec4f}(0.8f,0.4f,0.4f,0.6f)
  \},
  
  \{
    
    \hyperlink{a01409}{Vec4f}(0.0f,0.2f,0.0f,1.0f), \hyperlink{a01409}{Vec4f}(0.0f,0.5f,0.0f,1.0f), \hyperlink{a01409}{Vec4f}(0.0f,0.8f,0.0f,1.0f),
    
    \hyperlink{a01409}{Vec4f}(0.1f,0.3f,0.1f,0.2f), \hyperlink{a01409}{Vec4f}(0.2f,0.5f,0.2f,0.4f), \hyperlink{a01409}{Vec4f}(0.4f,0.8f,0.4f,0.6f)
  \},
  
  \{
    
    \hyperlink{a01409}{Vec4f}(0.0f,0.0f,0.2f,1.0f), \hyperlink{a01409}{Vec4f}(0.0f,0.0f,0.5f,1.0f), \hyperlink{a01409}{Vec4f}(0.0f,0.0f,0.8f,1.0f),
    
    \hyperlink{a01409}{Vec4f}(0.1f,0.1f,0.3f,0.2f), \hyperlink{a01409}{Vec4f}(0.2f,0.2f,0.5f,0.4f), \hyperlink{a01409}{Vec4f}(0.4f,0.4f,0.8f,0.6f)
  \}
\}
\end{DoxyCode}


Definition at line 84 of file Translation\+Manipulator\+Node.\+cc.

