X-Git-Url: https://codewiz.org/gitweb?p=mandelwow.git;a=blobdiff_plain;f=main.rs;h=0cf1c18fce7db7f1a671c833373152252e9af75a;hp=2bdcae815801a7a1958ed770f282be4e593c4d00;hb=1124a995ef96469daf8593cb7fe9a17ee11bac2e;hpb=29b275596efed3b3064072483aa6d8c4cba1e3d4 diff --git a/main.rs b/main.rs index 2bdcae8..0cf1c18 100644 --- a/main.rs +++ b/main.rs @@ -1,12 +1,12 @@ use cgmath::conv::array4x4; use cgmath::{Euler, Matrix4, Rad, SquareMatrix, Vector3, Vector4, Zero}; use glium::glutin::event::{ self, Event, VirtualKeyCode, WindowEvent }; -use glium::glutin::event_loop::{ ControlFlow }; +use glium::glutin::event_loop::ControlFlow; use glium::{Display, Program, Surface, uniform}; +use instant::Duration; use mandelwow_lib::*; use std::f32::consts::PI; use std::rc::Rc; -use std::time::{Duration, Instant}; #[cfg(target_os = "emscripten")] use std::os::raw::{c_int, c_void}; @@ -72,6 +72,7 @@ impl World { println!("xstep={} ystep={:?}", sea_xstep, sea_zstep); let mut sea = [[Vector3::zero(); SEA_ZSIZE]; SEA_XSIZE]; + #[allow(clippy::needless_range_loop)] for x in 0..SEA_XSIZE { for z in 0..SEA_ZSIZE { sea[x][z] = Vector3 { @@ -85,11 +86,11 @@ impl World { World { mandelwow_program, mandelwow_bbox: BoundingBox::new( - display, &mandelwow_bounds, bounding_box_program.clone()), + display, &mandelwow_bounds, bounding_box_program), mandelwow_bounds, bounding_box_enabled: true, - shaded_cube: ShadedCube::new(display, shaded_program.clone()), + shaded_cube: ShadedCube::new(display, shaded_program), text: text::Text::new(display), sea, @@ -248,7 +249,7 @@ fn main() { emscripten_GetProcAddress(addr.into_raw() as *const _) as *const _ }); gl.glGetInternalformativ(0, 0, 0, 0, 0); -*/ + */ let mut soundplayer = sound::start(); @@ -273,7 +274,7 @@ fn main() { let mut timer = Timer::new(); let mut camera = support::camera::CameraState::new(); - let mut fullscreen = true; + let mut fullscreen = false; event_loop.run(move |event, _, control_flow| { let t = timer.t; @@ -285,12 +286,16 @@ fn main() { camera.update(); - *control_flow = ControlFlow::WaitUntil(Instant::now() + Duration::from_nanos(16_666_667)); + *control_flow = ControlFlow::WaitUntil(timer.now + Duration::from_nanos(16_666_667)); match event { + Event::MainEventsCleared => { + timer.update(); + world.draw_frame(&display, &camera, t); + } Event::NewEvents(cause) => { match cause { event::StartCause::ResumeTimeReached { .. } | event::StartCause::Init => { - world.draw_frame(&display, &camera, t); + // FIXME }, _ => {} } @@ -310,13 +315,13 @@ fn main() { VirtualKeyCode::P => timer.pause ^= true, VirtualKeyCode::PageUp => timer.t += 0.1, VirtualKeyCode::PageDown => timer.t -= 0.2, - VirtualKeyCode::F10 => screenshot(&display), + VirtualKeyCode::F10 => screenshot::take_screenshot(&display), VirtualKeyCode::F11 | VirtualKeyCode::Return => { fullscreen ^= true; let fs = if fullscreen { - let monitor_handle = display.gl_window().window() - .available_monitors().next().unwrap(); - Some(glium::glutin::window::Fullscreen::Borderless(monitor_handle)) + // let monitor_handle = display.gl_window().window() + // .available_monitors().next().unwrap(); + Some(glium::glutin::window::Fullscreen::Borderless(None)) } else { None }; @@ -332,7 +337,5 @@ fn main() { }, _ => (), } - - timer.update(); }); }