diff options
Diffstat (limited to 'src/state.rs')
| -rw-r--r-- | src/state.rs | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/src/state.rs b/src/state.rs index 4adb952..f5435f5 100644 --- a/src/state.rs +++ b/src/state.rs @@ -10,49 +10,27 @@ use crate::point::Point; pub const TAU: f64 = PI * 2.0; pub const MAX_SPEED: f64 = 0.01; -const NUM_POINTS: usize = 40; +const NUM_POINTS: usize = 10; const VELVEC_SCALE: f64 = 3.0; -fn window() -> web_sys::Window { - web_sys::window().expect("no window") -} - -fn document() -> web_sys::Document { - window().document().expect("no document") -} - -fn canvas() -> Result<web_sys::HtmlCanvasElement, JsValue> { - let x = document() - .query_selector("canvas")? - .expect("canvas element"); - Ok(x.dyn_into::<web_sys::HtmlCanvasElement>()?) -} - #[derive(Debug)] pub struct State { canvas: HtmlCanvasElement, ctx: CanvasRenderingContext2d, fps: HtmlElement, points: Vec<Point>, - pub paused: bool, last_time: Option<f64>, inter_count: u16, } impl State { - pub fn new() -> Result<Self, JsValue> { + pub fn new(canvas: HtmlCanvasElement, fps: HtmlElement) -> Result<Self, JsValue> { debug!("State::new()"); - let canvas = canvas()?; let ctx: CanvasRenderingContext2d = canvas .get_context("2d")? .expect("2d context on canvas") .dyn_into()?; ctx.scale(canvas.width().into(), canvas.height().into())?; - let fps = document() - .query_selector("#fps")? - .expect("fps counter exists") - .dyn_into::<HtmlElement>() - .expect("is html element"); let points = (0..NUM_POINTS) .map(|_| Point::new(fastrand::f64(), fastrand::f64())) @@ -63,8 +41,7 @@ impl State { ctx, fps, points, - paused: false, - last_time: document().timeline().current_time(), + last_time: None, inter_count: 1, }) } @@ -75,12 +52,12 @@ impl State { let ic: f64 = self.inter_count.into(); let val: f64 = (1_000.0 * ic / (t - last_time)).trunc(); self.fps.set_text_content(Some(val.to_string().as_str())); - self.last_time = Some(t); self.inter_count = 1; } else { self.inter_count += 1; } } + self.last_time = Some(t); self.ctx.clear_rect( 0.0, |
