diff --git a/include/hpp/fcl/serialization/BVH_model.h b/include/hpp/fcl/serialization/BVH_model.h index a87958017947bf05c68ef0e40870788a87a5813d..a1b8693aafb8b2f42768f5fd2557be64bb54678d 100644 --- a/include/hpp/fcl/serialization/BVH_model.h +++ b/include/hpp/fcl/serialization/BVH_model.h @@ -43,38 +43,13 @@ void save(Archive &ar, const hpp::fcl::BVHModelBase &bvh_model, bvh_model)); ar &make_nvp("num_vertices", bvh_model.num_vertices); - if (bvh_model.num_vertices > 0 && bvh_model.vertices.get()) { - typedef Eigen::Matrix<FCL_REAL, 3, Eigen::Dynamic> AsVertixMatrix; - const Eigen::Map<const AsVertixMatrix> vertices_map( - reinterpret_cast<const double *>(bvh_model.vertices->data()), 3, - bvh_model.num_vertices); - ar &make_nvp("vertices", vertices_map); - } + ar &make_nvp("vertices", bvh_model.vertices); ar &make_nvp("num_tris", bvh_model.num_tris); - if (bvh_model.num_tris > 0 && bvh_model.tri_indices.get()) { - typedef Eigen::Matrix<Triangle::index_type, 3, Eigen::Dynamic> - AsTriangleMatrix; - const Eigen::Map<const AsTriangleMatrix> tri_indices_map( - reinterpret_cast<const Triangle::index_type *>( - bvh_model.tri_indices->data()), - 3, bvh_model.num_tris); - ar &make_nvp("tri_indices", tri_indices_map); - } + ar &make_nvp("tri_indices", bvh_model.tri_indices); ar &make_nvp("build_state", bvh_model.build_state); - if (bvh_model.num_vertices > 0 && bvh_model.prev_vertices.get()) { - const bool has_prev_vertices = true; - ar << make_nvp("has_prev_vertices", has_prev_vertices); - typedef Eigen::Matrix<FCL_REAL, 3, Eigen::Dynamic> AsVertixMatrix; - const Eigen::Map<const AsVertixMatrix> prev_vertices_map( - reinterpret_cast<const double *>(bvh_model.prev_vertices->data()), 3, - bvh_model.num_vertices); - ar &make_nvp("prev_vertices", prev_vertices_map); - } else { - const bool has_prev_vertices = false; - ar &make_nvp("has_prev_vertices", has_prev_vertices); - } + ar &make_nvp("prev_vertices", bvh_model.prev_vertices); // if(bvh_model.convex) // { @@ -98,64 +73,14 @@ void load(Archive &ar, hpp::fcl::BVHModelBase &bvh_model, bvh_model)); unsigned int num_vertices; - ar >> make_nvp("num_vertices", num_vertices); - if (num_vertices != bvh_model.num_vertices) { - bvh_model.vertices.reset(); - bvh_model.num_vertices = num_vertices; - if (num_vertices > 0) - bvh_model.vertices.reset(new std::vector<Vec3f>(num_vertices)); - } - if (num_vertices > 0) { - typedef Eigen::Matrix<FCL_REAL, 3, Eigen::Dynamic> AsVertixMatrix; - Eigen::Map<AsVertixMatrix> vertices_map( - reinterpret_cast<double *>(bvh_model.vertices->data()), 3, - bvh_model.num_vertices); - ar >> make_nvp("vertices", vertices_map); - } else - bvh_model.vertices.reset(); - - unsigned int num_tris; - ar >> make_nvp("num_tris", num_tris); - - if (num_tris != bvh_model.num_tris) { - bvh_model.tri_indices.reset(); - bvh_model.num_tris = num_tris; - if (num_tris > 0) - bvh_model.tri_indices.reset(new std::vector<Triangle>(num_tris)); - } - if (num_tris > 0) { - typedef Eigen::Matrix<Triangle::index_type, 3, Eigen::Dynamic> - AsTriangleMatrix; - Eigen::Map<AsTriangleMatrix> tri_indices_map( - reinterpret_cast<Triangle::index_type *>(bvh_model.tri_indices->data()), - 3, bvh_model.num_tris); - ar &make_nvp("tri_indices", tri_indices_map); - } else - bvh_model.tri_indices.reset(); + ar >> make_nvp("num_vertices", bvh_model.num_vertices); + ar >> make_nvp("vertices", bvh_model.vertices); + ar >> make_nvp("num_tris", bvh_model.num_tris); + ar >> make_nvp("tri_indices", bvh_model.tri_indices); ar >> make_nvp("build_state", bvh_model.build_state); - typedef internal::BVHModelBaseAccessor Accessor; - reinterpret_cast<Accessor &>(bvh_model).num_tris_allocated = num_tris; - reinterpret_cast<Accessor &>(bvh_model).num_vertices_allocated = num_vertices; - - bool has_prev_vertices; - ar >> make_nvp("has_prev_vertices", has_prev_vertices); - if (has_prev_vertices) { - if (num_vertices != bvh_model.num_vertices) { - bvh_model.prev_vertices.reset(); - if (num_vertices > 0) - bvh_model.prev_vertices.reset(new std::vector<Vec3f>(num_vertices)); - } - if (num_vertices > 0) { - typedef Eigen::Matrix<FCL_REAL, 3, Eigen::Dynamic> AsVertixMatrix; - Eigen::Map<AsVertixMatrix> prev_vertices_map( - reinterpret_cast<double *>(bvh_model.prev_vertices->data()), 3, - bvh_model.num_vertices); - ar &make_nvp("prev_vertices", prev_vertices_map); - } - } else - bvh_model.prev_vertices.reset(); + ar >> make_nvp("prev_vertices", bvh_model.prev_vertices); // bool has_convex = true; // ar >> make_nvp("has_convex",has_convex);