feat(topola-egui): Replace "update timestep" with "step rate"

The term "timestep" is usually used to refer to a time step on some
internal simulation time scale that is separate from the real time.
There is however no time scale other than real time in Topola.
This commit is contained in:
Mikolaj Wielgus 2025-10-30 05:18:05 +01:00
parent c163980073
commit 55ed4bf4cc
4 changed files with 19 additions and 21 deletions

View File

@ -41,7 +41,7 @@ pub struct MenuBar {
pub show_primitive_indices: bool, pub show_primitive_indices: bool,
pub show_appearance_panel: bool, pub show_appearance_panel: bool,
pub fix_step_rate: bool, pub fix_step_rate: bool,
pub update_timestep: f32, pub step_rate: f32,
} }
impl MenuBar { impl MenuBar {
@ -76,7 +76,7 @@ impl MenuBar {
show_primitive_indices: false, show_primitive_indices: false,
show_appearance_panel: true, show_appearance_panel: true,
fix_step_rate: false, fix_step_rate: false,
update_timestep: 0.25, step_rate: 1.0,
} }
} }
@ -170,10 +170,13 @@ impl MenuBar {
actions.debug.render_menu(ctx, ui, self); actions.debug.render_menu(ctx, ui, self);
ui.add_enabled_ui(self.fix_step_rate, |ui| { ui.add_enabled_ui(self.fix_step_rate, |ui| {
ui.label(tr.text("tr-menu-debug-update-timestep")); ui.label(tr.text("tr-menu-debug-step-rate"));
ui.add( ui.add(
egui::widgets::Slider::new(&mut self.update_timestep, 0.01..=3.0) egui::widgets::Slider::new(&mut self.step_rate, 100.0..=0.1)
.suffix(" s"), .suffix(format!(
" {}",
tr.text("tr-menu-debug-step-rate-unit")
)),
); );
}); });
}); });

View File

@ -69,7 +69,7 @@ impl Viewport {
workspace.advance_state_by_dt( workspace.advance_state_by_dt(
tr, tr,
error_dialog, error_dialog,
menu_bar.fix_step_rate.then_some(menu_bar.update_timestep), menu_bar.fix_step_rate.then_some(menu_bar.step_rate),
&interactive_input, &interactive_input,
); );

View File

@ -76,20 +76,18 @@ impl Workspace {
&mut self, &mut self,
tr: &Translator, tr: &Translator,
error_dialog: &mut ErrorDialog, error_dialog: &mut ErrorDialog,
maybe_update_timestep: Option<f32>, maybe_step_rate: Option<f32>,
interactive_input: &InteractiveInput, interactive_input: &InteractiveInput,
) -> bool { ) -> bool {
let instant = Instant::now(); let instant = Instant::now();
if maybe_update_timestep.is_some() { if maybe_step_rate.is_some() {
self.update_counter += interactive_input.dt; self.update_counter += interactive_input.dt;
} }
while maybe_update_timestep while maybe_step_rate.is_none_or(|step_rate| self.update_counter >= 1.0 / step_rate) {
.is_none_or(|update_timestep| self.update_counter >= update_timestep) if let Some(step_rate) = maybe_step_rate {
{ self.update_counter -= 1.0 / step_rate;
if let Some(update_timestep) = maybe_update_timestep {
self.update_counter -= update_timestep;
} }
if let ControlFlow::Break(()) = self.update_state(tr, error_dialog, interactive_input) { if let ControlFlow::Break(()) = self.update_state(tr, error_dialog, interactive_input) {

View File

@ -47,7 +47,8 @@ tr-menu-debug-show-topo-navmesh = Show Topological Navmesh
tr-menu-debug-show-bboxes = Show BBoxes tr-menu-debug-show-bboxes = Show BBoxes
tr-menu-debug-show-primitive-indices = Show Primitive Indices tr-menu-debug-show-primitive-indices = Show Primitive Indices
tr-menu-debug-fix-step-rate = Fix Step Rate tr-menu-debug-fix-step-rate = Fix Step Rate
tr-menu-debug-update-timestep = Update Timestep tr-menu-debug-step-rate = Step Rate
tr-menu-debug-step-rate-unit = steps/s
tr-menu-help = Help tr-menu-help = Help
tr-menu-help-online-documentation = Online Documentation tr-menu-help-online-documentation = Online Documentation
@ -61,9 +62,9 @@ tr-menu-route-options-presort-by-pairwise-detours = Pairwise Detours
tr-menu-route-options-permutate = Permutate tr-menu-route-options-permutate = Permutate
## Continuously applied, so use frequentative or imperfective aspect if ## This refers to behavior that is continuously applied, so use frequentative or
## possible, e.g. in Polish it should be "przeciskaj pod taśmami" (imperfective) ## imperfective aspect if possible, e.g. in Polish it should be "przeciskaj pod
## instead of "przeciśnij pod taśmami". ## taśmami" (imperfective) instead of "przeciśnij pod taśmami".
tr-menu-route-options-squeeze-through-under-bends = Squeeze through under Bends tr-menu-route-options-squeeze-through-under-bends = Squeeze through under Bends
tr-menu-route-options-wrap-around-bands = Wrap around Bands tr-menu-route-options-wrap-around-bands = Wrap around Bands
@ -71,10 +72,6 @@ tr-menu-route-options-wrap-around-bands = Wrap around Bands
## ##
tr-menu-inspect = Inspect tr-menu-inspect = Inspect
# Unused.
tr-menu-inspect-compare-detours = Compare Detours
tr-menu-inspect-measure-length = Measure Length tr-menu-inspect-measure-length = Measure Length
tr-menu-preferences = Preferences tr-menu-preferences = Preferences