Replace functionally opaque Viscous Pause with functionally transparent "Viscous posing mode" toggle.

PiperOrigin-RevId: 946298154
Change-Id: Ia06dd6346ac1002000f2d0b1cf9498ffb0d5f8bd
This commit is contained in:
Google DeepMind
2026-07-11 13:47:08 -07:00
committed by Copybara-Service
parent 94132c75c7
commit fbf031a7d5
6 changed files with 63 additions and 33 deletions
+3 -1
View File
@@ -32,12 +32,14 @@ PYBIND11_MODULE(sim, m, pybind11::mod_gil_not_used()) {
py::enum_<StepControl::Status>(m, "StepStatus")
.value("OK", StepControl::Status::kOk)
.value("PAUSED", StepControl::Status::kPaused)
.value("VISCOUS_PAUSED", StepControl::Status::kViscousPaused)
.value("AUTO_RESET", StepControl::Status::kAutoReset)
.value("DIVERGED", StepControl::Status::kDiverged);
py::enum_<StepControl::PauseState>(m, "PauseState")
.value("UNPAUSED", StepControl::PauseState::kUnpaused)
.value("NORMAL_PAUSED", StepControl::PauseState::kNormalPaused);
.value("NORMAL_PAUSED", StepControl::PauseState::kNormalPaused)
.value("VISCOUS_PAUSED", StepControl::PauseState::kViscousPaused);
py::class_<StepControl>(m, "StepControl")
.def(py::init<>())
@@ -157,8 +157,15 @@ def handle_step_control_keyboard_events(
pressed = imgui.IsKeyChordPressed
if pressed(imgui.Key.Space):
if step_control.get_pause_state() == sim.PauseState.UNPAUSED:
if pressed(int(imgui.Key.Ctrl) | int(imgui.Key.Space)):
if step_control.get_pause_state() == sim.PauseState.VISCOUS_PAUSED:
step_control.set_pause_state(sim.PauseState.UNPAUSED)
else:
step_control.set_pause_state(sim.PauseState.VISCOUS_PAUSED)
return True
elif pressed(imgui.Key.Space):
pause = step_control.get_pause_state()
if pause in (sim.PauseState.VISCOUS_PAUSED, sim.PauseState.UNPAUSED):
step_control.set_pause_state(sim.PauseState.NORMAL_PAUSED)
else:
step_control.set_pause_state(sim.PauseState.UNPAUSED)