Add global update loop, and cleanup

This commit is contained in:
2026-05-21 09:43:13 +01:00
parent 72304ee925
commit e1d18743b5
4 changed files with 53 additions and 15 deletions
+10 -3
View File
@@ -169,10 +169,9 @@ struct Scene {
}
}
void update_scene(uint64_t delta_time) {
void update_scene(mrb_value dt_val) {
if (mrb_nil_p(update.proc))
return;
mrb_value dt_val = mrb_float_value(Ruby::mrb, delta_time / 1e9);
update.call(1, &dt_val);
}
@@ -200,6 +199,8 @@ struct Scene {
} else if (e->click_mode == ClickMode::BLOCK) {
result.push_back(*it);
break;
} else {
continue;
}
}
}
@@ -240,6 +241,7 @@ struct App {
std::vector<Key> released_keys;
Vec2<float> scroll = {0, 0};
std::string text = "";
Ruby::Block update;
void exit() {
running = false;
@@ -335,7 +337,12 @@ struct App {
}
}
scene->update_scene(dt);
int ai = mrb_gc_arena_save(Ruby::mrb);
mrb_value dt_val = mrb_float_value(Ruby::mrb, dt / 1e9);
update.call(1, &dt_val);
scene->update_scene(dt_val);
mrb_gc_arena_restore(Ruby::mrb, ai);
scene->render(window, window.get_time());
window.render();