Directory: | ./ |
---|---|
File: | include/coal/serialization/collision_data.h |
Date: | 2025-04-01 09:23:31 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 113 | 113 | 100.0% |
Branches: | 76 | 150 | 50.7% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | // | ||
2 | // Copyright (c) 2021 INRIA | ||
3 | // | ||
4 | |||
5 | #ifndef COAL_SERIALIZATION_COLLISION_DATA_H | ||
6 | #define COAL_SERIALIZATION_COLLISION_DATA_H | ||
7 | |||
8 | #include "coal/collision_data.h" | ||
9 | #include "coal/serialization/fwd.h" | ||
10 | |||
11 | namespace boost { | ||
12 | namespace serialization { | ||
13 | |||
14 | template <class Archive> | ||
15 | 42 | void save(Archive& ar, const coal::Contact& contact, | |
16 | const unsigned int /*version*/) { | ||
17 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar& make_nvp("b1", contact.b1); |
18 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar& make_nvp("b2", contact.b2); |
19 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar& make_nvp("normal", contact.normal); |
20 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar& make_nvp("nearest_points", contact.nearest_points); |
21 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar& make_nvp("pos", contact.pos); |
22 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar& make_nvp("penetration_depth", contact.penetration_depth); |
23 | 42 | } | |
24 | |||
25 | template <class Archive> | ||
26 | 42 | void load(Archive& ar, coal::Contact& contact, const unsigned int /*version*/) { | |
27 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar >> make_nvp("b1", contact.b1); |
28 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar >> make_nvp("b2", contact.b2); |
29 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar >> make_nvp("normal", contact.normal); |
30 |
1/2✓ Branch 1 taken 21 times.
✗ Branch 2 not taken.
|
42 | std::array<coal::Vec3s, 2> nearest_points; |
31 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar >> make_nvp("nearest_points", nearest_points); |
32 |
1/2✓ Branch 3 taken 21 times.
✗ Branch 4 not taken.
|
42 | contact.nearest_points[0] = nearest_points[0]; |
33 |
1/2✓ Branch 3 taken 21 times.
✗ Branch 4 not taken.
|
42 | contact.nearest_points[1] = nearest_points[1]; |
34 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar >> make_nvp("pos", contact.pos); |
35 |
1/2✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
|
42 | ar >> make_nvp("penetration_depth", contact.penetration_depth); |
36 | 42 | contact.o1 = NULL; | |
37 | 42 | contact.o2 = NULL; | |
38 | 42 | } | |
39 | |||
40 | 84 | COAL_SERIALIZATION_SPLIT(coal::Contact) | |
41 | |||
42 | template <class Archive> | ||
43 | 56 | void serialize(Archive& ar, coal::QueryRequest& query_request, | |
44 | const unsigned int /*version*/) { | ||
45 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("gjk_initial_guess", query_request.gjk_initial_guess); |
46 | // TODO: use gjk_initial_guess instead | ||
47 | COAL_COMPILER_DIAGNOSTIC_PUSH | ||
48 | COAL_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS | ||
49 |
1/2✓ Branch 1 taken 28 times.
✗ Branch 2 not taken.
|
56 | ar& make_nvp("enable_cached_gjk_guess", |
50 | 56 | query_request.enable_cached_gjk_guess); | |
51 | COAL_COMPILER_DIAGNOSTIC_POP | ||
52 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("cached_gjk_guess", query_request.cached_gjk_guess); |
53 |
1/2✓ Branch 1 taken 28 times.
✗ Branch 2 not taken.
|
56 | ar& make_nvp("cached_support_func_guess", |
54 | 56 | query_request.cached_support_func_guess); | |
55 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("gjk_max_iterations", query_request.gjk_max_iterations); |
56 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("gjk_tolerance", query_request.gjk_tolerance); |
57 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("gjk_variant", query_request.gjk_variant); |
58 |
1/2✓ Branch 1 taken 28 times.
✗ Branch 2 not taken.
|
56 | ar& make_nvp("gjk_convergence_criterion", |
59 | 56 | query_request.gjk_convergence_criterion); | |
60 |
1/2✓ Branch 1 taken 28 times.
✗ Branch 2 not taken.
|
56 | ar& make_nvp("gjk_convergence_criterion_type", |
61 | 56 | query_request.gjk_convergence_criterion_type); | |
62 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("epa_max_iterations", query_request.epa_max_iterations); |
63 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("epa_tolerance", query_request.epa_tolerance); |
64 |
1/2✓ Branch 1 taken 28 times.
✗ Branch 2 not taken.
|
56 | ar& make_nvp("collision_distance_threshold", |
65 | 56 | query_request.collision_distance_threshold); | |
66 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("enable_timings", query_request.enable_timings); |
67 | 56 | } | |
68 | |||
69 | template <class Archive> | ||
70 | 56 | void serialize(Archive& ar, coal::QueryResult& query_result, | |
71 | const unsigned int /*version*/) { | ||
72 |
1/2✓ Branch 2 taken 28 times.
✗ Branch 3 not taken.
|
56 | ar& make_nvp("cached_gjk_guess", query_result.cached_gjk_guess); |
73 |
1/2✓ Branch 1 taken 28 times.
✗ Branch 2 not taken.
|
56 | ar& make_nvp("cached_support_func_guess", |
74 | 56 | query_result.cached_support_func_guess); | |
75 | 56 | } | |
76 | |||
77 | template <class Archive> | ||
78 | 28 | void serialize(Archive& ar, coal::CollisionRequest& collision_request, | |
79 | const unsigned int /*version*/) { | ||
80 |
1/2✓ Branch 3 taken 14 times.
✗ Branch 4 not taken.
|
28 | ar& make_nvp("base", boost::serialization::base_object<coal::QueryRequest>( |
81 | collision_request)); | ||
82 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& make_nvp("num_max_contacts", collision_request.num_max_contacts); |
83 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& make_nvp("enable_contact", collision_request.enable_contact); |
84 | COAL_COMPILER_DIAGNOSTIC_PUSH | ||
85 | COAL_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS | ||
86 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | ar& make_nvp("enable_distance_lower_bound", |
87 | 28 | collision_request.enable_distance_lower_bound); | |
88 | COAL_COMPILER_DIAGNOSTIC_POP | ||
89 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& make_nvp("security_margin", collision_request.security_margin); |
90 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& make_nvp("break_distance", collision_request.break_distance); |
91 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& make_nvp("distance_upper_bound", collision_request.distance_upper_bound); |
92 | 28 | } | |
93 | |||
94 | template <class Archive> | ||
95 | 14 | void save(Archive& ar, const coal::CollisionResult& collision_result, | |
96 | const unsigned int /*version*/) { | ||
97 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
14 | ar& make_nvp("base", boost::serialization::base_object<coal::QueryResult>( |
98 | collision_result)); | ||
99 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
14 | ar& make_nvp("contacts", collision_result.getContacts()); |
100 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar& make_nvp("distance_lower_bound", collision_result.distance_lower_bound); |
101 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar& make_nvp("nearest_points", collision_result.nearest_points); |
102 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar& make_nvp("normal", collision_result.normal); |
103 | 14 | } | |
104 | |||
105 | template <class Archive> | ||
106 | 14 | void load(Archive& ar, coal::CollisionResult& collision_result, | |
107 | const unsigned int /*version*/) { | ||
108 |
2/4✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 7 times.
✗ Branch 6 not taken.
|
14 | ar >> make_nvp("base", boost::serialization::base_object<coal::QueryResult>( |
109 | collision_result)); | ||
110 | 14 | std::vector<coal::Contact> contacts; | |
111 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("contacts", contacts); |
112 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
14 | collision_result.clear(); |
113 |
2/2✓ Branch 1 taken 14 times.
✓ Branch 2 taken 7 times.
|
42 | for (size_t k = 0; k < contacts.size(); ++k) |
114 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | collision_result.addContact(contacts[k]); |
115 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("distance_lower_bound", collision_result.distance_lower_bound); |
116 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
14 | std::array<coal::Vec3s, 2> nearest_points; |
117 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("nearest_points", nearest_points); |
118 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
14 | collision_result.nearest_points[0] = nearest_points[0]; |
119 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
14 | collision_result.nearest_points[1] = nearest_points[1]; |
120 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("normal", collision_result.normal); |
121 | 14 | } | |
122 | |||
123 | 28 | COAL_SERIALIZATION_SPLIT(coal::CollisionResult) | |
124 | |||
125 | template <class Archive> | ||
126 | 28 | void serialize(Archive& ar, coal::DistanceRequest& distance_request, | |
127 | const unsigned int /*version*/) { | ||
128 |
1/2✓ Branch 3 taken 14 times.
✗ Branch 4 not taken.
|
28 | ar& make_nvp("base", boost::serialization::base_object<coal::QueryRequest>( |
129 | distance_request)); | ||
130 | COAL_COMPILER_DIAGNOSTIC_PUSH | ||
131 | COAL_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS | ||
132 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& make_nvp("enable_nearest_points", distance_request.enable_nearest_points); |
133 | COAL_COMPILER_DIAGNOSTIC_POP | ||
134 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
28 | ar& make_nvp("enable_signed_distance", |
135 | 28 | distance_request.enable_signed_distance); | |
136 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& make_nvp("rel_err", distance_request.rel_err); |
137 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& make_nvp("abs_err", distance_request.abs_err); |
138 | 28 | } | |
139 | |||
140 | template <class Archive> | ||
141 | 14 | void save(Archive& ar, const coal::DistanceResult& distance_result, | |
142 | const unsigned int /*version*/) { | ||
143 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
14 | ar& make_nvp("base", boost::serialization::base_object<coal::QueryResult>( |
144 | distance_result)); | ||
145 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar& make_nvp("min_distance", distance_result.min_distance); |
146 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar& make_nvp("nearest_points", distance_result.nearest_points); |
147 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar& make_nvp("normal", distance_result.normal); |
148 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar& make_nvp("b1", distance_result.b1); |
149 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar& make_nvp("b2", distance_result.b2); |
150 | 14 | } | |
151 | |||
152 | template <class Archive> | ||
153 | 14 | void load(Archive& ar, coal::DistanceResult& distance_result, | |
154 | const unsigned int /*version*/) { | ||
155 |
2/4✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 7 times.
✗ Branch 6 not taken.
|
14 | ar >> make_nvp("base", boost::serialization::base_object<coal::QueryResult>( |
156 | distance_result)); | ||
157 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("min_distance", distance_result.min_distance); |
158 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
14 | std::array<coal::Vec3s, 2> nearest_points; |
159 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("nearest_points", nearest_points); |
160 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
14 | distance_result.nearest_points[0] = nearest_points[0]; |
161 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
14 | distance_result.nearest_points[1] = nearest_points[1]; |
162 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("normal", distance_result.normal); |
163 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("b1", distance_result.b1); |
164 |
1/2✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
|
14 | ar >> make_nvp("b2", distance_result.b2); |
165 | 14 | distance_result.o1 = NULL; | |
166 | 14 | distance_result.o2 = NULL; | |
167 | 14 | } | |
168 | |||
169 | 28 | COAL_SERIALIZATION_SPLIT(coal::DistanceResult) | |
170 | |||
171 | } // namespace serialization | ||
172 | } // namespace boost | ||
173 | |||
174 | 36 | COAL_SERIALIZATION_DECLARE_EXPORT(::coal::CollisionRequest) | |
175 | 36 | COAL_SERIALIZATION_DECLARE_EXPORT(::coal::CollisionResult) | |
176 | 36 | COAL_SERIALIZATION_DECLARE_EXPORT(::coal::DistanceRequest) | |
177 | 36 | COAL_SERIALIZATION_DECLARE_EXPORT(::coal::DistanceResult) | |
178 | |||
179 | #endif // ifndef COAL_SERIALIZATION_COLLISION_DATA_H | ||
180 |