diff --git a/src/mc_control/MCController.cpp b/src/mc_control/MCController.cpp index 6fe9becb9a..d2b435804a 100644 --- a/src/mc_control/MCController.cpp +++ b/src/mc_control/MCController.cpp @@ -737,9 +737,11 @@ void MCController::reset(const ControllerResetData & reset_data) updateContacts(); if(gui_) { + gui_->removeElement({"Contacts"}, "Contacts"); gui_->addElement({"Contacts"}, mc_rtc::gui::Table("Contacts", {"R1", "S1", "R2", "S2", "DoF", "Friction"}, [this]() -> const std::vector & { return contacts_table_; })); + gui_->removeElement({"Contacts", "Add"}, "Add contact"); gui_->addElement({"Contacts", "Add"}, mc_rtc::gui::Form( "Add contact", @@ -760,7 +762,8 @@ void MCController::reset(const ControllerResetData & reset_data) mc_rtc::gui::FormNumberInput("Friction", false, mc_rbdyn::Contact::defaultFriction), mc_rtc::gui::FormArrayInput("dof", false, Eigen::Vector6d::Ones()))); } - logger().addLogEntry("perf_UpdateContacts", [this]() { return updateContacts_dt_.count(); }); + logger().addLogEntry( + "perf_UpdateContacts", [this]() { return updateContacts_dt_.count(); }, true); } void MCController::updateContacts() diff --git a/src/mc_control/mc_global_controller.cpp b/src/mc_control/mc_global_controller.cpp index e6e2c37ea0..1260e2068f 100644 --- a/src/mc_control/mc_global_controller.cpp +++ b/src/mc_control/mc_global_controller.cpp @@ -1029,7 +1029,8 @@ bool MCGlobalController::GoToHalfSitPose() void MCGlobalController::start_log() { - controller_->logger().start(current_ctrl, controller_->timeStep); + controller_->logger().start(current_ctrl, controller_->timeStep, + setup_logger_.find(current_ctrl) != setup_logger_.end()); setup_log(); if(server_) { server_->set_logger(controller_->logger_); } } diff --git a/src/mc_rtc/Logger.cpp b/src/mc_rtc/Logger.cpp index 11d32ea9ef..1ae5e29edc 100644 --- a/src/mc_rtc/Logger.cpp +++ b/src/mc_rtc/Logger.cpp @@ -213,7 +213,8 @@ void Logger::start(const std::string & ctl_name, double timestep, bool resume, d { if(resume) { - // Repeat the added key events + // Re-create key events based on the current set of entries + log_events_.clear(); for(const auto & e : log_entries_) { log_events_.push_back(KeyAddedEvent{e.type, e.key}); } } else { impl_->log_iter_ = start_t; }