pyqie_platform/
platform.rs

1use std::ptr::{null_mut};
2
3use std::time::SystemTime;
4use core::time::Duration;
5use std::thread;
6
7pub struct Platform {
8}
9
10static mut PLATFORM: *mut Platform = null_mut();
11
12pub fn platform() -> &'static mut Platform {
13    unsafe { &mut *PLATFORM }
14}
15
16pub fn init<'a, F: FnOnce(u32, u32) -> (&'a str, u32, u32)>(window_params: F) {
17    
18}
19
20#[allow(unused_mut)]
21pub fn run<F: FnMut()>(mut main_loop: F) {
22    loop {
23        let start_ms = elapsed_time() as f64;
24        main_loop();
25        let elapsed_ms = elapsed_time() as f64 - start_ms;
26        let wait_ms = 1000.0 / 60.0 - elapsed_ms;
27        if wait_ms > 0.0 {
28            sleep((wait_ms / 2.0) as u32);
29        }
30    }
31}
32
33pub fn quit() {
34    std::process::exit(0);
35}
36
37pub fn elapsed_time() -> u32 {
38    let now = SystemTime::now();
39    let since_epoch = now.duration_since(SystemTime::UNIX_EPOCH).unwrap();
40    let timestamp: u32 = since_epoch.as_secs() as u32;
41    return timestamp;
42}
43
44pub fn sleep(ms: u32) {
45    let duration = Duration::from_millis(ms as u64);
46    thread::sleep(duration);
47}