Add time as input to emigui to enable animations

This commit is contained in:
Emil Ernerfeldt 2020-04-21 14:46:42 +02:00
parent 11cd1bdca3
commit 0ed578341b
4 changed files with 18 additions and 0 deletions

View file

@ -81,6 +81,7 @@
mouse_pos: g_mouse_pos, mouse_pos: g_mouse_pos,
screen_size: { x: window.innerWidth, y: window.innerHeight }, screen_size: { x: window.innerWidth, y: window.innerHeight },
pixels_per_point: pixels_per_point(), pixels_per_point: pixels_per_point(),
time: window.performance.now() / 1000.0,
}; };
} }

View file

@ -26,6 +26,10 @@ pub struct Style {
/// For stuff like check marks in check boxes. /// For stuff like check marks in check boxes.
pub line_width: f32, pub line_width: f32,
// TODO: add ability to disable animations!
/// How many seconds a typical animation should last
pub animation_time: f32,
pub window: Window, pub window: Window,
} }
@ -44,6 +48,7 @@ impl Default for Style {
clickable_diameter: 34.0, clickable_diameter: 34.0,
start_icon_width: 20.0, start_icon_width: 20.0,
line_width: 1.0, line_width: 1.0,
animation_time: 1.0 / 20.0,
window: Window::default(), window: Window::default(),
} }
} }

View file

@ -21,6 +21,9 @@ pub struct RawInput {
/// Also known as device pixel ratio, > 1 for HDPI screens. /// Also known as device pixel ratio, > 1 for HDPI screens.
pub pixels_per_point: f32, pub pixels_per_point: f32,
/// Time in seconds. Relative to whatever. Used for animation.
pub time: f64,
} }
/// What the gui maintains /// What the gui maintains
@ -46,6 +49,9 @@ pub struct GuiInput {
/// Also known as device pixel ratio, > 1 for HDPI screens. /// Also known as device pixel ratio, > 1 for HDPI screens.
pub pixels_per_point: f32, pub pixels_per_point: f32,
/// Time in seconds. Relative to whatever. Used for animation.
pub time: f64,
} }
impl GuiInput { impl GuiInput {
@ -62,6 +68,7 @@ impl GuiInput {
mouse_move, mouse_move,
screen_size: new.screen_size, screen_size: new.screen_size,
pixels_per_point: new.pixels_per_point, pixels_per_point: new.pixels_per_point,
time: new.time,
} }
} }
} }

View file

@ -36,6 +36,9 @@ fn main() {
let mut quit = false; let mut quit = false;
// used to keep track of time for animations
let start_time = Instant::now();
let mut frame_start = Instant::now(); let mut frame_start = Instant::now();
let mut example_app = ExampleApp::default(); let mut example_app = ExampleApp::default();
@ -50,6 +53,8 @@ fn main() {
frame_start = Instant::now(); frame_start = Instant::now();
} }
raw_input.time = start_time.elapsed().as_nanos() as f64 * 1e-9;
events_loop.poll_events(|event| { events_loop.poll_events(|event| {
match event { match event {
glutin::Event::WindowEvent { event, .. } => match event { glutin::Event::WindowEvent { event, .. } => match event {