@@ -208,10 +208,13 @@ bool Environment::applyCommand(const Command& command)
208
208
{
209
209
std::lock_guard<std::mutex> lock (mutex_);
210
210
const auto & cmd = static_cast <const tesseract_environment::ChangeDefaultContactMarginCommand&>(command);
211
- tesseract_collision::CollisionMarginData collision_data = continuous_manager_->getCollisionMarginData ();
212
- collision_data.setDefaultCollisionMarginData (cmd.getDefaultCollisionMargin ());
213
- continuous_manager_->setCollisionMarginData (collision_data);
214
- discrete_manager_->setCollisionMarginData (collision_data);
211
+ collision_margin_data_.setDefaultCollisionMarginData (cmd.getDefaultCollisionMargin ());
212
+
213
+ if (continuous_manager_ != nullptr )
214
+ continuous_manager_->setDefaultCollisionMarginData (cmd.getDefaultCollisionMargin ());
215
+
216
+ if (discrete_manager_ != nullptr )
217
+ discrete_manager_->setDefaultCollisionMarginData (cmd.getDefaultCollisionMargin ());
215
218
216
219
++revision_;
217
220
commands_.push_back (
@@ -225,12 +228,16 @@ bool Environment::applyCommand(const Command& command)
225
228
{
226
229
std::lock_guard<std::mutex> lock (mutex_);
227
230
const auto & cmd = static_cast <const tesseract_environment::ChangePairContactMarginCommand&>(command);
228
- tesseract_collision::CollisionMarginData collision_data = continuous_manager_-> getCollisionMarginData ();
231
+
229
232
for (const auto & link_pair : cmd.getPairCollisionMarginData ())
230
- collision_data.setPairCollisionMarginData (link_pair.first .first , link_pair.first .second , link_pair.second );
233
+ collision_margin_data_.setPairCollisionMarginData (
234
+ link_pair.first .first , link_pair.first .second , link_pair.second );
231
235
232
- continuous_manager_->setCollisionMarginData (collision_data);
233
- discrete_manager_->setCollisionMarginData (collision_data);
236
+ if (continuous_manager_ != nullptr )
237
+ continuous_manager_->setCollisionMarginData (collision_margin_data_);
238
+
239
+ if (discrete_manager_ != nullptr )
240
+ discrete_manager_->setCollisionMarginData (collision_margin_data_);
234
241
235
242
++revision_;
236
243
commands_.push_back (
@@ -891,6 +898,8 @@ Environment::getDiscreteContactManagerHelper(const std::string& name) const
891
898
manager->setActiveCollisionObjects (active_link_names_);
892
899
}
893
900
901
+ manager->setCollisionMarginData (collision_margin_data_);
902
+
894
903
return manager;
895
904
}
896
905
@@ -919,6 +928,8 @@ Environment::getContinuousContactManagerHelper(const std::string& name) const
919
928
manager->setActiveCollisionObjects (active_link_names_);
920
929
}
921
930
931
+ manager->setCollisionMarginData (collision_margin_data_);
932
+
922
933
return manager;
923
934
}
924
935
0 commit comments