\hypertarget{classBaseObjectData}{}\section{Base\+Object\+Data Class Reference}
\label{classBaseObjectData}\index{Base\+Object\+Data@{Base\+Object\+Data}}


{\ttfamily \#include $<$Open\+Flipper/common/\+Base\+Object\+Data.\+hh$>$}

Inheritance diagram for Base\+Object\+Data\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=12.000000cm]{classBaseObjectData}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classBaseObjectData_aac91c0bbe48e5fb842b3aced5e1dcd1d}{Base\+Object\+Data} (const \hyperlink{classBaseObjectData}{Base\+Object\+Data} \&\+\_\+object)
\begin{DoxyCompactList}\small\item\em copy constructor \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_a6ef5b8cba1f5eac30e317c69c7c45e2e}\label{classBaseObjectData_a6ef5b8cba1f5eac30e317c69c7c45e2e}} 
\hyperlink{classBaseObjectData_a6ef5b8cba1f5eac30e317c69c7c45e2e}{Base\+Object\+Data} ()
\begin{DoxyCompactList}\small\item\em constructor \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_ab7ba36271607ad06cecd525ed0080ac3}\label{classBaseObjectData_ab7ba36271607ad06cecd525ed0080ac3}} 
virtual \hyperlink{classBaseObjectData_ab7ba36271607ad06cecd525ed0080ac3}{$\sim$\+Base\+Object\+Data} ()
\begin{DoxyCompactList}\small\item\em destructor \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_aa99cbee24f472c3904aad4c7da0cd947}\label{classBaseObjectData_aa99cbee24f472c3904aad4c7da0cd947}} 
virtual void \hyperlink{classBaseObjectData_aa99cbee24f472c3904aad4c7da0cd947}{set\+Name} (Q\+String \+\_\+name) override
\begin{DoxyCompactList}\small\item\em path to the file from which the object is loaded ( defaults to \char`\"{}.\char`\"{} ) \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}\textbf{ Data}\par
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{classBaseObjectData_abdf84b94d4626b2a5e848afc152bc6e9}{cleanup} () override
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Picking}\par
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classBaseObjectData_afdb0f57814b92dd4ad19c81b1601857c}\label{classBaseObjectData_afdb0f57814b92dd4ad19c81b1601857c}} 
virtual bool \hyperlink{classBaseObjectData_afdb0f57814b92dd4ad19c81b1601857c}{picked} (uint \+\_\+node\+\_\+idx)
\begin{DoxyCompactList}\small\item\em detect if the node has been picked \end{DoxyCompactList}\item 
virtual void \hyperlink{classBaseObjectData_a4a09f3b75c87eb646d96c9bd0b840c3e}{enable\+Picking} (bool \+\_\+enable)
\item 
virtual bool \hyperlink{classBaseObjectData_a569ab93d5ca6edfb643f2b560d974ae6}{picking\+Enabled} ()
\item 
virtual \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \hyperlink{classBaseObjectData_aa0e755876bca41047f32edc80e900553}{refine\+Pick} (\hyperlink{namespaceACG_1_1SceneGraph_af5fad41dadeca314c2077f897377dbd0}{A\+C\+G\+::\+Scene\+Graph\+::\+Pick\+Target} \+\_\+pick\+Target, const \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \+\_\+hit\+Point, const \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \+\_\+start, const \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \+\_\+dir, const unsigned int \+\_\+target\+Idx)
\begin{DoxyCompactList}\small\item\em Refine picking. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Protected Member Functions}
\begin{Indent}\textbf{ Update handling}\par
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{classBaseObjectData_ab2bb7817a0fdb692c0444971620478f0}{update} (\hyperlink{classUpdateType}{Update\+Type} \+\_\+type=\hyperlink{group__DefaultUpdateTypes_ga4ce39b8d60eb78ada5080d032c9463a8}{U\+P\+D\+A\+T\+E\+\_\+\+A\+LL}) override
\begin{DoxyCompactList}\small\item\em This function is called to update the object. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classBaseObjectData_a4b065d6bc6c97d22f12e31d814c8232b}{initialize\+Scenegraph\+Nodes} ()
\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classBaseObjectData_a4107254ac74f90d4f91e810d755b98c2}\label{classBaseObjectData_a4107254ac74f90d4f91e810d755b98c2}} 
class {\bfseries Core}
\end{DoxyCompactItemize}
\subsection*{Object visualization}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classBaseObjectData_a2a18977aaabede76890ae6ea4a3ccd4e}\label{classBaseObjectData_a2a18977aaabede76890ae6ea4a3ccd4e}} 
bool \hyperlink{classBaseObjectData_a2a18977aaabede76890ae6ea4a3ccd4e}{manip\+Placed\+\_\+}
\begin{DoxyCompactList}\small\item\em root\+Node of global Scenegraph structure \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_a56324c0a9a874aac9aa4bfc68708017f}\label{classBaseObjectData_a56324c0a9a874aac9aa4bfc68708017f}} 
\hyperlink{BaseObjectData_8hh_aa6997c8a324868d41fb462fff83a98dc}{Separator\+Node} $\ast$ \hyperlink{classBaseObjectData_a56324c0a9a874aac9aa4bfc68708017f}{root\+Node\+\_\+}
\begin{DoxyCompactList}\small\item\em root\+Node of global Scenegraph structure \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_aca64467531a2916b233191ead3c32e33}\label{classBaseObjectData_aca64467531a2916b233191ead3c32e33}} 
\hyperlink{BaseObjectData_8hh_aa6997c8a324868d41fb462fff83a98dc}{Separator\+Node} $\ast$ \hyperlink{classBaseObjectData_aca64467531a2916b233191ead3c32e33}{separator\+Node\+\_\+}
\begin{DoxyCompactList}\small\item\em Separator at top of Scenegraph structure used for this Object. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_aa2f70298a2c1e14b9389b53944c74a35}\label{classBaseObjectData_aa2f70298a2c1e14b9389b53944c74a35}} 
\hyperlink{BaseObjectData_8hh_af3661d1854c63aa68ed6f3f61bbbd9f5}{Qt\+Translation\+Manipulator\+Node} $\ast$ \hyperlink{classBaseObjectData_aa2f70298a2c1e14b9389b53944c74a35}{manipulator\+Node\+\_\+}
\begin{DoxyCompactList}\small\item\em Manipulator used for this Object. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_a9379caeb475370b65cf091ad8e30b883}\label{classBaseObjectData_a9379caeb475370b65cf091ad8e30b883}} 
\hyperlink{BaseObjectData_8hh_a3a689dfbad9465332a5ad72b9406ffa0}{Material\+Node} $\ast$ \hyperlink{classBaseObjectData_a9379caeb475370b65cf091ad8e30b883}{material\+Node\+\_\+}
\begin{DoxyCompactList}\small\item\em Scenegraph Material Node for the object. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_ae47f914220bc6761b3f83e8184c1c43f}\label{classBaseObjectData_ae47f914220bc6761b3f83e8184c1c43f}} 
\hyperlink{BaseObjectData_8hh_a58316f4e3c8a565b55bbbfc484f34fd2}{Bounding\+Box\+Node} $\ast$ \hyperlink{classBaseObjectData_ae47f914220bc6761b3f83e8184c1c43f}{bounding\+Box\+Node\+\_\+}
\begin{DoxyCompactList}\small\item\em Bounding box node for the object. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_ab406a93451a5166e5fe00c7fb13deb46}\label{classBaseObjectData_ab406a93451a5166e5fe00c7fb13deb46}} 
\hyperlink{BaseObjectData_8hh_ac67af4d2d5d36a5a1c4e91685988b0d9}{Stencil\+Ref\+Node} $\ast$ \hyperlink{classBaseObjectData_ab406a93451a5166e5fe00c7fb13deb46}{stencil\+Ref\+Node\+\_\+}
\begin{DoxyCompactList}\small\item\em Stencil reference node for the object. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_a991588f6f5afc6f48fa08607646da9f7}\label{classBaseObjectData_a991588f6f5afc6f48fa08607646da9f7}} 
virtual void \hyperlink{classBaseObjectData_a991588f6f5afc6f48fa08607646da9f7}{show} ()
\begin{DoxyCompactList}\small\item\em Sets the whole Scenegraph subtree of this node to visible. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_a9d48ae4e906a01d1aed3e061799adfe4}\label{classBaseObjectData_a9d48ae4e906a01d1aed3e061799adfe4}} 
virtual void \hyperlink{classBaseObjectData_a9d48ae4e906a01d1aed3e061799adfe4}{hide} ()
\begin{DoxyCompactList}\small\item\em Sets the whole Scenegraph subtree of this node to invisible. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_aea07365796662b28f8144acfe0ccebbc}\label{classBaseObjectData_aea07365796662b28f8144acfe0ccebbc}} 
virtual bool \hyperlink{classBaseObjectData_aea07365796662b28f8144acfe0ccebbc}{visible} () override
\begin{DoxyCompactList}\small\item\em return visiblity \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_a2062656aca501745554226ea28ca83f0}\label{classBaseObjectData_a2062656aca501745554226ea28ca83f0}} 
virtual void \hyperlink{classBaseObjectData_a2062656aca501745554226ea28ca83f0}{visible} (bool \+\_\+visible) override
\begin{DoxyCompactList}\small\item\em Sets visiblity of the whole Scenegraph subtree of this node. \end{DoxyCompactList}\item 
\hyperlink{BaseObjectData_8hh_aa6997c8a324868d41fb462fff83a98dc}{Separator\+Node} $\ast$ \hyperlink{classBaseObjectData_a8317cce9d65624082fc3d3b3f0c0b3fd}{base\+Node} ()
\item 
virtual bool \hyperlink{classBaseObjectData_adea932d1ff88cca06bdcf84e7729ed8c}{has\+Node} (\hyperlink{BaseObjectData_8hh_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node)
\begin{DoxyCompactList}\small\item\em Check if the given node is owned by this object. \end{DoxyCompactList}\item 
virtual \hyperlink{BaseObjectData_8hh_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$ \hyperlink{classBaseObjectData_acd14c562de90a1c675dc92941f8be6af}{primary\+Node} ()
\item 
\hyperlink{BaseObjectData_8hh_af3661d1854c63aa68ed6f3f61bbbd9f5}{Qt\+Translation\+Manipulator\+Node} $\ast$ \hyperlink{classBaseObjectData_adf4fdd191347abb3d104c8f740b7cbfd}{manipulator\+Node} ()
\item 
virtual \hyperlink{classACG_1_1SceneGraph_1_1ShaderNode}{A\+C\+G\+::\+Scene\+Graph\+::\+Shader\+Node} $\ast$ \hyperlink{classBaseObjectData_ac09e5177c2a65d7cb7bc1e9577e41196}{shader\+Node} ()
\item 
\mbox{\Hypertarget{classBaseObjectData_aabc3f13376927eadadb4614629b95a4d}\label{classBaseObjectData_aabc3f13376927eadadb4614629b95a4d}} 
\hyperlink{BaseObjectData_8hh_a3a689dfbad9465332a5ad72b9406ffa0}{Material\+Node} $\ast$ \hyperlink{classBaseObjectData_aabc3f13376927eadadb4614629b95a4d}{material\+Node} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the materialnode \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_a38cf94fc42b0d495451d5cad99a2f550}\label{classBaseObjectData_a38cf94fc42b0d495451d5cad99a2f550}} 
const \hyperlink{BaseObjectData_8hh_a3a689dfbad9465332a5ad72b9406ffa0}{Material\+Node} $\ast$ \hyperlink{classBaseObjectData_a38cf94fc42b0d495451d5cad99a2f550}{material\+Node} () const
\begin{DoxyCompactList}\small\item\em get a const pointer to the materialnode \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_aa3445d50f7651117b4a552a9a599bd97}\label{classBaseObjectData_aa3445d50f7651117b4a552a9a599bd97}} 
\hyperlink{BaseObjectData_8hh_a58316f4e3c8a565b55bbbfc484f34fd2}{Bounding\+Box\+Node} $\ast$ \hyperlink{classBaseObjectData_aa3445d50f7651117b4a552a9a599bd97}{bounding\+Box\+Node} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the bounding box node \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_ad630ac80967dfdcbc041cbfabf661d9e}\label{classBaseObjectData_ad630ac80967dfdcbc041cbfabf661d9e}} 
\hyperlink{BaseObjectData_8hh_ac67af4d2d5d36a5a1c4e91685988b0d9}{Stencil\+Ref\+Node} $\ast$ \hyperlink{classBaseObjectData_ad630ac80967dfdcbc041cbfabf661d9e}{stencil\+Ref\+Node} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the stencil reference node \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_aeae2e01cea709b1f15c12dce3e5128e6}\label{classBaseObjectData_aeae2e01cea709b1f15c12dce3e5128e6}} 
bool \hyperlink{classBaseObjectData_aeae2e01cea709b1f15c12dce3e5128e6}{manip\+Placed} ()
\begin{DoxyCompactList}\small\item\em Check if the manipulator has been placed. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_ad20704f0c5e57b1e42700c8c070b8f54}\label{classBaseObjectData_ad20704f0c5e57b1e42700c8c070b8f54}} 
void \hyperlink{classBaseObjectData_ad20704f0c5e57b1e42700c8c070b8f54}{manip\+Placed} (bool \+\_\+placed)
\begin{DoxyCompactList}\small\item\em set the manipulator place status \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classBaseObjectData_ab9aa8e04bc57c7a74f8a391a72c5a531}\label{classBaseObjectData_ab9aa8e04bc57c7a74f8a391a72c5a531}} 
void \hyperlink{classBaseObjectData_ab9aa8e04bc57c7a74f8a391a72c5a531}{get\+Bounding\+Box} (\hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \&bbmin, \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \&bbmax)
\begin{DoxyCompactList}\small\item\em get the bounding box of the object \end{DoxyCompactList}\item 
void \hyperlink{classBaseObjectData_ab0bfe8e28af17f4a3bd2b69b2d81ad48}{set\+Object\+Draw\+Mode} (const \hyperlink{classACG_1_1SceneGraph_1_1DrawModes_1_1DrawMode}{A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+mode, const bool \&\+\_\+force=false)
\begin{DoxyCompactList}\small\item\em Set the draw mode for the object. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Additional nodes}
\label{_amgrpd56dc20923d9d017dc8cc6ee1b49d6a5}%
\label{classBaseObjectData_BaseObjectData_AdditionalNodes_header}%
\Hypertarget{classBaseObjectData_BaseObjectData_AdditionalNodes_header}%
Functions to attach additional Nodes to objects

Manage additional scenegraph nodes that belong to an object. \begin{DoxyCompactItemize}
\item 
std\+::vector$<$ std\+::pair$<$ \hyperlink{BaseObjectData_8hh_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$, Q\+String $>$ $>$ \hyperlink{classBaseObjectData_af59ccde862bd86f82f436c7896a24573}{additional\+Nodes\+\_\+}
\item 
{\footnotesize template$<$typename NodeT $>$ }\\bool \hyperlink{classBaseObjectData_aeff14b8f67bddf92ea8a9a6d0cd73e7e}{add\+Additional\+Node} (NodeT $\ast$\+\_\+node, Q\+String \+\_\+plugin\+Name, Q\+String \+\_\+node\+Name, int \+\_\+id=0)
\begin{DoxyCompactList}\small\item\em add an additional node to the object \end{DoxyCompactList}\item 
bool \hyperlink{classBaseObjectData_a7a866edb3ec8c6268f47ab3657996d03}{has\+Additional\+Node} (Q\+String \+\_\+plugin\+Name, Q\+String \+\_\+node\+Name, int \+\_\+id=0)
\begin{DoxyCompactList}\small\item\em check if an object has the additional node \end{DoxyCompactList}\item 
{\footnotesize template$<$typename NodeT $>$ }\\bool \hyperlink{classBaseObjectData_a4678e6604b038f400b99debeb71559e8}{get\+Additional\+Node} (NodeT $\ast$\&\+\_\+node, Q\+String \+\_\+plugin\+Name, Q\+String \+\_\+node\+Name, int \+\_\+id=0)
\begin{DoxyCompactList}\small\item\em get an addition node from the object \end{DoxyCompactList}\item 
{\footnotesize template$<$typename NodeT $>$ }\\bool \hyperlink{classBaseObjectData_a294383587833cf86f97531a0ea893a51}{remove\+Additional\+Node} (NodeT $\ast$\&\+\_\+node, Q\+String \+\_\+plugin\+Name, Q\+String \+\_\+node\+Name, int \+\_\+id=0)
\begin{DoxyCompactList}\small\item\em remove an additional node from the object \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
This is the basic Data class providing the functions common to all objects which show Objects in the Scene\+Graph 

Definition at line 102 of file Base\+Object\+Data.\+hh.



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classBaseObjectData_aac91c0bbe48e5fb842b3aced5e1dcd1d}\label{classBaseObjectData_aac91c0bbe48e5fb842b3aced5e1dcd1d}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!Base\+Object\+Data@{Base\+Object\+Data}}
\index{Base\+Object\+Data@{Base\+Object\+Data}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{Base\+Object\+Data()}{BaseObjectData()}}
{\footnotesize\ttfamily Base\+Object\+Data\+::\+Base\+Object\+Data (\begin{DoxyParamCaption}\item[{const \hyperlink{classBaseObjectData}{Base\+Object\+Data} \&}]{\+\_\+object }\end{DoxyParamCaption})}



copy constructor 

Create new basic scenegraph nodes for this object We have to create our own visualization nodes as we are a new object 

Definition at line 68 of file Base\+Object\+Data.\+cc.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classBaseObjectData_aeff14b8f67bddf92ea8a9a6d0cd73e7e}\label{classBaseObjectData_aeff14b8f67bddf92ea8a9a6d0cd73e7e}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!add\+Additional\+Node@{add\+Additional\+Node}}
\index{add\+Additional\+Node@{add\+Additional\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{add\+Additional\+Node()}{addAdditionalNode()}}
{\footnotesize\ttfamily template$<$typename NodeT $>$ \\
bool Base\+Object\+Data\+::add\+Additional\+Node (\begin{DoxyParamCaption}\item[{NodeT $\ast$}]{\+\_\+node,  }\item[{Q\+String}]{\+\_\+plugin\+Name,  }\item[{Q\+String}]{\+\_\+node\+Name,  }\item[{int}]{\+\_\+id = {\ttfamily 0} }\end{DoxyParamCaption})}



add an additional node to the object 

This function can be used to store an additional Scenegraph node. If you add nodes there, you do not need to keep track of deleted, added objects, as this will be done in the main application. You have to create the node yourself as this function does not know the type. You should add the new node below the manipulator\+Node ( \hyperlink{classBaseObjectData_adf4fdd191347abb3d104c8f740b7cbfd}{Base\+Object\+Data\+::manipulator\+Node()} ) if you want that it moves with the rest of the data. Otherwise add it below the base\+Node ( \hyperlink{classBaseObjectData_a8317cce9d65624082fc3d3b3f0c0b3fd}{Base\+Object\+Data\+::base\+Node()} of the object.


\begin{DoxyParams}{Parameters}
{\em \+\_\+node} & Node to add \\
\hline
{\em \+\_\+plugin\+Name} & Name of the current plugin \\
\hline
{\em \+\_\+node\+Name} & Name of the New Node \\
\hline
{\em \+\_\+id} & extra index, if there will be multiple nodes with this name( defaults to 0) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if successfull 
\end{DoxyReturn}


Definition at line 67 of file Base\+Object\+Data\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classBaseObjectData_a8317cce9d65624082fc3d3b3f0c0b3fd}\label{classBaseObjectData_a8317cce9d65624082fc3d3b3f0c0b3fd}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!base\+Node@{base\+Node}}
\index{base\+Node@{base\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{base\+Node()}{baseNode()}}
{\footnotesize\ttfamily \hyperlink{BaseObjectData_8hh_aa6997c8a324868d41fb462fff83a98dc}{Separator\+Node} $\ast$ Base\+Object\+Data\+::base\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

get the base node of this object (Use this node to add custom Nodes to the Object which should not be transformed with the manipulator of the Object) 

Definition at line 225 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_abdf84b94d4626b2a5e848afc152bc6e9}\label{classBaseObjectData_abdf84b94d4626b2a5e848afc152bc6e9}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!cleanup@{cleanup}}
\index{cleanup@{cleanup}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{cleanup()}{cleanup()}}
{\footnotesize\ttfamily void Base\+Object\+Data\+::cleanup (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}

Clean all data structures of the object 

Reimplemented from \hyperlink{classBaseObject_ac246e42b17b1ed17b5db9f3de93bd83d}{Base\+Object}.



Reimplemented in \hyperlink{classMeshObject_a8379b3522022edc2403bf0e5b5f91b96}{Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classMeshObject_a8379b3522022edc2403bf0e5b5f91b96}{Mesh\+Object$<$ Poly\+Mesh $>$}, \hyperlink{classMeshObject_a8379b3522022edc2403bf0e5b5f91b96}{Mesh\+Object$<$ Tri\+Mesh $>$}, \hyperlink{classCameraObject_ad57488f191a622e24cd17504f860e999}{Camera\+Object}, \hyperlink{classPolyLineObject_ad09632b07ed2be0496a81feb6e52196d}{Poly\+Line\+Object}, \hyperlink{classBSplineSurfaceObject_acf3cdae584ae9c5fd8b654628d5369fc}{B\+Spline\+Surface\+Object}, \hyperlink{classSplatCloudObject_abaf2d70a241a733fa4f90c8b604d6e62}{Splat\+Cloud\+Object}, \hyperlink{classPlaneObject_a48a92ae8fc03538482bac560530de951}{Plane\+Object}, \hyperlink{classBSplineCurveObject_a85c49f80cd64b0b72c8044e184ab5234}{B\+Spline\+Curve\+Object}, \hyperlink{classPolyLineCollectionObject_a775ce28a2a78a29f10b41cb765593ffa}{Poly\+Line\+Collection\+Object}, \hyperlink{classQtWidgetObject_ac2281b6f1d507b468b4ce61f60bac48a}{Qt\+Widget\+Object}, \hyperlink{classCoordsysObject_a23756bd9fbe99f75bd3139928ed6fc41}{Coordsys\+Object}, \hyperlink{classLightObject_a4d7a0e903f8f37b7ffb1c91f3f56bd07}{Light\+Object}, \hyperlink{classSphereObject_a3e9285abd49267000d6c96563e8f45e4}{Sphere\+Object}, \hyperlink{classVolumeMeshObject_a48195c9f0c57cc388c5f0fe77b212673}{Volume\+Mesh\+Object$<$ Mesh\+T $>$}, and \hyperlink{classSkeletonObject_aeec680c0f5643367fad330b06e3a85d5}{Skeleton\+Object}.



Definition at line 102 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_a4a09f3b75c87eb646d96c9bd0b840c3e}\label{classBaseObjectData_a4a09f3b75c87eb646d96c9bd0b840c3e}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!enable\+Picking@{enable\+Picking}}
\index{enable\+Picking@{enable\+Picking}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{enable\+Picking()}{enablePicking()}}
{\footnotesize\ttfamily void Base\+Object\+Data\+::enable\+Picking (\begin{DoxyParamCaption}\item[{bool}]{\+\_\+enable }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Enable or disable picking for this Node The basic function defined here does nothing. It has to be reimplemented in the derived class 

Reimplemented in \hyperlink{classMeshObject_a7b664cb8b06570a34c7edddd98850b61}{Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classMeshObject_a7b664cb8b06570a34c7edddd98850b61}{Mesh\+Object$<$ Poly\+Mesh $>$}, \hyperlink{classMeshObject_a7b664cb8b06570a34c7edddd98850b61}{Mesh\+Object$<$ Tri\+Mesh $>$}, \hyperlink{classVolumeMeshObject_ad19ac5892957471dd89bc6ef69e1449d}{Volume\+Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classSplatCloudObject_ac5592d28e5a667d364d16ccadad19988}{Splat\+Cloud\+Object}, \hyperlink{classLightObject_ad421670d85e47deddee44bd5fce1bad2}{Light\+Object}, \hyperlink{classBSplineSurfaceObject_aa44abc4926e7e5142fa01875ba987f47}{B\+Spline\+Surface\+Object}, \hyperlink{classPolyLineObject_a1fdf3f769bbd5c8149f09d0b85287a7a}{Poly\+Line\+Object}, \hyperlink{classBSplineCurveObject_a2e1e37e93419234eb16bf652b24c5e49}{B\+Spline\+Curve\+Object}, \hyperlink{classPlaneObject_a340eb15f399bd295f5671bf284f20fce}{Plane\+Object}, \hyperlink{classPolyLineCollectionObject_a73007167850c49a3f26c755b36e5e946}{Poly\+Line\+Collection\+Object}, \hyperlink{classQtWidgetObject_a0011c5dde55ee98f857704d6230c5597}{Qt\+Widget\+Object}, \hyperlink{classCameraObject_a99ec62a55855cbbe518f1c6a3a90883a}{Camera\+Object}, \hyperlink{classSphereObject_ab25eef91f4d20e1a9f4a76153ff23ee5}{Sphere\+Object}, \hyperlink{classCoordsysObject_a96766f2eb589602882d18ab431a3a115}{Coordsys\+Object}, and \hyperlink{classSkeletonObject_adc1f0a8c68d29f306556e28a2c0575bb}{Skeleton\+Object}.



Definition at line 315 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_a4678e6604b038f400b99debeb71559e8}\label{classBaseObjectData_a4678e6604b038f400b99debeb71559e8}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!get\+Additional\+Node@{get\+Additional\+Node}}
\index{get\+Additional\+Node@{get\+Additional\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{get\+Additional\+Node()}{getAdditionalNode()}}
{\footnotesize\ttfamily template$<$typename NodeT $>$ \\
bool Base\+Object\+Data\+::get\+Additional\+Node (\begin{DoxyParamCaption}\item[{NodeT $\ast$\&}]{\+\_\+node,  }\item[{Q\+String}]{\+\_\+plugin\+Name,  }\item[{Q\+String}]{\+\_\+node\+Name,  }\item[{int}]{\+\_\+id = {\ttfamily 0} }\end{DoxyParamCaption})}



get an addition node from the object 

If you store additional Scenegraph node with the objects you can get these nodes with this function.


\begin{DoxyParams}{Parameters}
{\em \+\_\+node} & Returns the node \\
\hline
{\em \+\_\+plugin\+Name} & Name of the current plugin \\
\hline
{\em \+\_\+node\+Name} & Name of the Node \\
\hline
{\em \+\_\+id} & extra index, if there are multiple nodes with this name ( defaults to 0) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if found 
\end{DoxyReturn}


Definition at line 84 of file Base\+Object\+Data\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classBaseObjectData_a7a866edb3ec8c6268f47ab3657996d03}\label{classBaseObjectData_a7a866edb3ec8c6268f47ab3657996d03}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!has\+Additional\+Node@{has\+Additional\+Node}}
\index{has\+Additional\+Node@{has\+Additional\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{has\+Additional\+Node()}{hasAdditionalNode()}}
{\footnotesize\ttfamily bool Base\+Object\+Data\+::has\+Additional\+Node (\begin{DoxyParamCaption}\item[{Q\+String}]{\+\_\+plugin\+Name,  }\item[{Q\+String}]{\+\_\+node\+Name,  }\item[{int}]{\+\_\+id = {\ttfamily 0} }\end{DoxyParamCaption})}



check if an object has the additional node 

If you store additional Scenegraph nodes with the objects you can check if they exist with this function.


\begin{DoxyParams}{Parameters}
{\em \+\_\+plugin\+Name} & Name of the current plugin \\
\hline
{\em \+\_\+node\+Name} & Name of the Node \\
\hline
{\em \+\_\+id} & extra index, if there are multiple nodes with this name( defaults to 0) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if found 
\end{DoxyReturn}


Definition at line 338 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_adea932d1ff88cca06bdcf84e7729ed8c}\label{classBaseObjectData_adea932d1ff88cca06bdcf84e7729ed8c}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!has\+Node@{has\+Node}}
\index{has\+Node@{has\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{has\+Node()}{hasNode()}}
{\footnotesize\ttfamily bool Base\+Object\+Data\+::has\+Node (\begin{DoxyParamCaption}\item[{\hyperlink{BaseObjectData_8hh_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$}]{\+\_\+node }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Check if the given node is owned by this object. 

You can overload this function and return true, if your object generated the given node. Don\textquotesingle{}t forget to call this baseclass function on overload! 

Reimplemented in \hyperlink{classLightObject_acecf6cd1463b8b3f7b26dba5ce630cfa}{Light\+Object}, and \hyperlink{classQtWidgetObject_af93737588360b35e0c1bdb0a76932317}{Qt\+Widget\+Object}.



Definition at line 229 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_a4b065d6bc6c97d22f12e31d814c8232b}\label{classBaseObjectData_a4b065d6bc6c97d22f12e31d814c8232b}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!initialize\+Scenegraph\+Nodes@{initialize\+Scenegraph\+Nodes}}
\index{initialize\+Scenegraph\+Nodes@{initialize\+Scenegraph\+Nodes}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{initialize\+Scenegraph\+Nodes()}{initializeScenegraphNodes()}}
{\footnotesize\ttfamily void Base\+Object\+Data\+::initialize\+Scenegraph\+Nodes (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}

This function creates the basic scenegraph nodes 

Definition at line 121 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_adf4fdd191347abb3d104c8f740b7cbfd}\label{classBaseObjectData_adf4fdd191347abb3d104c8f740b7cbfd}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!manipulator\+Node@{manipulator\+Node}}
\index{manipulator\+Node@{manipulator\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{manipulator\+Node()}{manipulatorNode()}}
{\footnotesize\ttfamily \hyperlink{BaseObjectData_8hh_af3661d1854c63aa68ed6f3f61bbbd9f5}{Qt\+Translation\+Manipulator\+Node} $\ast$ Base\+Object\+Data\+::manipulator\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

get the Manipulator\+Node node of this object (Use this node to add custom Nodes to the Object which should be transformed with the manipulator of the Object) 

Definition at line 255 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_a569ab93d5ca6edfb643f2b560d974ae6}\label{classBaseObjectData_a569ab93d5ca6edfb643f2b560d974ae6}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!picking\+Enabled@{picking\+Enabled}}
\index{picking\+Enabled@{picking\+Enabled}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{picking\+Enabled()}{pickingEnabled()}}
{\footnotesize\ttfamily bool Base\+Object\+Data\+::picking\+Enabled (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Check if picking is enabled for this Node This function will return true unless the derived class overwrites this function. 

Reimplemented in \hyperlink{classMeshObject_a4e139439594c14383a1383a5e1ba4831}{Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classMeshObject_a4e139439594c14383a1383a5e1ba4831}{Mesh\+Object$<$ Poly\+Mesh $>$}, \hyperlink{classMeshObject_a4e139439594c14383a1383a5e1ba4831}{Mesh\+Object$<$ Tri\+Mesh $>$}, \hyperlink{classVolumeMeshObject_a07b3f56c358c9a92fe69df79ec4bc5f2}{Volume\+Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classSplatCloudObject_aae6b911374c536d8a372b7e35662bb21}{Splat\+Cloud\+Object}, \hyperlink{classLightObject_abdddc85b351ea17aa474abad0cf38e4c}{Light\+Object}, \hyperlink{classBSplineSurfaceObject_a428907d48138b53f7af144f307540a5b}{B\+Spline\+Surface\+Object}, \hyperlink{classPolyLineObject_af0e1e4d3f711248b01d2d64fd8543e48}{Poly\+Line\+Object}, \hyperlink{classBSplineCurveObject_a9ff895c0ec20b2e180ccaa61fb402708}{B\+Spline\+Curve\+Object}, \hyperlink{classPlaneObject_a3fd3c8a9f1b657c9ac6b1cca6e41db92}{Plane\+Object}, \hyperlink{classPolyLineCollectionObject_a088d667d5beb3d789bcdf96f2ee58fa2}{Poly\+Line\+Collection\+Object}, \hyperlink{classQtWidgetObject_a17c1e4142a3d35a602e9c143adcd9e2b}{Qt\+Widget\+Object}, \hyperlink{classCameraObject_a784147bfbc1b190bab88cb4eeeac9ed7}{Camera\+Object}, \hyperlink{classSphereObject_a2fe388fdfed2a2c0a38473ca1d2f189d}{Sphere\+Object}, \hyperlink{classCoordsysObject_a4564cb0d4049976f6dc7deda41fb29f0}{Coordsys\+Object}, and \hyperlink{classSkeletonObject_a3905691f234714f96d82da22963ecdb3}{Skeleton\+Object}.



Definition at line 318 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_acd14c562de90a1c675dc92941f8be6af}\label{classBaseObjectData_acd14c562de90a1c675dc92941f8be6af}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!primary\+Node@{primary\+Node}}
\index{primary\+Node@{primary\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{primary\+Node()}{primaryNode()}}
{\footnotesize\ttfamily \hyperlink{BaseObjectData_8hh_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$ Base\+Object\+Data\+::primary\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

get the primary node of this object (Use this node to change draw\+Modes) 

Reimplemented in \hyperlink{classMeshObject_a18d258031f51247572c08a33ae87a657}{Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classMeshObject_a18d258031f51247572c08a33ae87a657}{Mesh\+Object$<$ Poly\+Mesh $>$}, \hyperlink{classMeshObject_a18d258031f51247572c08a33ae87a657}{Mesh\+Object$<$ Tri\+Mesh $>$}, and \hyperlink{classVolumeMeshObject_a9c12cd329240912cf1ee958ee3713075}{Volume\+Mesh\+Object$<$ Mesh\+T $>$}.



Definition at line 251 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_aa0e755876bca41047f32edc80e900553}\label{classBaseObjectData_aa0e755876bca41047f32edc80e900553}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!refine\+Pick@{refine\+Pick}}
\index{refine\+Pick@{refine\+Pick}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{refine\+Pick()}{refinePick()}}
{\footnotesize\ttfamily \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} Base\+Object\+Data\+::refine\+Pick (\begin{DoxyParamCaption}\item[{\hyperlink{namespaceACG_1_1SceneGraph_af5fad41dadeca314c2077f897377dbd0}{A\+C\+G\+::\+Scene\+Graph\+::\+Pick\+Target}}]{\+\_\+pick\+Target,  }\item[{const \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d}}]{\+\_\+hit\+Point,  }\item[{const \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d}}]{\+\_\+start,  }\item[{const \hyperlink{namespaceACG_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d}}]{\+\_\+dir,  }\item[{const unsigned int}]{\+\_\+target\+Idx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Refine picking. 

Reimplement this function, if the object type can refine picking. E.\+g. the standard picking will rely on the z-\/buffer resolution, while a mesh can intersect a ray with the triangle and refine the depth via the exact intersection point.


\begin{DoxyParams}{Parameters}
{\em \+\_\+pick\+Target} & Current picking target (Faces, all,...) \\
\hline
{\em \+\_\+original} & hitpoint \\
\hline
{\em \+\_\+eye\+Pos} & current picking ray start position \\
\hline
{\em \+\_\+dir} & Ray direction when picking \\
\hline
{\em \+\_\+target\+Idx} & Entity id hit (e.\+g. face index for meshes \\
\hline
\end{DoxyParams}


Reimplemented in \hyperlink{classPolyLineObject_a597c4adc917739d5ce141be3dbecf53e}{Poly\+Line\+Object}, \hyperlink{classPolyLineCollectionObject_a08c5a9494ceaeaaaa99251d9cbe2bf48}{Poly\+Line\+Collection\+Object}, \hyperlink{classTriMeshObject_a84cc97a9791547c3fdbc70ddcdcafcfa}{Tri\+Mesh\+Object}, and \hyperlink{classPolyMeshObject_aa43a3271310a079204911b6a823fba05}{Poly\+Mesh\+Object}.



Definition at line 322 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_a294383587833cf86f97531a0ea893a51}\label{classBaseObjectData_a294383587833cf86f97531a0ea893a51}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!remove\+Additional\+Node@{remove\+Additional\+Node}}
\index{remove\+Additional\+Node@{remove\+Additional\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{remove\+Additional\+Node()}{removeAdditionalNode()}}
{\footnotesize\ttfamily template$<$typename NodeT $>$ \\
bool Base\+Object\+Data\+::remove\+Additional\+Node (\begin{DoxyParamCaption}\item[{NodeT $\ast$\&}]{\+\_\+node,  }\item[{Q\+String}]{\+\_\+plugin\+Name,  }\item[{Q\+String}]{\+\_\+node\+Name,  }\item[{int}]{\+\_\+id = {\ttfamily 0} }\end{DoxyParamCaption})}



remove an additional node from the object 

If additional nodes are stored for this object, such a node can be removed using this function. If this node has children, they will be removed from the scenegraph as well (and their memory is freed).


\begin{DoxyParams}{Parameters}
{\em \+\_\+node} & Needed for type specification \\
\hline
{\em \+\_\+plugin\+Name} & Name of the current plugin \\
\hline
{\em \+\_\+node\+Name} & Name of the Node \\
\hline
{\em \+\_\+id} & extra index, if there are multiple nodes with this name ( defaults to 0) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if found and removed 
\end{DoxyReturn}


Definition at line 99 of file Base\+Object\+Data\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classBaseObjectData_ab0bfe8e28af17f4a3bd2b69b2d81ad48}\label{classBaseObjectData_ab0bfe8e28af17f4a3bd2b69b2d81ad48}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!set\+Object\+Draw\+Mode@{set\+Object\+Draw\+Mode}}
\index{set\+Object\+Draw\+Mode@{set\+Object\+Draw\+Mode}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{set\+Object\+Draw\+Mode()}{setObjectDrawMode()}}
{\footnotesize\ttfamily void Base\+Object\+Data\+::set\+Object\+Draw\+Mode (\begin{DoxyParamCaption}\item[{const \hyperlink{classACG_1_1SceneGraph_1_1DrawModes_1_1DrawMode}{A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode} \&}]{\+\_\+mode,  }\item[{const bool \&}]{\+\_\+force = {\ttfamily false} }\end{DoxyParamCaption})}



Set the draw mode for the object. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+mode} & The draw mode that should be active for this object \\
\hline
{\em \+\_\+force} & If true, the mode is set ignoring if its supported by the node and its subnodes \\
\hline
\end{DoxyParams}


Definition at line 298 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_ac09e5177c2a65d7cb7bc1e9577e41196}\label{classBaseObjectData_ac09e5177c2a65d7cb7bc1e9577e41196}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!shader\+Node@{shader\+Node}}
\index{shader\+Node@{shader\+Node}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{shader\+Node()}{shaderNode()}}
{\footnotesize\ttfamily \hyperlink{classACG_1_1SceneGraph_1_1ShaderNode}{A\+C\+G\+::\+Scene\+Graph\+::\+Shader\+Node} $\ast$ Base\+Object\+Data\+::shader\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Return pointer to the shader node If you want to support shaders, you have to add a shader node into your scenegraph structure above your object to be rendered. If you do not have a shader, just ignore this function and it will return a 0 pointer. 

Reimplemented in \hyperlink{classMeshObject_acce3ec72c4b5c21089f9efbe8a8d7abd}{Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classMeshObject_acce3ec72c4b5c21089f9efbe8a8d7abd}{Mesh\+Object$<$ Poly\+Mesh $>$}, \hyperlink{classMeshObject_acce3ec72c4b5c21089f9efbe8a8d7abd}{Mesh\+Object$<$ Tri\+Mesh $>$}, \hyperlink{classVolumeMeshObject_ab5b253637a5c947023f66d33a6b3cd4e}{Volume\+Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classSplatCloudObject_a996ec78d3ae63d147a6acabb4aba8343}{Splat\+Cloud\+Object}, and \hyperlink{classBSplineSurfaceObject_abf31d35881755ec0d7fe4cd47fd3ea73}{B\+Spline\+Surface\+Object}.



Definition at line 259 of file Base\+Object\+Data.\+cc.

\mbox{\Hypertarget{classBaseObjectData_ab2bb7817a0fdb692c0444971620478f0}\label{classBaseObjectData_ab2bb7817a0fdb692c0444971620478f0}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!update@{update}}
\index{update@{update}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{update()}{update()}}
{\footnotesize\ttfamily void Base\+Object\+Data\+::update (\begin{DoxyParamCaption}\item[{\hyperlink{classUpdateType}{Update\+Type}}]{\+\_\+type = {\ttfamily \hyperlink{group__DefaultUpdateTypes_ga4ce39b8d60eb78ada5080d032c9463a8}{U\+P\+D\+A\+T\+E\+\_\+\+A\+LL}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}}



This function is called to update the object. 

If the object changes, the core will call this function. Normally this will update the corresponding scenegraph nodes or trigger other data handling which has to be done when the object changes.

\begin{DoxyNote}{Note}
Do not call this function yourself to avoid unnecessary overhead(the core will call it via the type plugins when it is required) 
\end{DoxyNote}


Reimplemented from \hyperlink{classBaseObject_a6bae0a3a31573a5e3d52736c498a5d98}{Base\+Object}.



Reimplemented in \hyperlink{classQtWidgetObject_aa4105a7aecf16da63dae87b70610fd24}{Qt\+Widget\+Object}, \hyperlink{classCameraObject_ae0b306dfb7af182026b0af3aa7dc8ae8}{Camera\+Object}, \hyperlink{classSkeletonObject_af57d728d2a5f5ee5c0ed33d4131792a3}{Skeleton\+Object}, \hyperlink{classMeshObject_ab519ebaadf7fe0bf49b4fb15a5a048a2}{Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classMeshObject_ab519ebaadf7fe0bf49b4fb15a5a048a2}{Mesh\+Object$<$ Poly\+Mesh $>$}, \hyperlink{classMeshObject_ab519ebaadf7fe0bf49b4fb15a5a048a2}{Mesh\+Object$<$ Tri\+Mesh $>$}, \hyperlink{classSphereObject_a7fd713a42a7afc20fcee90c2cb208397}{Sphere\+Object}, \hyperlink{classCoordsysObject_a2e557e9062b1114308f6d55e22517189}{Coordsys\+Object}, \hyperlink{classVolumeMeshObject_a04e7975f5c8deacceaa26a82f81826ba}{Volume\+Mesh\+Object$<$ Mesh\+T $>$}, \hyperlink{classPolyLineObject_a4e56bcd26d63dd57134cb256483b983f}{Poly\+Line\+Object}, \hyperlink{classLightObject_a74c3e3ae28c1ce6d16427682c7d11407}{Light\+Object}, \hyperlink{classPlaneObject_aab4eff42b5bdf4f4f9d5dc4078bb92af}{Plane\+Object}, \hyperlink{classBSplineCurveObject_a2af7d29423a3a34feb5db24315873701}{B\+Spline\+Curve\+Object}, \hyperlink{classBSplineSurfaceObject_a4f46a6e27f2011335a21269b3a19d3d1}{B\+Spline\+Surface\+Object}, \hyperlink{classSplatCloudObject_aebe68efaab6e4e5547fc08a1ab43062f}{Splat\+Cloud\+Object}, and \hyperlink{classPolyLineCollectionObject_acdea9aaf9758b39be174936e51c13212}{Poly\+Line\+Collection\+Object}.



Definition at line 329 of file Base\+Object\+Data.\+cc.



\subsection{Member Data Documentation}
\mbox{\Hypertarget{classBaseObjectData_af59ccde862bd86f82f436c7896a24573}\label{classBaseObjectData_af59ccde862bd86f82f436c7896a24573}} 
\index{Base\+Object\+Data@{Base\+Object\+Data}!additional\+Nodes\+\_\+@{additional\+Nodes\+\_\+}}
\index{additional\+Nodes\+\_\+@{additional\+Nodes\+\_\+}!Base\+Object\+Data@{Base\+Object\+Data}}
\subsubsection{\texorpdfstring{additional\+Nodes\+\_\+}{additionalNodes\_}}
{\footnotesize\ttfamily std\+::vector$<$ std\+::pair $<$\hyperlink{BaseObjectData_8hh_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node}$\ast$,Q\+String$>$ $>$ Base\+Object\+Data\+::additional\+Nodes\+\_\+\hspace{0.3cm}{\ttfamily [private]}}

This pointer may be used to store additional Nodes belonging to this Object The String should be used by the plugin to identify its Nodes 

Definition at line 375 of file Base\+Object\+Data.\+hh.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/common/\hyperlink{BaseObjectData_8hh}{Base\+Object\+Data.\+hh}\item 
Open\+Flipper/common/Base\+Object\+Data.\+cc\item 
Open\+Flipper/common/Base\+Object\+Data\+T\+\_\+impl.\+hh\end{DoxyCompactItemize}
