\hypertarget{a01700}{\section{A\+C\+G/\+Scenegraph/\+Scene\+Graph.hh File Reference}
\label{a01700}\index{A\+C\+G/\+Scenegraph/\+Scene\+Graph.\+hh@{A\+C\+G/\+Scenegraph/\+Scene\+Graph.\+hh}}
}
{\ttfamily \#include \char`\"{}Base\+Node.\+hh\char`\"{}}\\*
{\ttfamily \#include \char`\"{}Draw\+Modes.\+hh\char`\"{}}\\*
{\ttfamily \#include \char`\"{}../\+Math/\+Vector\+T.\+hh\char`\"{}}\\*
{\ttfamily \#include $<$cfloat$>$}\\*
{\ttfamily \#include $<$Q\+Mouse\+Event$>$}\\*
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a00537}{A\+C\+G\+::\+Scene\+Graph\+::enable\+\_\+if$<$ C, T $>$}
\item 
struct \hyperlink{a00539}{A\+C\+G\+::\+Scene\+Graph\+::enable\+\_\+if$<$ false, T $>$}
\item 
class \hyperlink{a00367}{A\+C\+G\+::\+Scene\+Graph\+::\+Bounding\+Box\+Action}
\item 
class \hyperlink{a00870}{A\+C\+G\+::\+Scene\+Graph\+::\+Multi\+Pass\+Info\+Action}
\item 
class \hyperlink{a00594}{A\+C\+G\+::\+Scene\+Graph\+::\+Find\+Node\+Action}
\item 
class \hyperlink{a00421}{A\+C\+G\+::\+Scene\+Graph\+::\+Collect\+Draw\+Modes\+Action}
\item 
class \hyperlink{a00419}{A\+C\+G\+::\+Scene\+Graph\+::\+Collect\+Active\+Draw\+Modes\+Action}
\item 
class \hyperlink{a01153}{A\+C\+G\+::\+Scene\+Graph\+::\+Set\+Draw\+Modes\+Action}
\item 
class \hyperlink{a00503}{A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Action}
\item 
class \hyperlink{a00956}{A\+C\+G\+::\+Scene\+Graph\+::\+Pick\+Action}
\item 
class \hyperlink{a00859}{A\+C\+G\+::\+Scene\+Graph\+::\+Mouse\+Event\+Action}
\item 
class \hyperlink{a00403}{A\+C\+G\+::\+Scene\+Graph\+::\+Check\+Dirty\+Action}
\end{DoxyCompactItemize}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \hyperlink{a03336}{A\+C\+G}
\begin{DoxyCompactList}\small\item\em Namespace providing different geometric functions concerning angles. \end{DoxyCompactList}\item 
 \hyperlink{a03343}{A\+C\+G\+::\+Scene\+Graph}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01686_a3a5fed463f5f1dbb310c07274a807234}{\#define {\bfseries A\+C\+G\+\_\+\+S\+C\+E\+N\+E\+G\+R\+A\+P\+H\+\_\+\+H\+H}}\label{a01686_a3a5fed463f5f1dbb310c07274a807234}

\item 
\#define {\bfseries H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C}(func)
\item 
\#define {\bfseries H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C}(func)
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a03343_a1561ba4965dbcd56447336c2ff846c2a}{{\footnotesize template$<$typename Action $>$ }\\enable\+\_\+if$<$ has\+\_\+enter$<$ Action, \\*
void(Action\+::$\ast$)(\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$) $>$\\*
\+::value, void $>$\+::type {\bfseries A\+C\+G\+::\+Scene\+Graph\+::if\+\_\+has\+\_\+enter} (Action \&\+\_\+action, \hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node)}\label{a03343_a1561ba4965dbcd56447336c2ff846c2a}

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

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

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

\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a03343_af10521b6f81a7a588708218d75936f81}{A\+C\+G\+::\+Scene\+Graph\+::traverse} (\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a03343_a334bbeb5b340547913d31f7cf17f9872}{A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+all} (\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a03343_a7a6bc81c886119388cc6efe0fd7c8c85}{A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+multipass} (\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action, const unsigned int \&\+\_\+pass)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a03343_a43edcdd142eacba808a327fbc942a85c}{A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+multipass} (\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action, G\+L\+State \&\+\_\+state, Draw\+Modes\+::\+Draw\+Mode=Draw\+Modes\+::\+D\+E\+F\+A\+U\+L\+T)
\item 
\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$ \hyperlink{a03343_a1299f77548fd1f3541aeb9096c4b4b22}{A\+C\+G\+::\+Scene\+Graph\+::find\+\_\+node} (\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+root, unsigned int \+\_\+node\+\_\+idx)
\begin{DoxyCompactList}\small\item\em Find a node in the scene graph. \end{DoxyCompactList}\item 
\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$ \hyperlink{a03343_a677575bee2f37781b1a43e235037d5d6}{A\+C\+G\+::\+Scene\+Graph\+::find\+\_\+hidden\+\_\+node} (\hyperlink{a02486_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+root, unsigned int \+\_\+node\+\_\+idx)
\begin{DoxyCompactList}\small\item\em Find a node in the scene graph. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
This file contains the traversal functions used to apply actions to the Scene\+Graph. 

Definition in file \hyperlink{a01700_source}{Scene\+Graph.\+hh}.



\subsection{Macro Definition Documentation}
\hypertarget{a01700_a8fc9ce15d1f493dac458e328111288f9}{\index{Scene\+Graph.\+hh@{Scene\+Graph.\+hh}!H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C@{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C}}
\index{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C@{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C}!Scene\+Graph.\+hh@{Scene\+Graph.\+hh}}
\subsubsection[{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C}]{\setlength{\rightskip}{0pt plus 5cm}\#define H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C(
\begin{DoxyParamCaption}
\item[{}]{func}
\end{DoxyParamCaption}
)}}\label{a01700_a8fc9ce15d1f493dac458e328111288f9}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keyword}{template}<\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Sign>                                               \(\backslash\)
    struct has\_##func \{                                                               \(\backslash\)
        template <typename U, U> \textcolor{keyword}{struct }type\_check;                                   \(\backslash\)
        template <typename \_1> \textcolor{keyword}{static} char (& chk(type\_check<Sign, &\_1::func> *))[1]; \(\backslash\)
        template <typename   > \textcolor{keyword}{static} char (& chk(...))[2];                           \(\backslash\)
        static \textcolor{keywordtype}{bool} \textcolor{keyword}{const} value = \textcolor{keyword}{sizeof}(chk<T>(0)) == 1;                             \(\backslash\)
    \};
\end{DoxyCode}


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

\hypertarget{a01686_a8fc9ce15d1f493dac458e328111288f9}{\index{Scene\+Graph.\+hh@{Scene\+Graph.\+hh}!H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C@{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C}}
\index{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C@{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C}!Scene\+Graph.\+hh@{Scene\+Graph.\+hh}}
\subsubsection[{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C}]{\setlength{\rightskip}{0pt plus 5cm}\#define H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+N\+C(
\begin{DoxyParamCaption}
\item[{}]{func}
\end{DoxyParamCaption}
)}}\label{a01686_a8fc9ce15d1f493dac458e328111288f9}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keyword}{template}<\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Sign>                                               \(\backslash\)
    struct has\_##func \{                                                               \(\backslash\)
        template <typename U, U> \textcolor{keyword}{struct }type\_check;                                   \(\backslash\)
        template <typename \_1> \textcolor{keyword}{static} char (& chk(type\_check<Sign, &\_1::func> *))[1]; \(\backslash\)
        template <typename   > \textcolor{keyword}{static} char (& chk(...))[2];                           \(\backslash\)
        static \textcolor{keywordtype}{bool} \textcolor{keyword}{const} value = \textcolor{keyword}{sizeof}(chk<T>(0)) == 1;                             \(\backslash\)
    \};
\end{DoxyCode}
