Collision Checker
serialize_collision_checker.cc
Go to the documentation of this file.
1 
3 
4 #if ENABLE_SERIALIZER
5 
6 #include <s11n.net/s11n/proxy/std/vector.hpp>
7 #include <s11n.net/s11n/s11nlite.hpp>
9 
10 namespace collision {
11 namespace serialize {
12 ICollisionCheckerExport *exportObject(const collision::CollisionChecker &cc) {
13  return new CollisionCheckerExport(cc);
14 }
15 CollisionCheckerExport::CollisionCheckerExport(const CollisionChecker &cc) {
16  for (auto &obj : cc.getObstacles()) {
17  // warning: unsafe typecast
18  m_children.push_back(
19  static_cast<ICollisionObjectExport_s11 *>(obj->exportThis()));
20  }
21 }
22 
24  for (auto obj : m_children) {
25  if (obj) delete obj;
26  }
27 }
28 bool CollisionCheckerExport::operator()(s11nlite::node_type &dest) const {
29  typedef s11nlite::node_traits TR;
30  TR::class_name(dest, "CollisionCheckerExport");
31  for (auto el : m_children) {
32  if (!el) return false;
33  }
34  return s11n::list::serialize_list(dest, "children", m_children);
35 }
36 bool CollisionCheckerExport::operator()(const s11nlite::node_type &src) {
37  typedef s11nlite::node_traits TR;
38  bool res = s11n::list::deserialize_list(src, "children", this->m_children);
39  return res;
40 }
41 
42 CollisionChecker *CollisionCheckerExport::loadObject(void) {
43  CollisionChecker *cc = new CollisionChecker();
44  for (auto obj : m_children) {
45  CollisionObject *loaded_obj_ptr = obj->loadObject();
46  if (!loaded_obj_ptr) {
47  delete cc;
48  return nullptr;
49  }
50  CollisionObjectConstPtr loaded_obj(loaded_obj_ptr);
51  cc->addCollisionObject(loaded_obj);
52  }
53  return cc;
54 }
55 } // namespace serialize
56 } // namespace collision
57 #endif
virtual bool operator()(s11nlite::node_type &dest) const
CollisionChecker can contain collision objects and their groups (such as ShapeGroup and TimeVariantCo...
std::shared_ptr< const CollisionObject > CollisionObjectConstPtr
int serialize(const test::BroadphaseFailureCCObj &bf_object, std::ostream &output_stream, const char *format=SERIALIZER_DEFAULT_FORMAT)
std::vector< ICollisionObjectExport_s11 * > m_children