Helios++
Helios software for LiDAR simulations
serial.h
1 #pragma once
2 
3 #include "Triangle.h"
4 
5 namespace boost
6 {
7  namespace serialization
8  {
9  template<class Archive>
10  void serialize(Archive & ar, glm::dvec2 & vec, const unsigned int version)
11  {
12  ar & vec.x;
13  ar & vec.y;
14  }
15 
16  template<class Archive>
17  void serialize(Archive & ar, glm::dvec3 & vec, const unsigned int version)
18  {
19  ar & vec.x;
20  ar & vec.y;
21  ar & vec.z;
22  }
23 
24  template<class Archive>
25  void save_construct_data(Archive & ar, const Triangle * t, const unsigned int file_version) {
26  // save data required to construct instance
27  ar << t->verts;
28  }
29  template<class Archive>
30  void load_construct_data(Archive & ar, Triangle * t, const unsigned int file_version) {
31  // retrieve data from archive required to construct new instance
32  Vertex verts[3];
33  ar >> verts;
34  // invoke inplace constructor to initialize instance of my_class
35  ::new(t)Triangle(verts[0], verts[1], verts[2]);
36  }
37  }
38 }
Definition: AABB.h:166
Class representing triangle primitive.
Definition: Triangle.h:13
Vertex verts[3]
The 3 vertices defining the triangle.
Definition: Triangle.h:54
Class representing a vertex.
Definition: Vertex.h:14