\hypertarget{a07748}{}\section{A\+CG\+:\+:Scene\+Graph\+:\+:Base\+Node Class Reference}
\label{a07748}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}


{\ttfamily \#include $<$A\+C\+G/\+Scenegraph/\+Base\+Node.\+hh$>$}

Inheritance diagram for A\+CG\+:\+:Scene\+Graph\+:\+:Base\+Node\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a07748}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a07752}{Shader\+Set}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708}{Status\+Mode} \{ \hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708ae6306e1fa101f14a1508dc829b61ef69}{Active} = 0x1, 
\hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a027060d2cfb093d779eb35d01d4e248d}{Hide\+Node} = 0x2, 
\hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a22193d055e2e7f4aa0231174836890dc}{Hide\+Children} = 0x4, 
\hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a4b92b1fbd98b69389dd05172e98b7145}{Hide\+Subtree} = 0x8
 \}\begin{DoxyCompactList}\small\item\em Status modi. \end{DoxyCompactList}
\item 
enum \hyperlink{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45a}{Traverse\+Mode} \{ \hyperlink{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aa327db09fceebeeca43efeec80efe6b24}{Node\+First} = 0x1, 
\hyperlink{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aa0260d11742bbf9b7109748ddf6818dbe}{Children\+First} = 0x2, 
\hyperlink{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aad6aa264eb5b0718c01140d6f8d2f6e56}{Second\+Pass} = 0x4
 \}\begin{DoxyCompactList}\small\item\em Node traverse types. \end{DoxyCompactList}
\item 
\mbox{\Hypertarget{a07748_a3aff0aeb1fe173f13054f6a312f53f16}\label{a07748_a3aff0aeb1fe173f13054f6a312f53f16}} 
typedef std\+::vector$<$ \hyperlink{a07748}{Base\+Node} $\ast$ $>$\+::const\+\_\+iterator \hyperlink{a07748_a3aff0aeb1fe173f13054f6a312f53f16}{Const\+Child\+Iter}
\begin{DoxyCompactList}\small\item\em allows to iterate over children \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a73b7864855a03453fc0d7f9dc768fbd6}\label{a07748_a73b7864855a03453fc0d7f9dc768fbd6}} 
typedef std\+::vector$<$ \hyperlink{a07748}{Base\+Node} $\ast$ $>$\+::iterator \hyperlink{a07748_a73b7864855a03453fc0d7f9dc768fbd6}{Child\+Iter}
\begin{DoxyCompactList}\small\item\em allows to iterate over children \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a389b2ed9fbabcea76622b9e4805c4a03}\label{a07748_a389b2ed9fbabcea76622b9e4805c4a03}} 
typedef std\+::vector$<$ \hyperlink{a07748}{Base\+Node} $\ast$ $>$\+::const\+\_\+reverse\+\_\+iterator \hyperlink{a07748_a389b2ed9fbabcea76622b9e4805c4a03}{Const\+Child\+R\+Iter}
\begin{DoxyCompactList}\small\item\em allows to reverse iterate over children \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a0128105b6e2d502ea1601b1532c28658}\label{a07748_a0128105b6e2d502ea1601b1532c28658}} 
typedef std\+::vector$<$ \hyperlink{a07748}{Base\+Node} $\ast$ $>$\+::reverse\+\_\+iterator \hyperlink{a07748_a0128105b6e2d502ea1601b1532c28658}{Child\+R\+Iter}
\begin{DoxyCompactList}\small\item\em allows to reverse iterate over children \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07748_abad1a546da418bd8688ff15b22e1dc65}\label{a07748_abad1a546da418bd8688ff15b22e1dc65}} 
\hyperlink{a07748_abad1a546da418bd8688ff15b22e1dc65}{Base\+Node} (\hyperlink{a07748}{Base\+Node} $\ast$\+\_\+parent=0, std\+::string \+\_\+name=\char`\"{}$<$unknown$>$\char`\"{})
\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a75b06bfae492d4d77c5a4d78e125b604}\label{a07748_a75b06bfae492d4d77c5a4d78e125b604}} 
\hyperlink{a07748_a75b06bfae492d4d77c5a4d78e125b604}{Base\+Node} (\hyperlink{a07748}{Base\+Node} $\ast$\+\_\+parent, \hyperlink{a07748}{Base\+Node} $\ast$\+\_\+child, std\+::string \+\_\+name=\char`\"{}$<$unknown$>$\char`\"{})
\begin{DoxyCompactList}\small\item\em Put this node between \+\_\+parent and \+\_\+child. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a5cc21e04f8894848f1181d172097f3ef}\label{a07748_a5cc21e04f8894848f1181d172097f3ef}} 
virtual \hyperlink{a07748_a5cc21e04f8894848f1181d172097f3ef}{$\sim$\+Base\+Node} ()
\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
void \hyperlink{a07748_a076a775dc6a63ebdd903e2ff7feb5be7}{delete\+\_\+subtree} ()
\begin{DoxyCompactList}\small\item\em Delete the whole subtree of this node. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a861bf1e6a55044744826116598deea52}\label{a07748_a861bf1e6a55044744826116598deea52}} 
virtual const std\+::string \& \hyperlink{a07748_a861bf1e6a55044744826116598deea52}{class\+Name} () const =0
\begin{DoxyCompactList}\small\item\em Return class name (implemented by the A\+C\+G\+\_\+\+C\+L\+A\+S\+S\+N\+A\+ME macro) \end{DoxyCompactList}\item 
virtual \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \hyperlink{a07748_ac0af942386112b1d101576e0f1bd78b9}{available\+Draw\+Modes} () const
\item 
virtual void \hyperlink{a07748_a996661c63c70e2516b82dfcbbf777408}{bounding\+Box} (\hyperlink{a06176_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&, \hyperlink{a06176_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&)
\item 
virtual void \hyperlink{a07748_aeb32b92d411b21712d12662ddd910ee8}{enter} (\hyperlink{a07452}{G\+L\+State} \&, const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&)
\item 
virtual void \hyperlink{a07748_a74591d1ffdc65b72b60b0d286b7118e6}{enter} (\hyperlink{a07468}{I\+Renderer} $\ast$, \hyperlink{a07452}{G\+L\+State} \&\+\_\+state, const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+draw\+Mode)
\item 
virtual void \hyperlink{a07748_ae795cf008e91e74e1777e7bb46b7cd15}{draw} (\hyperlink{a07452}{G\+L\+State} \&, const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&)
\begin{DoxyCompactList}\small\item\em Draw this node using the draw modes \+\_\+draw\+Mode. \end{DoxyCompactList}\item 
virtual void \hyperlink{a07748_a5f71c3865a9bcdfed6255eba50573d5c}{get\+Render\+Objects} (\hyperlink{a07468}{I\+Renderer} $\ast$\+\_\+renderer, \hyperlink{a07452}{G\+L\+State} \&\+\_\+state, const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+draw\+Mode, const \hyperlink{a07828}{Material} $\ast$\+\_\+mat)
\begin{DoxyCompactList}\small\item\em Deferred draw call with shader based renderer. \end{DoxyCompactList}\item 
virtual void \hyperlink{a07748_abfaa9091bfb2ff5d221884902c100bfe}{leave} (\hyperlink{a07452}{G\+L\+State} \&, const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&)
\item 
virtual void \hyperlink{a07748_ad3d02e3f90d31cf260e0e5aaafd87cf9}{leave} (\hyperlink{a07468}{I\+Renderer} $\ast$, \hyperlink{a07452}{G\+L\+State} \&\+\_\+state, const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+draw\+Mode)
\item 
virtual void \hyperlink{a07748_aa2409686d081ef760ea381b1766887e3}{enter\+Pick} (\hyperlink{a07452}{G\+L\+State} \&\+\_\+state, \hyperlink{a06177_af5fad41dadeca314c2077f897377dbd0}{Pick\+Target} \+\_\+target, const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+draw\+Mode)
\item 
virtual void \hyperlink{a07748_adac324be19fb72e7044dedcc147be86c}{pick} (\hyperlink{a07452}{G\+L\+State} \&, \hyperlink{a06177_af5fad41dadeca314c2077f897377dbd0}{Pick\+Target})
\item 
virtual void \hyperlink{a07748_a0a4a7d32775cfe489e3ebf934b03404d}{leave\+Pick} (\hyperlink{a07452}{G\+L\+State} \&\+\_\+state, \hyperlink{a06177_af5fad41dadeca314c2077f897377dbd0}{Pick\+Target} \+\_\+target, const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+draw\+Mode)
\item 
void \hyperlink{a07748_a27cbb28d617b24b6e20a35cb846e326b}{enable\+Picking} (bool \+\_\+enable)
\item 
bool \hyperlink{a07748_a06664baf28a361ef43035adcca035df2}{picking\+Enabled} ()
\item 
\mbox{\Hypertarget{a07748_af74552cfa65c5d03b5e51f8c50462cd8}\label{a07748_af74552cfa65c5d03b5e51f8c50462cd8}} 
virtual void \hyperlink{a07748_af74552cfa65c5d03b5e51f8c50462cd8}{mouse\+Event} (\hyperlink{a07452}{G\+L\+State} \&, Q\+Mouse\+Event $\ast$)
\begin{DoxyCompactList}\small\item\em Handle mouse event (some interaction, e.\+g. modeling) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_aa2c89688284fda99a4e717db921aaaae}\label{a07748_aa2c89688284fda99a4e717db921aaaae}} 
void \hyperlink{a07748_aa2c89688284fda99a4e717db921aaaae}{set\+Dirty} (bool \+\_\+dirty=true)
\begin{DoxyCompactList}\small\item\em mark node for redrawn \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a02fcf8b882917e9bb6e1b89d819b4983}\label{a07748_a02fcf8b882917e9bb6e1b89d819b4983}} 
bool \hyperlink{a07748_a02fcf8b882917e9bb6e1b89d819b4983}{is\+Dirty} () const
\begin{DoxyCompactList}\small\item\em Check if node should be redrawn. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a00478af2e7a38f73b639312364656613}\label{a07748_a00478af2e7a38f73b639312364656613}} 
\hyperlink{a07748_a73b7864855a03453fc0d7f9dc768fbd6}{Child\+Iter} \hyperlink{a07748_a00478af2e7a38f73b639312364656613}{children\+Begin} ()
\begin{DoxyCompactList}\small\item\em Returns\+: begin-\/iterator of children. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a6029f82d4ad304046550e8653d388484}\label{a07748_a6029f82d4ad304046550e8653d388484}} 
\hyperlink{a07748_a3aff0aeb1fe173f13054f6a312f53f16}{Const\+Child\+Iter} \hyperlink{a07748_a6029f82d4ad304046550e8653d388484}{children\+Begin} () const
\begin{DoxyCompactList}\small\item\em Same but {\ttfamily cont}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a0a177319e2a49833940ed97f0bb37cc2}\label{a07748_a0a177319e2a49833940ed97f0bb37cc2}} 
\hyperlink{a07748_a73b7864855a03453fc0d7f9dc768fbd6}{Child\+Iter} \hyperlink{a07748_a0a177319e2a49833940ed97f0bb37cc2}{children\+End} ()
\begin{DoxyCompactList}\small\item\em Returns\+: end-\/iterator of children. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a664f088727917e6867d3255fbe66d32c}\label{a07748_a664f088727917e6867d3255fbe66d32c}} 
\hyperlink{a07748_a3aff0aeb1fe173f13054f6a312f53f16}{Const\+Child\+Iter} \hyperlink{a07748_a664f088727917e6867d3255fbe66d32c}{children\+End} () const
\begin{DoxyCompactList}\small\item\em Same but {\ttfamily const}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_aabccc7077420522a5b8f4f775310d5a2}\label{a07748_aabccc7077420522a5b8f4f775310d5a2}} 
\hyperlink{a07748_a0128105b6e2d502ea1601b1532c28658}{Child\+R\+Iter} \hyperlink{a07748_aabccc7077420522a5b8f4f775310d5a2}{children\+R\+Begin} ()
\begin{DoxyCompactList}\small\item\em Returns\+: reverse begin-\/iterator of children. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a26971b89fc8c46b3c8ce455f086ac24c}\label{a07748_a26971b89fc8c46b3c8ce455f086ac24c}} 
\hyperlink{a07748_a389b2ed9fbabcea76622b9e4805c4a03}{Const\+Child\+R\+Iter} \hyperlink{a07748_a26971b89fc8c46b3c8ce455f086ac24c}{children\+R\+Begin} () const
\begin{DoxyCompactList}\small\item\em Same but const. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a65184de55795b0f56334f83c13ced7d7}\label{a07748_a65184de55795b0f56334f83c13ced7d7}} 
\hyperlink{a07748_a0128105b6e2d502ea1601b1532c28658}{Child\+R\+Iter} \hyperlink{a07748_a65184de55795b0f56334f83c13ced7d7}{children\+R\+End} ()
\begin{DoxyCompactList}\small\item\em Returns\+: reverse end-\/iterator of children. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a42174d3dacbf13f00f835532485dec5e}\label{a07748_a42174d3dacbf13f00f835532485dec5e}} 
\hyperlink{a07748_a389b2ed9fbabcea76622b9e4805c4a03}{Const\+Child\+R\+Iter} \hyperlink{a07748_a42174d3dacbf13f00f835532485dec5e}{children\+R\+End} () const
\begin{DoxyCompactList}\small\item\em Same but {\ttfamily const}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_ad0e0903db100992869f9ec7545dfb168}\label{a07748_ad0e0903db100992869f9ec7545dfb168}} 
void \hyperlink{a07748_ad0e0903db100992869f9ec7545dfb168}{push\+\_\+back} (\hyperlink{a07748}{Base\+Node} $\ast$\+\_\+node)
\begin{DoxyCompactList}\small\item\em Insert \+\_\+node at the end of the list of children. \end{DoxyCompactList}\item 
void \hyperlink{a07748_ad5284266f456d59b62acaab0d341e5e9}{remove} (\hyperlink{a07748_a73b7864855a03453fc0d7f9dc768fbd6}{Child\+Iter} \+\_\+pos)
\item 
\mbox{\Hypertarget{a07748_a1d3dd8b43017e5aacf9f42f1d94fca39}\label{a07748_a1d3dd8b43017e5aacf9f42f1d94fca39}} 
size\+\_\+t \hyperlink{a07748_a1d3dd8b43017e5aacf9f42f1d94fca39}{n\+Children} () const
\begin{DoxyCompactList}\small\item\em number of children \end{DoxyCompactList}\item 
\hyperlink{a07748_a73b7864855a03453fc0d7f9dc768fbd6}{Child\+Iter} \hyperlink{a07748_afdc9049711517cb4152912dff68e71cd}{find} (\hyperlink{a07748}{Base\+Node} $\ast$\+\_\+node)
\item 
\hyperlink{a07748}{Base\+Node} $\ast$ \hyperlink{a07748_ac1a6be1203c4414f8c16455853915166}{find} (const std\+::string \&\+\_\+name)
\item 
\mbox{\Hypertarget{a07748_a144bfa2aeca9827287baa3529949cf01}\label{a07748_a144bfa2aeca9827287baa3529949cf01}} 
\hyperlink{a07748}{Base\+Node} $\ast$ \hyperlink{a07748_a144bfa2aeca9827287baa3529949cf01}{parent} ()
\begin{DoxyCompactList}\small\item\em Get the nodes parent node. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_ac3014cdac02c92bd19115c17ef5537fb}\label{a07748_ac3014cdac02c92bd19115c17ef5537fb}} 
const \hyperlink{a07748}{Base\+Node} $\ast$ \hyperlink{a07748_ac3014cdac02c92bd19115c17ef5537fb}{parent} () const
\begin{DoxyCompactList}\small\item\em Get the nodes parent node. \end{DoxyCompactList}\item 
void \hyperlink{a07748_aa16ecd9656f0231f01fd1adaa11c3f99}{set\+\_\+parent} (\hyperlink{a07748}{Base\+Node} $\ast$\+\_\+parent)
\begin{DoxyCompactList}\small\item\em Set the parent of this node. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_ab12304b8f307ef6adc318a2f156e2c4f}\label{a07748_ab12304b8f307ef6adc318a2f156e2c4f}} 
\hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708}{Status\+Mode} \hyperlink{a07748_ab12304b8f307ef6adc318a2f156e2c4f}{status} () const
\begin{DoxyCompactList}\small\item\em Get node\textquotesingle{}s status. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_ab2367b99b75c584b44a7690c55c13888}\label{a07748_ab2367b99b75c584b44a7690c55c13888}} 
void \hyperlink{a07748_ab2367b99b75c584b44a7690c55c13888}{set\+\_\+status} (\hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708}{Status\+Mode} \+\_\+s)
\begin{DoxyCompactList}\small\item\em Set the status of this node. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a50cc36c3ceb5b524811d40cc85e07109}\label{a07748_a50cc36c3ceb5b524811d40cc85e07109}} 
void \hyperlink{a07748_a50cc36c3ceb5b524811d40cc85e07109}{hide} ()
\begin{DoxyCompactList}\small\item\em Hide Node\+: set status to Hide\+Node. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_adfe9520862b36da0d0663562e318603e}\label{a07748_adfe9520862b36da0d0663562e318603e}} 
void \hyperlink{a07748_adfe9520862b36da0d0663562e318603e}{show} ()
\begin{DoxyCompactList}\small\item\em Show node\+: set status to Active. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_afd5d3eb609c1cf09684651ffcbd2ee43}\label{a07748_afd5d3eb609c1cf09684651ffcbd2ee43}} 
bool \hyperlink{a07748_afd5d3eb609c1cf09684651ffcbd2ee43}{visible} ()
\begin{DoxyCompactList}\small\item\em Is node visible (status == Active)? \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a0253c9735f588024c5c88084a1511681}\label{a07748_a0253c9735f588024c5c88084a1511681}} 
bool \hyperlink{a07748_a0253c9735f588024c5c88084a1511681}{hidden} ()
\begin{DoxyCompactList}\small\item\em Is node not visible (status != Active)? \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_acf2b0b13d3d8b20359e105760996be14}\label{a07748_acf2b0b13d3d8b20359e105760996be14}} 
std\+::string \hyperlink{a07748_acf2b0b13d3d8b20359e105760996be14}{name} () const
\begin{DoxyCompactList}\small\item\em Returns\+: name of node (needs not be unique) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a4735487cf993173b83d535817fc9faea}\label{a07748_a4735487cf993173b83d535817fc9faea}} 
void \hyperlink{a07748_a4735487cf993173b83d535817fc9faea}{name} (const std\+::string \&\+\_\+name)
\begin{DoxyCompactList}\small\item\em rename a node \end{DoxyCompactList}\item 
unsigned int \hyperlink{a07748_aceca16b91d3af8104fd181c24a631144}{id} () const
\item 
\mbox{\Hypertarget{a07748_a18d3b30b0cec0661ecf584e528b508f1}\label{a07748_a18d3b30b0cec0661ecf584e528b508f1}} 
\hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \hyperlink{a07748_a18d3b30b0cec0661ecf584e528b508f1}{draw\+Mode} () const
\begin{DoxyCompactList}\small\item\em Return the own draw modes of this node. \end{DoxyCompactList}\item 
void \hyperlink{a07748_a2804581f01b2a60168059af9aa289b83}{draw\+Mode} (\hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \+\_\+draw\+Mode)
\item 
\mbox{\Hypertarget{a07748_a1f31e9c4eb216999e19b85780ec0ad04}\label{a07748_a1f31e9c4eb216999e19b85780ec0ad04}} 
unsigned int \hyperlink{a07748_a1f31e9c4eb216999e19b85780ec0ad04}{traverse\+Mode} () const
\begin{DoxyCompactList}\small\item\em Return how the node should be traversed. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a8bbaabc87bd44619c3f40e43d27d29cd}\label{a07748_a8bbaabc87bd44619c3f40e43d27d29cd}} 
void \hyperlink{a07748_a8bbaabc87bd44619c3f40e43d27d29cd}{set\+Traverse\+Mode} (unsigned int \+\_\+mode)
\begin{DoxyCompactList}\small\item\em Set traverse mode for node. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07748_ae49429b9a21b3d654790763271c7fdaf}\label{a07748_ae49429b9a21b3d654790763271c7fdaf}} 
\hyperlink{a07748_ae49429b9a21b3d654790763271c7fdaf}{Base\+Node} (const \hyperlink{a07748}{Base\+Node} \&)
\begin{DoxyCompactList}\small\item\em Copy constructor. Disabled. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a1ffd4e55371feeba8a8e981705224649}\label{a07748_a1ffd4e55371feeba8a8e981705224649}} 
void \hyperlink{a07748_a1ffd4e55371feeba8a8e981705224649}{operator=} (const \hyperlink{a07748}{Base\+Node} \&)
\begin{DoxyCompactList}\small\item\em Assignment operator. Disabled. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07748_a068c9aeefd60d6124d1612646393d302}\label{a07748_a068c9aeefd60d6124d1612646393d302}} 
\hyperlink{a07748}{Base\+Node} $\ast$ \hyperlink{a07748_a068c9aeefd60d6124d1612646393d302}{parent\+\_\+}
\begin{DoxyCompactList}\small\item\em pointer to parent node \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a8f6138240d92275669d89831a2bce14e}\label{a07748_a8f6138240d92275669d89831a2bce14e}} 
std\+::string \hyperlink{a07748_a8f6138240d92275669d89831a2bce14e}{name\+\_\+}
\begin{DoxyCompactList}\small\item\em name of node \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_ae3f3fe8f0b5f57e8faa5874618111db2}\label{a07748_ae3f3fe8f0b5f57e8faa5874618111db2}} 
\hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708}{Status\+Mode} \hyperlink{a07748_ae3f3fe8f0b5f57e8faa5874618111db2}{status\+\_\+}
\begin{DoxyCompactList}\small\item\em node \hyperlink{a07748_ab12304b8f307ef6adc318a2f156e2c4f}{status()} \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_adcb839b69b49eee059c7c3e365c08eb8}\label{a07748_adcb839b69b49eee059c7c3e365c08eb8}} 
std\+::vector$<$ \hyperlink{a07748}{Base\+Node} $\ast$ $>$ \hyperlink{a07748_adcb839b69b49eee059c7c3e365c08eb8}{children\+\_\+}
\begin{DoxyCompactList}\small\item\em list of children \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a926a6073970510b554e43a9b33a0e11a}\label{a07748_a926a6073970510b554e43a9b33a0e11a}} 
unsigned int \hyperlink{a07748_a926a6073970510b554e43a9b33a0e11a}{id\+\_\+}
\begin{DoxyCompactList}\small\item\em ID of node. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_aa71f019e46220fe609731064b35ba104}\label{a07748_aa71f019e46220fe609731064b35ba104}} 
\hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \hyperlink{a07748_aa71f019e46220fe609731064b35ba104}{draw\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em private draw mode \end{DoxyCompactList}\item 
bool \hyperlink{a07748_acd0f24ca104f4033ab8f4fd83a39bdf3}{picking\+Enabled\+\_\+}
\item 
\mbox{\Hypertarget{a07748_a07832a34a01cf99e2df01f2192c54955}\label{a07748_a07832a34a01cf99e2df01f2192c54955}} 
bool \hyperlink{a07748_a07832a34a01cf99e2df01f2192c54955}{dirty\+\_\+}
\begin{DoxyCompactList}\small\item\em Flag indicating that the node has to be redrawn. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a0f678958db890b518c81497d8cb57ea7}\label{a07748_a0f678958db890b518c81497d8cb57ea7}} 
unsigned int \hyperlink{a07748_a0f678958db890b518c81497d8cb57ea7}{traverse\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em traverse mode \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_ac3db0b1949d42851321655d7a27552fc}\label{a07748_ac3db0b1949d42851321655d7a27552fc}} 
std\+::map$<$ \hyperlink{a06191_aff5214aaf6e6caba8f1a09f816d544fe}{Draw\+Modes\+::\+Draw\+Mode\+Primitive}, \hyperlink{a07752}{Shader\+Set} $>$ \hyperlink{a07748_ac3db0b1949d42851321655d7a27552fc}{shader\+Settings\+\_\+}
\begin{DoxyCompactList}\small\item\em shader settings for primitive modes \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_ab8941b9368af8c09b1c9d23cf4afae8d}\label{a07748_ab8941b9368af8c09b1c9d23cf4afae8d}} 
std\+::map$<$ int, \hyperlink{a07536}{Render\+Object\+::\+Texture} $>$ \hyperlink{a07748_ab8941b9368af8c09b1c9d23cf4afae8d}{texture\+Settings\+\_\+}
\begin{DoxyCompactList}\small\item\em texture settings for shader based rendering \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a5ecb906584943e617b4bb496a8f12cca}\label{a07748_a5ecb906584943e617b4bb496a8f12cca}} 
const \hyperlink{a08136}{G\+L\+S\+L\+::\+Uniform\+Pool} $\ast$ \hyperlink{a07748_a5ecb906584943e617b4bb496a8f12cca}{uniform\+Pool\+\_\+}
\begin{DoxyCompactList}\small\item\em user provided uniform pool for shader constants \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07748_a0a7ca96a981ec036a4d35bc068000b93}\label{a07748_a0a7ca96a981ec036a4d35bc068000b93}} 
\hyperlink{a07540}{Render\+Object\+Modifier} $\ast$ \hyperlink{a07748_a0a7ca96a981ec036a4d35bc068000b93}{render\+Modifier\+\_\+}
\begin{DoxyCompactList}\small\item\em render-\/object modifier \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07748_a501d3f3b8b423e100a2e8bfc6a7ffa0b}\label{a07748_a501d3f3b8b423e100a2e8bfc6a7ffa0b}} 
static unsigned int \hyperlink{a07748_a501d3f3b8b423e100a2e8bfc6a7ffa0b}{last\+\_\+id\+\_\+used\+\_\+\+\_\+}
\begin{DoxyCompactList}\small\item\em used to provide unique I\+Ds to nodes \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Render pass controls}
\label{_amgrp36d2e4439deb179166c805c972ab9867}%
 The render pass controls are only used during multipass traversal. There are two types of multipass controls. One type controls if the enter and leave functions of the nodes are used (Render\+Status\+Pass) or if the actual draw function is called (Render\+Draw\+Pass). The bitmasks define if the functions are called by the traverse\+\_\+multipass operation. The bitmask are initialized to run in the first path.~\newline
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07748_a7dbb2e02dc41e1af8916783233878b32}\label{a07748_a7dbb2e02dc41e1af8916783233878b32}} 
enum \hyperlink{a07748_a7dbb2e02dc41e1af8916783233878b32}{P\+A\+S\+S\+ES} \{ \newline
{\bfseries N\+O\+P\+A\+SS} = 0, 
{\bfseries A\+L\+L\+P\+A\+S\+S\+ES} = 1 $<$$<$ 0, 
{\bfseries P\+A\+S\+S\+\_\+1} = 1 $<$$<$ 1, 
{\bfseries P\+A\+S\+S\+\_\+2} = 1 $<$$<$ 2, 
\newline
{\bfseries P\+A\+S\+S\+\_\+3} = 1 $<$$<$ 3, 
{\bfseries P\+A\+S\+S\+\_\+4} = 1 $<$$<$ 4, 
{\bfseries P\+A\+S\+S\+\_\+5} = 1 $<$$<$ 5, 
{\bfseries P\+A\+S\+S\+\_\+6} = 1 $<$$<$ 6, 
\newline
{\bfseries P\+A\+S\+S\+\_\+7} = 1 $<$$<$ 7, 
{\bfseries P\+A\+S\+S\+\_\+8} = 1 $<$$<$ 8
 \}\begin{DoxyCompactList}\small\item\em This enum should be used to enable rendering of a node in different. \end{DoxyCompactList}
\item 
\mbox{\Hypertarget{a07748_a4659c359974c95ec608ffce79c3dfb59}\label{a07748_a4659c359974c95ec608ffce79c3dfb59}} 
typedef unsigned int \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask}
\begin{DoxyCompactList}\small\item\em Multipass pass bit mask type. \end{DoxyCompactList}\item 
\hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} \hyperlink{a07748_ab0a5d24296a8a9469bc09e8d965220d9}{multipass\+Status} () const
\begin{DoxyCompactList}\small\item\em Get the current multipass settings for the nodes status functions. \end{DoxyCompactList}\item 
void \hyperlink{a07748_a369760b4c674c5de0a804d598481961c}{set\+Multipass\+Status} (const \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} \+\_\+pass\+Status)
\begin{DoxyCompactList}\small\item\em Set multipass settings for the nodes status functions. \end{DoxyCompactList}\item 
void \hyperlink{a07748_ad91cf957c42d06d0f2134d38fe832ae2}{multipass\+Status\+Set\+Active} (const unsigned int \+\_\+i, bool \+\_\+active)
\begin{DoxyCompactList}\small\item\em Set multipass status to traverse in a specific pass. \end{DoxyCompactList}\item 
bool \hyperlink{a07748_a203f9d9fdb07cd84fe9f516facba7da5}{multipass\+Status\+Active} (const unsigned int \+\_\+i) const
\begin{DoxyCompactList}\small\item\em Get multipass status to traverse in a specific pass. \end{DoxyCompactList}\item 
\hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} \hyperlink{a07748_a642e5368075974d327b8e278ea402b1b}{multipass\+Node} () const
\begin{DoxyCompactList}\small\item\em Get the current multipass settings for the node. \end{DoxyCompactList}\item 
void \hyperlink{a07748_ab32e4dba1c5776d1b645135e0147be9f}{set\+Multipass\+Node} (const \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} \+\_\+pass\+Node)
\begin{DoxyCompactList}\small\item\em Set multipass settings for the node. \end{DoxyCompactList}\item 
void \hyperlink{a07748_aa5b51555586e02aa737000ecd7746b75}{multipass\+Node\+Set\+Active} (const unsigned int \+\_\+i, bool \+\_\+active)
\begin{DoxyCompactList}\small\item\em Set Node status to traverse in a specific pass. \end{DoxyCompactList}\item 
bool \hyperlink{a07748_a5793c63e71f0b0be25ad263c107414e7}{multipass\+Node\+Active} (const unsigned int \+\_\+i) const
\begin{DoxyCompactList}\small\item\em Get Node status to traverse in a specific pass. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Render\+Object controls}
\label{_amgrp7d67d64816b31378d36bf835a4cc04e9}%
 The render pass controls are only used during shader-\/based rendering with render-\/objects. It is possible to provide shader and state settings that are copied to render-\/objects. These functions do not affect the fixed-\/function pipeline implementation of the scenegraph (\hyperlink{a07748_aeb32b92d411b21712d12662ddd910ee8}{enter()} \hyperlink{a07748_ae795cf008e91e74e1777e7bb46b7cd15}{draw()} \hyperlink{a07748_abfaa9091bfb2ff5d221884902c100bfe}{leave()}).~\newline
\begin{DoxyCompactItemize}
\item 
\hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} \hyperlink{a07748_a1f34cce07ef9f8b0d7c15a75bf63bf4c}{multipass\+Status\+\_\+}
\item 
\hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} \hyperlink{a07748_a5af4c01cfcd8430d75b03e1766d37163}{multipass\+Node\+\_\+}
\item 
void \hyperlink{a07748_acba8f8c7c0da363df6f226c462dac6e4}{set\+Render\+Object\+Shaders} (const std\+::string \&\+\_\+vertex\+Shader\+File, const std\+::string \&\+\_\+geometry\+Shader\+File, const std\+::string \&\+\_\+fragment\+Shader\+File, bool \+\_\+relative\+Paths=true, \hyperlink{a06191_aff5214aaf6e6caba8f1a09f816d544fe}{Draw\+Modes\+::\+Draw\+Mode\+Primitive} \+\_\+primitive\+Type=Draw\+Modes\+::\+P\+R\+I\+M\+I\+T\+I\+V\+E\+\_\+\+P\+O\+L\+Y\+G\+ON)
\begin{DoxyCompactList}\small\item\em Set custom shaders. \end{DoxyCompactList}\item 
void \hyperlink{a07748_a80b6383cc3a1a20f6cae4f0655efdb88}{set\+Render\+Object\+Shaders} (const std\+::string \&\+\_\+vertex\+Shader\+File, const std\+::string \&\+\_\+tess\+Control\+Shader\+File, const std\+::string \&\+\_\+tess\+Eval\+Shader\+File, const std\+::string \&\+\_\+geometry\+Shader\+File, const std\+::string \&\+\_\+fragment\+Shader\+File, bool \+\_\+relative\+Paths=true, \hyperlink{a06191_aff5214aaf6e6caba8f1a09f816d544fe}{Draw\+Modes\+::\+Draw\+Mode\+Primitive} \+\_\+primitive\+Type=Draw\+Modes\+::\+P\+R\+I\+M\+I\+T\+I\+V\+E\+\_\+\+P\+O\+L\+Y\+G\+ON)
\begin{DoxyCompactList}\small\item\em Set custom shaders. \end{DoxyCompactList}\item 
void \hyperlink{a07748_ad44bb658a811bbe76cad299b615db83f}{set\+Render\+Object\+Uniform\+Pool} (const \hyperlink{a08136}{G\+L\+S\+L\+::\+Uniform\+Pool} $\ast$\+\_\+pool)
\begin{DoxyCompactList}\small\item\em Set uniforms for shader based rendering. \end{DoxyCompactList}\item 
const \hyperlink{a08136}{G\+L\+S\+L\+::\+Uniform\+Pool} $\ast$ \hyperlink{a07748_ad1cb34abb0c4f6f76487b8922b67aee3}{get\+Render\+Object\+Uniform\+Pool} ()
\begin{DoxyCompactList}\small\item\em Get uniforms for shader based rendering. \end{DoxyCompactList}\item 
void \hyperlink{a07748_a59f38f9321a63bf74081f38fe70efb51}{set\+Render\+Object\+Texture} (int \+\_\+sampler\+Slot, G\+Luint \+\_\+tex\+Id, G\+Lenum \+\_\+tex\+Type=G\+L\+\_\+\+T\+E\+X\+T\+U\+R\+E\+\_\+2D)
\begin{DoxyCompactList}\small\item\em Set textures for shader based rendering. \end{DoxyCompactList}\item 
void \hyperlink{a07748_af50d39a99d3a2d2c0e5f2b0a5e259b49}{set\+Render\+Object\+Modifier} (\hyperlink{a07540}{Render\+Object\+Modifier} $\ast$\+\_\+modifier)
\begin{DoxyCompactList}\small\item\em Set modifier for render objects. \end{DoxyCompactList}\item 
\hyperlink{a07540}{Render\+Object\+Modifier} $\ast$ \hyperlink{a07748_af9f34dad0f3d0a51c7555b1c00134fc1}{get\+Render\+Object\+Modifier} ()
\begin{DoxyCompactList}\small\item\em Get render-\/object modifier. \end{DoxyCompactList}\item 
void \hyperlink{a07748_a2dba4d04ec550aa1bd0647fd4a5aa25f}{apply\+Render\+Object\+Settings} (\hyperlink{a06191_aff5214aaf6e6caba8f1a09f816d544fe}{Draw\+Modes\+::\+Draw\+Mode\+Primitive} \+\_\+primitive, \hyperlink{a07532}{Render\+Object} $\ast$\+\_\+obj) const
\begin{DoxyCompactList}\small\item\em Set shaders, textures and uniforms as provided by user to a render-\/object. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
This is the base for all scenegraph nodes. All virtual functions should be reimplemented when inheriting from this class. 

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



\subsection{Member Enumeration Documentation}
\mbox{\Hypertarget{a07748_a3731e3d56853ba78be9dbbd3b8b4a708}\label{a07748_a3731e3d56853ba78be9dbbd3b8b4a708}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Status\+Mode@{Status\+Mode}}
\index{Status\+Mode@{Status\+Mode}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{Status\+Mode}{StatusMode}}
{\footnotesize\ttfamily enum \hyperlink{a07748_a3731e3d56853ba78be9dbbd3b8b4a708}{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::\+Status\+Mode}}



Status modi. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Active@{Active}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Active@{Active}}}\mbox{\Hypertarget{a07748_a3731e3d56853ba78be9dbbd3b8b4a708ae6306e1fa101f14a1508dc829b61ef69}\label{a07748_a3731e3d56853ba78be9dbbd3b8b4a708ae6306e1fa101f14a1508dc829b61ef69}} 
Active&Draw node \& children. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Hide\+Node@{Hide\+Node}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Hide\+Node@{Hide\+Node}}}\mbox{\Hypertarget{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a027060d2cfb093d779eb35d01d4e248d}\label{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a027060d2cfb093d779eb35d01d4e248d}} 
Hide\+Node&Hide this node, but draw children. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Hide\+Children@{Hide\+Children}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Hide\+Children@{Hide\+Children}}}\mbox{\Hypertarget{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a22193d055e2e7f4aa0231174836890dc}\label{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a22193d055e2e7f4aa0231174836890dc}} 
Hide\+Children&Draw this node, but hide children. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Hide\+Subtree@{Hide\+Subtree}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Hide\+Subtree@{Hide\+Subtree}}}\mbox{\Hypertarget{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a4b92b1fbd98b69389dd05172e98b7145}\label{a07748_a3731e3d56853ba78be9dbbd3b8b4a708a4b92b1fbd98b69389dd05172e98b7145}} 
Hide\+Subtree&Hide this node and its children. \\
\hline

\end{DoxyEnumFields}


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

\mbox{\Hypertarget{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45a}\label{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45a}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Traverse\+Mode@{Traverse\+Mode}}
\index{Traverse\+Mode@{Traverse\+Mode}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{Traverse\+Mode}{TraverseMode}}
{\footnotesize\ttfamily enum \hyperlink{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45a}{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::\+Traverse\+Mode}}



Node traverse types. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Node\+First@{Node\+First}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Node\+First@{Node\+First}}}\mbox{\Hypertarget{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aa327db09fceebeeca43efeec80efe6b24}\label{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aa327db09fceebeeca43efeec80efe6b24}} 
Node\+First&Execute action on node first and then on its children. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Children\+First@{Children\+First}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Children\+First@{Children\+First}}}\mbox{\Hypertarget{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aa0260d11742bbf9b7109748ddf6818dbe}\label{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aa0260d11742bbf9b7109748ddf6818dbe}} 
Children\+First&Execute action the children first and then on this node. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Second\+Pass@{Second\+Pass}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!Second\+Pass@{Second\+Pass}}}\mbox{\Hypertarget{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aad6aa264eb5b0718c01140d6f8d2f6e56}\label{a07748_a3a10b7db6747e5ed9adfe1f47eb3b45aad6aa264eb5b0718c01140d6f8d2f6e56}} 
Second\+Pass&Draw node in second pass. \\
\hline

\end{DoxyEnumFields}


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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a07748_a2dba4d04ec550aa1bd0647fd4a5aa25f}\label{a07748_a2dba4d04ec550aa1bd0647fd4a5aa25f}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!apply\+Render\+Object\+Settings@{apply\+Render\+Object\+Settings}}
\index{apply\+Render\+Object\+Settings@{apply\+Render\+Object\+Settings}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{apply\+Render\+Object\+Settings()}{applyRenderObjectSettings()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::apply\+Render\+Object\+Settings (\begin{DoxyParamCaption}\item[{\hyperlink{a06191_aff5214aaf6e6caba8f1a09f816d544fe}{Draw\+Modes\+::\+Draw\+Mode\+Primitive}}]{\+\_\+primitive,  }\item[{\hyperlink{a07532}{Render\+Object} $\ast$}]{\+\_\+obj }\end{DoxyParamCaption}) const}



Set shaders, textures and uniforms as provided by user to a render-\/object. 

A derived node can use this convenience function to copy shader, uniform and texture settings to a render-\/object.


\begin{DoxyParams}{Parameters}
{\em \+\_\+primitive} & the primitive type of the render-\/object \\
\hline
{\em \+\_\+obj} & the render-\/object \mbox{[}in/out\mbox{]} \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{a07748_ac0af942386112b1d101576e0f1bd78b9}\label{a07748_ac0af942386112b1d101576e0f1bd78b9}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!available\+Draw\+Modes@{available\+Draw\+Modes}}
\index{available\+Draw\+Modes@{available\+Draw\+Modes}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{available\+Draw\+Modes()}{availableDrawModes()}}
{\footnotesize\ttfamily virtual \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::available\+Draw\+Modes (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

Return a list of available draw modes for this node\+: should be OR\textquotesingle{}ed from the items of the enum Draw\+Mode\+I\+Ds. 

Reimplemented in \hyperlink{a11768_acac8c2120b96d4c00bf6a7773bc79dcf}{Plane\+Node}.



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

\mbox{\Hypertarget{a07748_a996661c63c70e2516b82dfcbbf777408}\label{a07748_a996661c63c70e2516b82dfcbbf777408}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!bounding\+Box@{bounding\+Box}}
\index{bounding\+Box@{bounding\+Box}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{bounding\+Box()}{boundingBox()}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::bounding\+Box (\begin{DoxyParamCaption}\item[{\hyperlink{a06176_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&}]{,  }\item[{\hyperlink{a06176_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

Compute the bounding box of this node and update the values \+\_\+bb\+Min and \+\_\+bb\+Max accordingly. Do not initialize \+\_\+bb\+Min and \+\_\+bb\+Max since they may already store values of previous nodes\textquotesingle{} bounding box computation. 

Reimplemented in \hyperlink{a11768_a40f5f6edb5e0cf981ece1afd311bbdfc}{Plane\+Node}.



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

\mbox{\Hypertarget{a07748_a076a775dc6a63ebdd903e2ff7feb5be7}\label{a07748_a076a775dc6a63ebdd903e2ff7feb5be7}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!delete\+\_\+subtree@{delete\+\_\+subtree}}
\index{delete\+\_\+subtree@{delete\+\_\+subtree}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{delete\+\_\+subtree()}{delete\_subtree()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::delete\+\_\+subtree (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Delete the whole subtree of this node. 

This function will remove the whole subtree below this node. All children in this nodes bubtree will be automatically removed from the tree and their destructor is called. The node itself will be removed from the list of its parents children. Afterwards it will also call its own destructor. \mbox{\Hypertarget{a07748_ae795cf008e91e74e1777e7bb46b7cd15}\label{a07748_ae795cf008e91e74e1777e7bb46b7cd15}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!draw@{draw}}
\index{draw@{draw}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{draw()}{draw()}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::draw (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{G\+L\+State} \&}]{,  }\item[{const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Draw this node using the draw modes \+\_\+draw\+Mode. 

This function is called when the scenegraph is traversed by the classical draw routines.

In this call the node should draw it\textquotesingle{}s content via Open\+GL.

\begin{DoxyNote}{Note}
Keep in mind, that you should use the currently active state and don\textquotesingle{}t change it (at least reset it the original values you got). Otherwise nodes that are drawn after this node might get an inconsistent state. 
\end{DoxyNote}


Reimplemented in \hyperlink{a11768_a79982edd6a16b9e42dfd188ce478c697}{Plane\+Node}.



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

\mbox{\Hypertarget{a07748_a2804581f01b2a60168059af9aa289b83}\label{a07748_a2804581f01b2a60168059af9aa289b83}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!draw\+Mode@{draw\+Mode}}
\index{draw\+Mode@{draw\+Mode}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{draw\+Mode()}{drawMode()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::draw\+Mode (\begin{DoxyParamCaption}\item[{\hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode}}]{\+\_\+draw\+Mode }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Set this node\textquotesingle{}s own draw mode. It will be used for drawing instead of the the global draw mode. 

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

\mbox{\Hypertarget{a07748_a27cbb28d617b24b6e20a35cb846e326b}\label{a07748_a27cbb28d617b24b6e20a35cb846e326b}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!enable\+Picking@{enable\+Picking}}
\index{enable\+Picking@{enable\+Picking}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{enable\+Picking()}{enablePicking()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::enable\+Picking (\begin{DoxyParamCaption}\item[{bool}]{\+\_\+enable }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Enable or Disable picking for this node ( default\+: enabled ) 

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

\mbox{\Hypertarget{a07748_aeb32b92d411b21712d12662ddd910ee8}\label{a07748_aeb32b92d411b21712d12662ddd910ee8}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!enter@{enter}}
\index{enter@{enter}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{enter()}{enter()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::enter (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{G\+L\+State} \&}]{,  }\item[{const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

This function is called when traversing the scene graph and arriving at this node. It can be used to store GL states that will be changed in order to restore then in the \hyperlink{a07748_abfaa9091bfb2ff5d221884902c100bfe}{leave()} function.

There are two overloads of the \hyperlink{a07748_aeb32b92d411b21712d12662ddd910ee8}{enter()} function, one with I\+Renderer$\ast$ parameter, the other one without. As long the overload with I\+Renderer$\ast$ parameter is not being overridden, all renderers will make use of the overload without the I\+Renderer$\ast$ parameter. If the overload with I\+Renderer$\ast$ parameter is being overridden, only legacy renderers will use the version without the additional parameter and new renderers implementing the \hyperlink{a07468}{I\+Renderer} interface will use the version with the additional parameter.

\begin{DoxySeeAlso}{See also}
\hyperlink{a07832}{Material\+Node} 
\end{DoxySeeAlso}


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

\mbox{\Hypertarget{a07748_a74591d1ffdc65b72b60b0d286b7118e6}\label{a07748_a74591d1ffdc65b72b60b0d286b7118e6}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!enter@{enter}}
\index{enter@{enter}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{enter()}{enter()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::enter (\begin{DoxyParamCaption}\item[{\hyperlink{a07468}{I\+Renderer} $\ast$}]{,  }\item[{\hyperlink{a07452}{G\+L\+State} \&}]{\+\_\+state,  }\item[{const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&}]{\+\_\+draw\+Mode }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

This function is called when traversing the scene graph and arriving at this node. It can be used to store GL states that will be changed in order to restore then in the \hyperlink{a07748_abfaa9091bfb2ff5d221884902c100bfe}{leave()} function.

If you do not need the I\+Renderer$\ast$ argument in your override of this function, simply use the override without the additional parameter.

There are two overloads of the \hyperlink{a07748_aeb32b92d411b21712d12662ddd910ee8}{enter()} function, one with I\+Renderer$\ast$ parameter, the other one without. As long the overload with I\+Renderer$\ast$ parameter is not being overridden, all renderers will make use of the overload without the I\+Renderer$\ast$ parameter. If the overload with I\+Renderer$\ast$ parameter is being overridden, only legacy renderers will use the version without the additional parameter and new renderers implementing the \hyperlink{a07468}{I\+Renderer} interface will use the version with the additional parameter. 

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

\mbox{\Hypertarget{a07748_aa2409686d081ef760ea381b1766887e3}\label{a07748_aa2409686d081ef760ea381b1766887e3}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!enter\+Pick@{enter\+Pick}}
\index{enter\+Pick@{enter\+Pick}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{enter\+Pick()}{enterPick()}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::enter\+Pick (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{G\+L\+State} \&}]{\+\_\+state,  }\item[{\hyperlink{a06177_af5fad41dadeca314c2077f897377dbd0}{Pick\+Target}}]{\+\_\+target,  }\item[{const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&}]{\+\_\+draw\+Mode }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

This function is called when traversing the scene graph during picking and arriving at this node. It can be used to store GL states that will be changed in order to restore then in the \hyperlink{a07748_a0a4a7d32775cfe489e3ebf934b03404d}{leave\+Pick()} function. Its default implementation will call the \hyperlink{a07748_aeb32b92d411b21712d12662ddd910ee8}{enter()} function. \mbox{\Hypertarget{a07748_afdc9049711517cb4152912dff68e71cd}\label{a07748_afdc9049711517cb4152912dff68e71cd}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!find@{find}}
\index{find@{find}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{find()}{find()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \hyperlink{a07748_a73b7864855a03453fc0d7f9dc768fbd6}{Child\+Iter} A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::find (\begin{DoxyParamCaption}\item[{\hyperlink{a07748}{Base\+Node} $\ast$}]{\+\_\+node }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Find a specific node in the list of children.~\newline
 This method is designed to convert a node pointer to an iterator that may be used e.\+g. for insert()\textquotesingle{}ing a new node at a distinct position.~\newline
 Returns \hyperlink{a07748_a0a177319e2a49833940ed97f0bb37cc2}{children\+End()} if no appropriate node is found. 

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

\mbox{\Hypertarget{a07748_ac1a6be1203c4414f8c16455853915166}\label{a07748_ac1a6be1203c4414f8c16455853915166}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!find@{find}}
\index{find@{find}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{find()}{find()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \hyperlink{a07748}{Base\+Node}$\ast$ A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::find (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{\+\_\+name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Find a node of a given name 

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

\mbox{\Hypertarget{a07748_af9f34dad0f3d0a51c7555b1c00134fc1}\label{a07748_af9f34dad0f3d0a51c7555b1c00134fc1}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!get\+Render\+Object\+Modifier@{get\+Render\+Object\+Modifier}}
\index{get\+Render\+Object\+Modifier@{get\+Render\+Object\+Modifier}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{get\+Render\+Object\+Modifier()}{getRenderObjectModifier()}}
{\footnotesize\ttfamily \hyperlink{a07540}{Render\+Object\+Modifier}$\ast$ A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::get\+Render\+Object\+Modifier (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get render-\/object modifier. 



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

\mbox{\Hypertarget{a07748_a5f71c3865a9bcdfed6255eba50573d5c}\label{a07748_a5f71c3865a9bcdfed6255eba50573d5c}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!get\+Render\+Objects@{get\+Render\+Objects}}
\index{get\+Render\+Objects@{get\+Render\+Objects}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{get\+Render\+Objects()}{getRenderObjects()}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::get\+Render\+Objects (\begin{DoxyParamCaption}\item[{\hyperlink{a07468}{I\+Renderer} $\ast$}]{\+\_\+renderer,  }\item[{\hyperlink{a07452}{G\+L\+State} \&}]{\+\_\+state,  }\item[{const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&}]{\+\_\+draw\+Mode,  }\item[{const \hyperlink{a07828}{Material} $\ast$}]{\+\_\+mat }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Deferred draw call with shader based renderer. 

The renderer calls this function to collect the geometry that should be rendered from the nodes.

Add any renderable geometry to the renderer via \+\_\+renderer-\/$>$add\+Render\+Object()

The material is fetched from the last active material node and may be used to setup Renderobjects, but may as well be ignored.

\begin{DoxyNote}{Note}
You should not draw anything yourself in this function.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em \+\_\+renderer} & The renderer which will be used. Add your geometry into this class \\
\hline
{\em \+\_\+state} & The current GL State when this object is called \\
\hline
{\em \+\_\+draw\+Mode} & The active draw mode \\
\hline
{\em \+\_\+mat} & Current material \\
\hline
\end{DoxyParams}


Reimplemented in \hyperlink{a11768_a7d8e7d633ea69fec8b6b402f8e0d6eef}{Plane\+Node}.



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

\mbox{\Hypertarget{a07748_ad1cb34abb0c4f6f76487b8922b67aee3}\label{a07748_ad1cb34abb0c4f6f76487b8922b67aee3}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!get\+Render\+Object\+Uniform\+Pool@{get\+Render\+Object\+Uniform\+Pool}}
\index{get\+Render\+Object\+Uniform\+Pool@{get\+Render\+Object\+Uniform\+Pool}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{get\+Render\+Object\+Uniform\+Pool()}{getRenderObjectUniformPool()}}
{\footnotesize\ttfamily const \hyperlink{a08136}{G\+L\+S\+L\+::\+Uniform\+Pool}$\ast$ A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::get\+Render\+Object\+Uniform\+Pool (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get uniforms for shader based rendering. 



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

\mbox{\Hypertarget{a07748_aceca16b91d3af8104fd181c24a631144}\label{a07748_aceca16b91d3af8104fd181c24a631144}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!id@{id}}
\index{id@{id}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{id()}{id()}}
{\footnotesize\ttfamily unsigned int A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::id (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Get unique ID of node. I\+Ds are always positive and may be used e.\+g. for picking. 

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

\mbox{\Hypertarget{a07748_abfaa9091bfb2ff5d221884902c100bfe}\label{a07748_abfaa9091bfb2ff5d221884902c100bfe}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!leave@{leave}}
\index{leave@{leave}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{leave()}{leave()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::leave (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{G\+L\+State} \&}]{,  }\item[{const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

The leave function is used to restore GL states the have been changed. This function must restore the status before \hyperlink{a07748_aeb32b92d411b21712d12662ddd910ee8}{enter()}!

There are two overloads of the \hyperlink{a07748_abfaa9091bfb2ff5d221884902c100bfe}{leave()} function, one with I\+Renderer$\ast$ parameter, the other one without. As long the overload with I\+Renderer$\ast$ parameter is not being overridden, all renderers will make use of the overload without the I\+Renderer$\ast$ parameter. If the overload with I\+Renderer$\ast$ parameter is being overridden, only legacy renderers will use the version without the additional parameter and new renderers implementing the \hyperlink{a07468}{I\+Renderer} interface will use the version with the additional parameter. 

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

\mbox{\Hypertarget{a07748_ad3d02e3f90d31cf260e0e5aaafd87cf9}\label{a07748_ad3d02e3f90d31cf260e0e5aaafd87cf9}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!leave@{leave}}
\index{leave@{leave}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{leave()}{leave()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::leave (\begin{DoxyParamCaption}\item[{\hyperlink{a07468}{I\+Renderer} $\ast$}]{,  }\item[{\hyperlink{a07452}{G\+L\+State} \&}]{\+\_\+state,  }\item[{const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&}]{\+\_\+draw\+Mode }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

The leave function is used to restore GL states the have been changed. This function must restore the status before \hyperlink{a07748_aeb32b92d411b21712d12662ddd910ee8}{enter()}!

If you do not need the I\+Renderer$\ast$ argument in your override of this function, simply use the override without the additional parameter.

There are two overloads of the \hyperlink{a07748_abfaa9091bfb2ff5d221884902c100bfe}{leave()} function, one with I\+Renderer$\ast$ parameter, the other one without. As long the overload with I\+Renderer$\ast$ parameter is not being overridden, all renderers will make use of the overload without the I\+Renderer$\ast$ parameter. If the overload with I\+Renderer$\ast$ parameter is being overridden, only legacy renderers will use the version without the additional parameter and new renderers implementing the \hyperlink{a07468}{I\+Renderer} interface will use the version with the additional parameter. 

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

\mbox{\Hypertarget{a07748_a0a4a7d32775cfe489e3ebf934b03404d}\label{a07748_a0a4a7d32775cfe489e3ebf934b03404d}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!leave\+Pick@{leave\+Pick}}
\index{leave\+Pick@{leave\+Pick}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{leave\+Pick()}{leavePick()}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::leave\+Pick (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{G\+L\+State} \&}]{\+\_\+state,  }\item[{\hyperlink{a06177_af5fad41dadeca314c2077f897377dbd0}{Pick\+Target}}]{\+\_\+target,  }\item[{const \hyperlink{a07792}{Draw\+Modes\+::\+Draw\+Mode} \&}]{\+\_\+draw\+Mode }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

The leave\+Pick function is used to restore GL states the have been changed. This function must restore the status before \hyperlink{a07748_aa2409686d081ef760ea381b1766887e3}{enter\+Pick()} ! Its default implementation will call the \hyperlink{a07748_abfaa9091bfb2ff5d221884902c100bfe}{leave()} function. \mbox{\Hypertarget{a07748_a642e5368075974d327b8e278ea402b1b}\label{a07748_a642e5368075974d327b8e278ea402b1b}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!multipass\+Node@{multipass\+Node}}
\index{multipass\+Node@{multipass\+Node}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{multipass\+Node()}{multipassNode()}}
{\footnotesize\ttfamily \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::multipass\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the current multipass settings for the node. 

Get a bitmask defining in which traverse path an action is applied to the node. (1-\/indexed) Use the P\+A\+S\+S\+ES enum above to control multipass rendering!

\begin{DoxyReturn}{Returns}
Bitmask defining in which traverse passes an action is applied to the node. 
\end{DoxyReturn}


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

\mbox{\Hypertarget{a07748_a5793c63e71f0b0be25ad263c107414e7}\label{a07748_a5793c63e71f0b0be25ad263c107414e7}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!multipass\+Node\+Active@{multipass\+Node\+Active}}
\index{multipass\+Node\+Active@{multipass\+Node\+Active}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{multipass\+Node\+Active()}{multipassNodeActive()}}
{\footnotesize\ttfamily bool A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::multipass\+Node\+Active (\begin{DoxyParamCaption}\item[{const unsigned int}]{\+\_\+i }\end{DoxyParamCaption}) const}



Get Node status to traverse in a specific pass. 

Check multipass setting for the node if an action will be applied in the given pass. Use the P\+A\+S\+S\+ES enum above to control multipass rendering!


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Check this pass if an action will be applied to the node. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{a07748_aa5b51555586e02aa737000ecd7746b75}\label{a07748_aa5b51555586e02aa737000ecd7746b75}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!multipass\+Node\+Set\+Active@{multipass\+Node\+Set\+Active}}
\index{multipass\+Node\+Set\+Active@{multipass\+Node\+Set\+Active}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{multipass\+Node\+Set\+Active()}{multipassNodeSetActive()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::multipass\+Node\+Set\+Active (\begin{DoxyParamCaption}\item[{const unsigned int}]{\+\_\+i,  }\item[{bool}]{\+\_\+active }\end{DoxyParamCaption})}



Set Node status to traverse in a specific pass. 

Change multipass setting for the node. An action will be applied to this node in the given pass. Use the P\+A\+S\+S\+ES enum above to control multipass rendering!


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Pass in which the node should be rendered \\
\hline
{\em \+\_\+active} & Enable or disable node in this pass? \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{a07748_ab0a5d24296a8a9469bc09e8d965220d9}\label{a07748_ab0a5d24296a8a9469bc09e8d965220d9}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!multipass\+Status@{multipass\+Status}}
\index{multipass\+Status@{multipass\+Status}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{multipass\+Status()}{multipassStatus()}}
{\footnotesize\ttfamily \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::multipass\+Status (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the current multipass settings for the nodes status functions. 

Get a bitmask defining in which traverse pass the enter and leave nodes are used. Use the P\+A\+S\+S\+ES enum above to control multipass rendering!

\begin{DoxyReturn}{Returns}
Bitmask defining in which traverse pass the enter and leave nodes are used 
\end{DoxyReturn}


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

\mbox{\Hypertarget{a07748_a203f9d9fdb07cd84fe9f516facba7da5}\label{a07748_a203f9d9fdb07cd84fe9f516facba7da5}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!multipass\+Status\+Active@{multipass\+Status\+Active}}
\index{multipass\+Status\+Active@{multipass\+Status\+Active}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{multipass\+Status\+Active()}{multipassStatusActive()}}
{\footnotesize\ttfamily bool A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::multipass\+Status\+Active (\begin{DoxyParamCaption}\item[{const unsigned int}]{\+\_\+i }\end{DoxyParamCaption}) const}



Get multipass status to traverse in a specific pass. 

Check multipass setting for the nodes status functions if they should be called in the given render pass. Use the P\+A\+S\+S\+ES enum above to control multipass rendering!


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Check this pass if the nodes enter/leave functions are active \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{a07748_ad91cf957c42d06d0f2134d38fe832ae2}\label{a07748_ad91cf957c42d06d0f2134d38fe832ae2}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!multipass\+Status\+Set\+Active@{multipass\+Status\+Set\+Active}}
\index{multipass\+Status\+Set\+Active@{multipass\+Status\+Set\+Active}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{multipass\+Status\+Set\+Active()}{multipassStatusSetActive()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::multipass\+Status\+Set\+Active (\begin{DoxyParamCaption}\item[{const unsigned int}]{\+\_\+i,  }\item[{bool}]{\+\_\+active }\end{DoxyParamCaption})}



Set multipass status to traverse in a specific pass. 

Change multipass setting for the nodes status functions. The node will call its enter and leave functions in the given pass if its set active. Use the P\+A\+S\+S\+ES enum above to control multipass rendering!


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Pass in which the node should be rendered \\
\hline
{\em \+\_\+active} & Activate or deactivate in this pass? \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{a07748_adac324be19fb72e7044dedcc147be86c}\label{a07748_adac324be19fb72e7044dedcc147be86c}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!pick@{pick}}
\index{pick@{pick}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{pick()}{pick()}}
{\footnotesize\ttfamily virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::pick (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{G\+L\+State} \&}]{,  }\item[{\hyperlink{a06177_af5fad41dadeca314c2077f897377dbd0}{Pick\+Target}}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

Draw the node using the GL picking name stack. The node\textquotesingle{}s ID will already be on the name stack, so only names identifying e.\+g. faces should be used ( by pick\+\_\+set\+\_\+name() ). 

Reimplemented in \hyperlink{a11768_a1d2c6374117b73dad78849b664c57971}{Plane\+Node}.



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

\mbox{\Hypertarget{a07748_a06664baf28a361ef43035adcca035df2}\label{a07748_a06664baf28a361ef43035adcca035df2}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!picking\+Enabled@{picking\+Enabled}}
\index{picking\+Enabled@{picking\+Enabled}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{picking\+Enabled()}{pickingEnabled()}}
{\footnotesize\ttfamily bool A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::picking\+Enabled (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Check if picking is enabled for this node 

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

\mbox{\Hypertarget{a07748_ad5284266f456d59b62acaab0d341e5e9}\label{a07748_ad5284266f456d59b62acaab0d341e5e9}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!remove@{remove}}
\index{remove@{remove}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{remove()}{remove()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::remove (\begin{DoxyParamCaption}\item[{\hyperlink{a07748_a73b7864855a03453fc0d7f9dc768fbd6}{Child\+Iter}}]{\+\_\+pos }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Remove child node at position \+\_\+pos. This \+\_\+pos {\itshape must} {\itshape be} {\itshape reachable} from \hyperlink{a07748_a00478af2e7a38f73b639312364656613}{children\+Begin()}.~\newline
 This method has no effect if called with \hyperlink{a07748_a0a177319e2a49833940ed97f0bb37cc2}{children\+End()} as parameter. 

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

\mbox{\Hypertarget{a07748_aa16ecd9656f0231f01fd1adaa11c3f99}\label{a07748_aa16ecd9656f0231f01fd1adaa11c3f99}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!set\+\_\+parent@{set\+\_\+parent}}
\index{set\+\_\+parent@{set\+\_\+parent}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{set\+\_\+parent()}{set\_parent()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::set\+\_\+parent (\begin{DoxyParamCaption}\item[{\hyperlink{a07748}{Base\+Node} $\ast$}]{\+\_\+parent }\end{DoxyParamCaption})}



Set the parent of this node. 

This function will remove this node from its original parents children, if the parent exists. And will add it to the new parents children. \mbox{\Hypertarget{a07748_ab32e4dba1c5776d1b645135e0147be9f}\label{a07748_ab32e4dba1c5776d1b645135e0147be9f}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!set\+Multipass\+Node@{set\+Multipass\+Node}}
\index{set\+Multipass\+Node@{set\+Multipass\+Node}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{set\+Multipass\+Node()}{setMultipassNode()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::set\+Multipass\+Node (\begin{DoxyParamCaption}\item[{const \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask}}]{\+\_\+pass\+Node }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set multipass settings for the node. 

Set a bitmask defining in which traverse path an action is applied to the node. (1-\/indexed) Set to A\+L\+L\+P\+A\+S\+S\+ES if you want to render in all passes. Use the P\+A\+S\+S\+ES enum above to control multipass rendering!


\begin{DoxyParams}{Parameters}
{\em \+\_\+pass\+Node} & Bitmask defining in which traverse passes an action is applied to the node. \\
\hline
\end{DoxyParams}


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

\mbox{\Hypertarget{a07748_a369760b4c674c5de0a804d598481961c}\label{a07748_a369760b4c674c5de0a804d598481961c}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!set\+Multipass\+Status@{set\+Multipass\+Status}}
\index{set\+Multipass\+Status@{set\+Multipass\+Status}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{set\+Multipass\+Status()}{setMultipassStatus()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::set\+Multipass\+Status (\begin{DoxyParamCaption}\item[{const \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask}}]{\+\_\+pass\+Status }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set multipass settings for the nodes status functions. 

Set a bitmask defining in which traverse pass the enter and leave nodes are used. Use the P\+A\+S\+S\+ES enum above to control multipass rendering!

Set to A\+L\+L\+P\+A\+S\+S\+ES if you want to render in all passes


\begin{DoxyParams}{Parameters}
{\em \+\_\+pass\+Status} & Bitmask defining in which traverse pass the enter and leave nodes are used \\
\hline
\end{DoxyParams}


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

\mbox{\Hypertarget{a07748_af50d39a99d3a2d2c0e5f2b0a5e259b49}\label{a07748_af50d39a99d3a2d2c0e5f2b0a5e259b49}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!set\+Render\+Object\+Modifier@{set\+Render\+Object\+Modifier}}
\index{set\+Render\+Object\+Modifier@{set\+Render\+Object\+Modifier}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{set\+Render\+Object\+Modifier()}{setRenderObjectModifier()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::set\+Render\+Object\+Modifier (\begin{DoxyParamCaption}\item[{\hyperlink{a07540}{Render\+Object\+Modifier} $\ast$}]{\+\_\+modifier }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set modifier for render objects. 

Render-\/objects can be modified, if the implementation of a node supports this. The currently active modifier should be applied directly before adding an object to the renderer.


\begin{DoxyParams}{Parameters}
{\em \+\_\+modifier} & pointer to address of modifier, address must be valid whenever the node creates render-\/objects \\
\hline
\end{DoxyParams}


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

\mbox{\Hypertarget{a07748_acba8f8c7c0da363df6f226c462dac6e4}\label{a07748_acba8f8c7c0da363df6f226c462dac6e4}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!set\+Render\+Object\+Shaders@{set\+Render\+Object\+Shaders}}
\index{set\+Render\+Object\+Shaders@{set\+Render\+Object\+Shaders}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{set\+Render\+Object\+Shaders()}{setRenderObjectShaders()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::set\+Render\+Object\+Shaders (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{\+\_\+vertex\+Shader\+File,  }\item[{const std\+::string \&}]{\+\_\+geometry\+Shader\+File,  }\item[{const std\+::string \&}]{\+\_\+fragment\+Shader\+File,  }\item[{bool}]{\+\_\+relative\+Paths = {\ttfamily true},  }\item[{\hyperlink{a06191_aff5214aaf6e6caba8f1a09f816d544fe}{Draw\+Modes\+::\+Draw\+Mode\+Primitive}}]{\+\_\+primitive\+Type = {\ttfamily DrawModes\+:\+:PRIMITIVE\+\_\+POLYGON} }\end{DoxyParamCaption})}



Set custom shaders. 

Assigns a set of shaders to a primitive type of a node. For instance, it is possible to render faces with a different shaders than lines. Default shaders are used instead if no other shaders are provided. Note\+: the derived node has to actually make use of shaders provided here

Example\+: set shaders in Open\+Flipper/\+Shaders/\+My\+Wire\+Shaders for rendering the line parts of a node\+: node-\/$>$set\+Renderobject\+Shaders(\char`\"{}\+My\+Wire\+Shaders/v.\+glsl\char`\"{}, \char`\"{}\+My\+Wire\+Shaders/g.\+glsl\char`\"{}, \char`\"{}\+My\+Wire\+Shaders/f.\+glsl\char`\"{}, true, A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+P\+R\+I\+M\+I\+T\+I\+V\+E\+\_\+\+W\+I\+R\+E\+F\+R\+A\+ME);


\begin{DoxyParams}{Parameters}
{\em \+\_\+vertex\+Shader\+File} & filename of vertex shader template compatible with \hyperlink{a07568}{A\+C\+G\+::\+Shader\+Generator} \\
\hline
{\em \+\_\+geometry\+Shader\+File} & filename of geometry shader template compatible with \hyperlink{a07568}{A\+C\+G\+::\+Shader\+Generator} \\
\hline
{\em \+\_\+fragment\+Shader\+File} & filename of fragment shader template compatible with \hyperlink{a07568}{A\+C\+G\+::\+Shader\+Generator} \\
\hline
{\em \+\_\+relative\+Paths} & filenames are relative or absolute \\
\hline
{\em \+\_\+primitive\+Type} & assign shaders to rendering this type of primitive of the polyline \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{a07748_a80b6383cc3a1a20f6cae4f0655efdb88}\label{a07748_a80b6383cc3a1a20f6cae4f0655efdb88}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!set\+Render\+Object\+Shaders@{set\+Render\+Object\+Shaders}}
\index{set\+Render\+Object\+Shaders@{set\+Render\+Object\+Shaders}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{set\+Render\+Object\+Shaders()}{setRenderObjectShaders()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::set\+Render\+Object\+Shaders (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{\+\_\+vertex\+Shader\+File,  }\item[{const std\+::string \&}]{\+\_\+tess\+Control\+Shader\+File,  }\item[{const std\+::string \&}]{\+\_\+tess\+Eval\+Shader\+File,  }\item[{const std\+::string \&}]{\+\_\+geometry\+Shader\+File,  }\item[{const std\+::string \&}]{\+\_\+fragment\+Shader\+File,  }\item[{bool}]{\+\_\+relative\+Paths = {\ttfamily true},  }\item[{\hyperlink{a06191_aff5214aaf6e6caba8f1a09f816d544fe}{Draw\+Modes\+::\+Draw\+Mode\+Primitive}}]{\+\_\+primitive\+Type = {\ttfamily DrawModes\+:\+:PRIMITIVE\+\_\+POLYGON} }\end{DoxyParamCaption})}



Set custom shaders. 

Assigns a set of shaders to a primitive type of a node. For instance, it is possible to render faces with a different shaders than lines. Default shaders are used instead if no other shaders are provided. Note\+: the derived node has to actually make use of shaders provided here

Example\+: set shaders in Open\+Flipper/\+Shaders/\+My\+Wire\+Shaders for rendering the line parts of a node\+: node-\/$>$set\+Render\+Object\+Shaders(\char`\"{}\+My\+Wire\+Shaders/v.\+glsl\char`\"{}, \char`\"{}\+My\+Wire\+Shaders/g.\+glsl\char`\"{}, \char`\"{}\+My\+Wire\+Shaders/f.\+glsl\char`\"{}, true, A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+P\+R\+I\+M\+I\+T\+I\+V\+E\+\_\+\+W\+I\+R\+E\+F\+R\+A\+ME);


\begin{DoxyParams}{Parameters}
{\em \+\_\+vertex\+Shader\+File} & filename of vertex shader template compatible with \hyperlink{a07568}{A\+C\+G\+::\+Shader\+Generator} \\
\hline
{\em \+\_\+tess\+Control\+Shader\+File} & filename of tessellation-\/control shader template compatible with \hyperlink{a07568}{A\+C\+G\+::\+Shader\+Generator} \\
\hline
{\em \+\_\+tess\+Eval\+Shader\+File} & filename of tessellation-\/eval shader template compatible with \hyperlink{a07568}{A\+C\+G\+::\+Shader\+Generator} \\
\hline
{\em \+\_\+geometry\+Shader\+File} & filename of geometry shader template compatible with \hyperlink{a07568}{A\+C\+G\+::\+Shader\+Generator} \\
\hline
{\em \+\_\+fragment\+Shader\+File} & filename of fragment shader template compatible with \hyperlink{a07568}{A\+C\+G\+::\+Shader\+Generator} \\
\hline
{\em \+\_\+relative\+Paths} & filenames are relative or absolute \\
\hline
{\em \+\_\+primitive\+Type} & assign shaders to rendering this type of primitive of the polyline \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{a07748_a59f38f9321a63bf74081f38fe70efb51}\label{a07748_a59f38f9321a63bf74081f38fe70efb51}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!set\+Render\+Object\+Texture@{set\+Render\+Object\+Texture}}
\index{set\+Render\+Object\+Texture@{set\+Render\+Object\+Texture}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{set\+Render\+Object\+Texture()}{setRenderObjectTexture()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::set\+Render\+Object\+Texture (\begin{DoxyParamCaption}\item[{int}]{\+\_\+sampler\+Slot,  }\item[{G\+Luint}]{\+\_\+tex\+Id,  }\item[{G\+Lenum}]{\+\_\+tex\+Type = {\ttfamily GL\+\_\+TEXTURE\+\_\+2D} }\end{DoxyParamCaption})}



Set textures for shader based rendering. 

Assign textures to sampler slots. Note\+: Fixed-\/function drawing ignores these textures. Also, it is still necessary to set the according sampler index in a Uniform\+Pool to access this texture in a shader.


\begin{DoxyParams}{Parameters}
{\em \+\_\+sampler\+Slot} & sampler slot to bind the texture to, zero-\/based index \\
\hline
{\em \+\_\+tex\+Id} & gl texture id \\
\hline
{\em \+\_\+tex\+Type} & gl texture type ie. G\+L\+\_\+\+T\+E\+X\+T\+U\+R\+E\+\_\+1D, .. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{a07748_ad44bb658a811bbe76cad299b615db83f}\label{a07748_ad44bb658a811bbe76cad299b615db83f}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!set\+Render\+Object\+Uniform\+Pool@{set\+Render\+Object\+Uniform\+Pool}}
\index{set\+Render\+Object\+Uniform\+Pool@{set\+Render\+Object\+Uniform\+Pool}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{set\+Render\+Object\+Uniform\+Pool()}{setRenderObjectUniformPool()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::set\+Render\+Object\+Uniform\+Pool (\begin{DoxyParamCaption}\item[{const \hyperlink{a08136}{G\+L\+S\+L\+::\+Uniform\+Pool} $\ast$}]{\+\_\+pool }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set uniforms for shader based rendering. 

Uniforms are copied from a pool when rendering with shader-\/based render-\/objects. The specified pool has to be a valid memory address whenever the objects are rendered. It does not make a copy of the pool.


\begin{DoxyParams}{Parameters}
{\em \+\_\+pool} & pointer to address of a uniform pool \\
\hline
\end{DoxyParams}


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



\subsection{Member Data Documentation}
\mbox{\Hypertarget{a07748_a5af4c01cfcd8430d75b03e1766d37163}\label{a07748_a5af4c01cfcd8430d75b03e1766d37163}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!multipass\+Node\+\_\+@{multipass\+Node\+\_\+}}
\index{multipass\+Node\+\_\+@{multipass\+Node\+\_\+}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{multipass\+Node\+\_\+}{multipassNode\_}}
{\footnotesize\ttfamily \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::multipass\+Node\+\_\+\hspace{0.3cm}{\ttfamily [private]}}

multi pass bit mask (1-\/indexed) Defines in which multipass runs an action should be applied to the node. (Only applies during multipass traversal!) 

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

\mbox{\Hypertarget{a07748_a1f34cce07ef9f8b0d7c15a75bf63bf4c}\label{a07748_a1f34cce07ef9f8b0d7c15a75bf63bf4c}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!multipass\+Status\+\_\+@{multipass\+Status\+\_\+}}
\index{multipass\+Status\+\_\+@{multipass\+Status\+\_\+}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{multipass\+Status\+\_\+}{multipassStatus\_}}
{\footnotesize\ttfamily \hyperlink{a07748_a4659c359974c95ec608ffce79c3dfb59}{Multipass\+Bit\+Mask} A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::multipass\+Status\+\_\+\hspace{0.3cm}{\ttfamily [private]}}

multi pass bit mask (1-\/indexed) Defines in which multipass runs the enter and leave functions should be called. (Only applies during multipass traversal!) 

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

\mbox{\Hypertarget{a07748_acd0f24ca104f4033ab8f4fd83a39bdf3}\label{a07748_acd0f24ca104f4033ab8f4fd83a39bdf3}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}!picking\+Enabled\+\_\+@{picking\+Enabled\+\_\+}}
\index{picking\+Enabled\+\_\+@{picking\+Enabled\+\_\+}!A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node}}
\subsubsection{\texorpdfstring{picking\+Enabled\+\_\+}{pickingEnabled\_}}
{\footnotesize\ttfamily bool A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node\+::picking\+Enabled\+\_\+\hspace{0.3cm}{\ttfamily [private]}}

Flag indicating if picking should be done for this object This flag has to be checked by your node if you implement picking 

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



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+Scenegraph/Base\+Node.\+hh\end{DoxyCompactItemize}
