mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 22:53:14 -04:00
example_glium: restore example app state
This commit is contained in:
@@ -14,7 +14,10 @@ struct Window {
|
||||
size: Option<Vec2>,
|
||||
}
|
||||
|
||||
fn read_state(memory_json_path: impl AsRef<std::path::Path>) -> Option<Window> {
|
||||
fn read_json<T>(memory_json_path: impl AsRef<std::path::Path>) -> Option<T>
|
||||
where
|
||||
T: serde::de::DeserializeOwned,
|
||||
{
|
||||
match std::fs::File::open(memory_json_path) {
|
||||
Ok(file) => {
|
||||
let reader = std::io::BufReader::new(file);
|
||||
@@ -37,8 +40,10 @@ fn main() {
|
||||
// TODO: combine
|
||||
let memory_path = "emigui.json";
|
||||
let settings_json_path: &str = "window.json";
|
||||
let app_json_path: &str = "example_app.json";
|
||||
|
||||
let mut window_settings: Window = read_state(settings_json_path).unwrap_or_default();
|
||||
let mut example_app: ExampleApp = read_json(app_json_path).unwrap_or_default();
|
||||
let mut window_settings: Window = read_json(settings_json_path).unwrap_or_default();
|
||||
|
||||
let mut events_loop = glutin::EventsLoop::new();
|
||||
let window = glutin::WindowBuilder::new().with_title("Emigui example");
|
||||
@@ -81,7 +86,6 @@ fn main() {
|
||||
let mut running = true;
|
||||
let mut frame_start = Instant::now();
|
||||
let mut frame_times = emigui::MovementTracker::new(1000, 1.0);
|
||||
let mut example_app = ExampleApp::default();
|
||||
let mut clipboard = emigui_glium::init_clipboard();
|
||||
|
||||
emigui_glium::read_memory(&ctx, memory_path);
|
||||
@@ -157,6 +161,9 @@ fn main() {
|
||||
eprintln!("ERROR: Failed to save emigui state: {}", err);
|
||||
}
|
||||
|
||||
serde_json::to_writer_pretty(std::fs::File::create(app_json_path).unwrap(), &example_app)
|
||||
.unwrap();
|
||||
|
||||
serde_json::to_writer_pretty(
|
||||
std::fs::File::create(settings_json_path).unwrap(),
|
||||
&window_settings,
|
||||
|
||||
Reference in New Issue
Block a user