Helios++
Helios software for LiDAR simulations
StaticScene.h
1 #pragma once
2 
3 #include <vector>
4 #include <memory>
5 
6 
7 #include <scene/Scene.h>
8 #include <assetloading/ScenePart.h>
9 
10 using std::vector;
11 using std::shared_ptr;
12 
24 class StaticScene : public Scene{
25 private:
26  // *** SERIALIZATION *** //
27  // *********************** //
28  friend class boost::serialization::access;
35  template <class Archive>
36  void serialize(Archive &ar, const unsigned int version){
37  boost::serialization::void_cast_register<StaticScene, Scene>();
38  boost::serialization::void_cast_register<StaticScene, Scene>();
39  ar &boost::serialization::base_object<Scene>(*this);
40  ar &staticObjs;
41  }
42 
43 protected:
44  // *** ATTRIBUTES *** //
45  // ******************** //
49  vector<shared_ptr<ScenePart>> staticObjs;
50 
51 public:
52  // *** CONSTRUCTION / DESTRUCTION *** //
53  // ************************************ //
57  StaticScene() = default;
58  ~StaticScene() override {}
68  StaticScene(Scene &s) : Scene(s) {}
69 
70  // *** GETTERs and SETTERs *** //
71  // ***************************** //
77  inline void appendStaticObject(shared_ptr<ScenePart> obj)
78  {staticObjs.push_back(obj);}
84  inline shared_ptr<ScenePart> getStaticObject(size_t const index)
85  {return staticObjs[index];}
91  inline void setStaticObject(size_t const index, shared_ptr<ScenePart> obj)
92  {staticObjs[index] = obj;}
97  inline void removeStaticObject(size_t const index)
98  {staticObjs.erase(staticObjs.begin()+index);}
102  inline void clearStaticObjects(){staticObjs.clear();}
107  inline size_t numStaticObjects() {return staticObjs.size();}
108 
109  // *** READ / WRITE *** //
110  // ********************** //
116  void writeObject(std::string path) override;
122  static StaticScene *readObject(std::string path);
123 };
Class representing a scene asset.
Definition: Scene.h:28
Static scene basic implementation.
Definition: StaticScene.h:24
void removeStaticObject(size_t const index)
Remove static object at given index.
Definition: StaticScene.h:97
StaticScene()=default
Static scene default constructor.
void appendStaticObject(shared_ptr< ScenePart > obj)
Append given static object to the scene.
Definition: StaticScene.h:77
void writeObject(std::string path) override
Serialize the static scene and write it to given output file.
Definition: StaticScene.cpp:20
void setStaticObject(size_t const index, shared_ptr< ScenePart > obj)
Set static object at given index.
Definition: StaticScene.h:91
void clearStaticObjects()
Remove all static objects from the static scene.
Definition: StaticScene.h:102
shared_ptr< ScenePart > getStaticObject(size_t const index)
Obtain static object at given index.
Definition: StaticScene.h:84
vector< shared_ptr< ScenePart > > staticObjs
Static objects composing the scene.
Definition: StaticScene.h:49
size_t numStaticObjects()
Obtain the number of static objects in the scene.
Definition: StaticScene.h:107
static StaticScene * readObject(std::string path)
Read serialized static scene from given file.
Definition: StaticScene.cpp:27
StaticScene(Scene &s)
Build a static scene using given scene as basis.
Definition: StaticScene.h:68
void serialize(Archive &ar, const unsigned int version)
Serialize a StaticScene to a stream of bytes.
Definition: StaticScene.h:36