\hypertarget{a01094}{}\section{Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+Scenegraph/\+Scene\+Graph.hh File Reference}
\label{a01094}\index{Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+Scenegraph/\+Scene\+Graph.\+hh@{Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+Scenegraph/\+Scene\+Graph.\+hh}}
{\ttfamily \#include \char`\"{}Base\+Node.\+hh\char`\"{}}\newline
{\ttfamily \#include \char`\"{}Draw\+Modes.\+hh\char`\"{}}\newline
{\ttfamily \#include \char`\"{}../\+Math/\+Vector\+T.\+hh\char`\"{}}\newline
{\ttfamily \#include $<$cfloat$>$}\newline
{\ttfamily \#include $<$Q\+Mouse\+Event$>$}\newline
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a07940}{A\+C\+G\+::\+Scene\+Graph\+::enable\+\_\+if$<$ C, T $>$}
\item 
struct \hyperlink{a07944}{A\+C\+G\+::\+Scene\+Graph\+::enable\+\_\+if$<$ false, T $>$}
\item 
class \hyperlink{a07948}{A\+C\+G\+::\+Scene\+Graph\+::\+Bounding\+Box\+Action}
\item 
class \hyperlink{a07952}{A\+C\+G\+::\+Scene\+Graph\+::\+Multi\+Pass\+Info\+Action}
\item 
class \hyperlink{a07956}{A\+C\+G\+::\+Scene\+Graph\+::\+Find\+Node\+Action}
\item 
class \hyperlink{a07960}{A\+C\+G\+::\+Scene\+Graph\+::\+Collect\+Draw\+Modes\+Action}
\item 
class \hyperlink{a07964}{A\+C\+G\+::\+Scene\+Graph\+::\+Collect\+Active\+Draw\+Modes\+Action}
\item 
class \hyperlink{a07968}{A\+C\+G\+::\+Scene\+Graph\+::\+Set\+Draw\+Modes\+Action}
\item 
class \hyperlink{a07972}{A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Action}
\item 
class \hyperlink{a07976}{A\+C\+G\+::\+Scene\+Graph\+::\+Pick\+Action}
\item 
class \hyperlink{a07980}{A\+C\+G\+::\+Scene\+Graph\+::\+Mouse\+Event\+Action}
\item 
class \hyperlink{a07984}{A\+C\+G\+::\+Scene\+Graph\+::\+Check\+Dirty\+Action}
\end{DoxyCompactItemize}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \hyperlink{a06176}{A\+CG}
\begin{DoxyCompactList}\small\item\em Namespace providing different geometric functions concerning angles. \end{DoxyCompactList}\item 
 \hyperlink{a06177}{A\+C\+G\+::\+Scene\+Graph}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define {\bfseries H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+NC}(func)
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a06177_a1561ba4965dbcd56447336c2ff846c2a}\label{a06177_a1561ba4965dbcd56447336c2ff846c2a}} 
{\footnotesize template$<$typename Action $>$ }\\enable\+\_\+if$<$ has\+\_\+enter$<$ Action, void(Action\+::$\ast$)(\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$) $>$\+::value, void $>$\+::type {\bfseries A\+C\+G\+::\+Scene\+Graph\+::if\+\_\+has\+\_\+enter} (Action \&\+\_\+action, \hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node)
\item 
\mbox{\Hypertarget{a06177_af9da042711482a3fb2b2935154a64bac}\label{a06177_af9da042711482a3fb2b2935154a64bac}} 
{\footnotesize template$<$typename Action $>$ }\\enable\+\_\+if$<$!has\+\_\+enter$<$ Action, void(Action\+::$\ast$)(\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$) $>$\+::value, void $>$\+::type {\bfseries A\+C\+G\+::\+Scene\+Graph\+::if\+\_\+has\+\_\+enter} (Action \&, \hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$)
\item 
\mbox{\Hypertarget{a06177_ad057a5dccf37ee828dc60451f2e800bf}\label{a06177_ad057a5dccf37ee828dc60451f2e800bf}} 
{\footnotesize template$<$typename Action $>$ }\\enable\+\_\+if$<$ has\+\_\+leave$<$ Action, void(Action\+::$\ast$)(\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$) $>$\+::value, void $>$\+::type {\bfseries A\+C\+G\+::\+Scene\+Graph\+::if\+\_\+has\+\_\+leave} (Action \&\+\_\+action, \hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node)
\item 
\mbox{\Hypertarget{a06177_a08a7c856c27f42757b89fe53628d1826}\label{a06177_a08a7c856c27f42757b89fe53628d1826}} 
{\footnotesize template$<$typename Action $>$ }\\enable\+\_\+if$<$!has\+\_\+enter$<$ Action, void(Action\+::$\ast$)(\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$) $>$\+::value, void $>$\+::type {\bfseries A\+C\+G\+::\+Scene\+Graph\+::if\+\_\+has\+\_\+leave} (Action \&, \hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a06177_af10521b6f81a7a588708218d75936f81}{A\+C\+G\+::\+Scene\+Graph\+::traverse} (\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a06177_a334bbeb5b340547913d31f7cf17f9872}{A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+all} (\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a06177_a7a6bc81c886119388cc6efe0fd7c8c85}{A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+multipass} (\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action, const unsigned int \&\+\_\+pass)
\item 
{\footnotesize template$<$class Action $>$ }\\void \hyperlink{a06177_a43edcdd142eacba808a327fbc942a85c}{A\+C\+G\+::\+Scene\+Graph\+::traverse\+\_\+multipass} (\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node, Action \&\+\_\+action, G\+L\+State \&\+\_\+state, Draw\+Modes\+::\+Draw\+Mode=Draw\+Modes\+::\+D\+E\+F\+A\+U\+LT)
\item 
\hyperlink{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$ \hyperlink{a06177_a1299f77548fd1f3541aeb9096c4b4b22}{A\+C\+G\+::\+Scene\+Graph\+::find\+\_\+node} (\hyperlink{a00182_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{a00182_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$ \hyperlink{a06177_a677575bee2f37781b1a43e235037d5d6}{A\+C\+G\+::\+Scene\+Graph\+::find\+\_\+hidden\+\_\+node} (\hyperlink{a00182_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. 

\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{a01094_a8fc9ce15d1f493dac458e328111288f9}\label{a01094_a8fc9ce15d1f493dac458e328111288f9}} 
\index{Scene\+Graph.\+hh@{Scene\+Graph.\+hh}!H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+NC@{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+NC}}
\index{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+NC@{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+NC}!Scene\+Graph.\+hh@{Scene\+Graph.\+hh}}
\subsubsection{\texorpdfstring{H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+NC}{HAS\_MEM\_FUNC}}
{\footnotesize\ttfamily \#define H\+A\+S\+\_\+\+M\+E\+M\+\_\+\+F\+U\+NC(\begin{DoxyParamCaption}\item[{}]{func }\end{DoxyParamCaption})}

{\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 89 of file Scene\+Graph.\+hh.

