9 #ifndef opengl_COpenGLScene_H 10 #define opengl_COpenGLScene_H 73 template<
class T>
inline void insertCollection(
const T &objs,
const std::string &vpn=std::string(
"main")) {
74 insert(objs.begin(),objs.end(),vpn);
81 void insert(
const CRenderizablePtr &newObject,
const std::string &viewportName=std::string(
"main"));
87 template<
class T_it>
inline void insert(
const T_it &
begin,
const T_it &
end,
const std::string &vpn=std::string(
"main")) {
88 for (T_it it=begin;it!=
end;it++) insert(*it,vpn);
95 COpenGLViewportPtr createViewport(
const std::string &viewportName );
99 COpenGLViewportPtr getViewport(
const std::string &viewportName = std::string(
"main") )
const;
108 void clear(
bool createMainViewport =
true );
122 CRenderizablePtr getByName(
const std::string &str,
const std::string &viewportName = std::string(
"main") );
131 template <
typename T>
132 typename T::SmartPtr
getByClass(
const size_t &ith = 0 )
const 137 typename T::SmartPtr o = (*it)->getByClass<T>(ith);
138 if (o.present())
return o;
140 return typename T::SmartPtr();
147 void removeObject(
const CRenderizablePtr &obj,
const std::string &viewportName = std::string(
"main") );
151 void initializeAllTextures();
161 bool saveToFile(
const std::string &fil)
const;
167 bool loadFromFile(
const std::string &fil);
179 template <
typename FUNCTOR>
185 internal_visitAllObjects(functor, *itO);
193 template <
typename FUNCTOR,
typename EXTRA_PARAM>
195 visitAllObjects( std::bind2nd(functor,userParam) );
206 template <
typename FUNCTOR>
212 CSetOfObjectsPtr obj = CSetOfObjectsPtr(o);
214 internal_visitAllObjects(functor,*it);
222 inline COpenGLScenePtr &operator<<(COpenGLScenePtr &s,const CRenderizablePtr &r) {
227 template <
class T>
inline COpenGLScenePtr &operator<<(COpenGLScenePtr &s,const std::vector<T> &v) {
228 s->insert(v.begin(),v.end());
EIGEN_STRONG_INLINE iterator end()
A set of object, which are referenced to the coordinates framework established in this object...
void visitAllObjects(FUNCTOR functor) const
Recursive depth-first visit all objects in all viewports of the scene, calling the user-supplied func...
The virtual base class which provides a unified interface for all persistent objects in MRPT...
void insertCollection(const T &objs, const std::string &vpn=std::string("main"))
Inserts a set of objects into the scene, in the given viewport ("main" by default).
EIGEN_STRONG_INLINE iterator begin()
const Scalar * const_iterator
void clear()
Clear the contents of this container.
A class for storing a list of text lines.
std::vector< COpenGLViewportPtr > TListViewports
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
T::SmartPtr getByClass(const size_t &ith=0) const
Returns the i'th object of a given class (or of a descendant class), or NULL (an empty smart pointer)...
void enableFollowCamera(bool enabled)
If disabled (default), the SceneViewer application will ignore the camera of the "main" viewport and ...
size_t viewportsCount() const
TListViewports m_viewports
The list of viewports, indexed by name.
static void internal_visitAllObjects(FUNCTOR functor, const CRenderizablePtr &o)
void insert(const T_it &begin, const T_it &end, const std::string &vpn=std::string("main"))
Inserts a set of objects into the scene, in the given viewport ("main" by default).
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
#define IS_CLASS(ptrObj, class_name)
Evaluates to true if the given pointer to an object (derived from mrpt::utils::CSerializable) is of t...
CListOpenGLObjects::const_iterator const_iterator
CListOpenGLObjects::const_iterator const_iterator
void visitAllObjects(FUNCTOR functor, const EXTRA_PARAM &userParam) const
Recursive depth-first visit all objects in all viewports of the scene, calling the user-supplied func...
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives...
bool followCamera() const
Return the value of "followCamera".
bool BASE_IMPEXP traceRay(const std::vector< TPolygonWithPlane > &vec, const mrpt::poses::CPose3D &pose, double &dist)
Fast ray tracing method using polygons' properties.
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)