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};
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 {
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,
emscripten_GetProcAddress(addr.into_raw() as *const _) as *const _
});
gl.glGetInternalformativ(0, 0, 0, 0, 0);
-*/
+ */
let mut soundplayer = sound::start();
let event_loop = glutin::event_loop::EventLoop::new();
- //let fullscreen = Some(glutin::window::Fullscreen::Borderless(event_loop.primary_monitor()));
let window = glutin::window::WindowBuilder::new()
//.with_dimensions(1280, 720)
- //.with_fullscreen(fullscreen);
- ;
- //.with_title("MandelWow");
+ .with_title("MandelWow");
let context = glutin::ContextBuilder::new()
//.with_gl_profile(glutin::GlProfile::Core)
//.with_gl(glutin::GlRequest::Specific(glutin::Api::WebGl, (2, 0)))
let mut timer = Timer::new();
let mut camera = support::camera::CameraState::new();
- let _fullscreen = true;
+ let mut fullscreen = false;
event_loop.run(move |event, _, control_flow| {
let t = timer.t;
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
},
_ => {}
}
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;
- if fullscreen {
- // Not implemented on Linux
- glutin::WindowBuilder::new()
- .with_fullscreen(glutin::get_primary_monitor())
- .with_depth_buffer(24) .rebuild_glium(&display).unwrap(); }
- else {
- glutin::WindowBuilder::new()
- .rebuild_glium(&display).unwrap();
- }*/
+ let fs = if fullscreen {
+ // let monitor_handle = display.gl_window().window()
+ // .available_monitors().next().unwrap();
+ Some(glium::glutin::window::Fullscreen::Borderless(None))
+ } else {
+ None
+ };
+ display.gl_window().window().set_fullscreen(fs);
}
_ => (),
}
},
_ => (),
}
-
- timer.update();
});
}