Add Settings with fullscreen and windowed options, a config file

(settings.toml) to persist settings, fix a bug in platform code where
innner window size wasn't updated on resize, various other tweaks
This commit is contained in:
reo 2025-12-09 17:52:17 +03:00
parent b17a7636d8
commit f5a16213fa
10 changed files with 277 additions and 19 deletions

View file

@ -7,7 +7,9 @@ use rapier3d::prelude::ColliderBuilder;
use winit::event::{Event, WindowEvent};
use systems::debug_camera::FPSDebugCameraSystem;
use crate::systems::common::should_draw_menu;
use crate::systems::{KeybindsSystem, KinematicCharacterController, MenuSystem, PhysicsSystem};
use crate::systems::{
DisplaySettings, KeybindsSystem, KinematicCharacterController, MenuSystem, PhysicsSystem
};
const TEST_GLTF: &str = "sphere.glb";
const PLANE_GLTF: &str = "plane.glb";
@ -97,23 +99,21 @@ impl System for MainSystem {
InputState,
)>().unwrap();
if should_draw_menu(scene) {
let mut egui_queue = pctx.egui_queue.borrow_mut();
let time_ctx = pctx.time_ctx.clone();
let mut character_pos = Vec3::ZERO;
for (_ent, (tr, ch_component)) in scene.world.query::<(&Transform, &CharacterBodyComponent)>().iter() {
character_pos = tr.translation;
}
egui_queue.queue(move |egui_ctx| {
egui::Window::new("Debug").show(egui_ctx, |ui| {
ui.label("Hello World!");
ui.label(format!("Frame Delta: {}", time_ctx.frame_dt));
ui.label(format!("Fixed Delta: {}", time_ctx.fixed_dt));
ui.label(format!("FPS: {}", 1.0 / time_ctx.frame_dt));
ui.label(format!("Character POS: {}", character_pos));
});
});
let mut egui_queue = pctx.egui_queue.borrow_mut();
let time_ctx = pctx.time_ctx.clone();
let mut character_pos = Vec3::ZERO;
for (_ent, (tr, ch_component)) in scene.world.query::<(&Transform, &CharacterBodyComponent)>().iter() {
character_pos = tr.translation;
}
egui_queue.queue(move |egui_ctx| {
egui::Window::new("Debug").show(egui_ctx, |ui| {
ui.label("Hello World!");
ui.label(format!("Frame Delta: {:.3}", time_ctx.frame_dt));
ui.label(format!("Fixed Delta: {:.3}", time_ctx.fixed_dt));
ui.label(format!("FPS: {:.3}", 1.0 / time_ctx.frame_dt));
ui.label(format!("Character POS: {character_pos:.3}"));
});
});
}
}
@ -124,6 +124,7 @@ fn main() {
.add_system::<KinematicCharacterController>()
.add_system::<FPSDebugCameraSystem>()
.add_system::<MenuSystem>()
.add_system::<DisplaySettings>()
.add_system::<MainSystem>()
.add_system::<UpdateAspectRatioSystem>()
.add_scene(MAIN_SCENE_ID, Scene::new(MAIN_SCENE_ID.to_owned(), None))