From a23bde6f4e5434609fad769eeec636c4601eff5c Mon Sep 17 00:00:00 2001 From: core Date: Tue, 11 Apr 2023 21:56:40 -0400 Subject: [PATCH] [WIP! VERY WIP! SUPER WIP!] start working on rendering code --- client/src/rendering/renderer.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/client/src/rendering/renderer.rs b/client/src/rendering/renderer.rs index 275ced27a39e4627fb3b37c941d5016ee6af2867..6a1cad752eae926ed174a25a3746b8e560b5f222 100644 --- a/client/src/rendering/renderer.rs +++ b/client/src/rendering/renderer.rs @@ -2,7 +2,7 @@ use std::error::Error; use async_trait::async_trait; use web_sys::{CanvasRenderingContext2d, HtmlCanvasElement}; use crate::rendering::Renderer; -use wasm_bindgen::JsCast; +use wasm_bindgen::{JsCast, JsValue}; use crate::CLIENT; #[derive(Debug)] @@ -25,8 +25,17 @@ impl Renderer for WebRenderer { let document = window.document().ok_or("window.document needs to exist")?; let canvas_element = document.get_element_by_id(&self.canvas_element_id).ok_or("canvas element does not exist")?; let typed_canvas_element: HtmlCanvasElement = canvas_element.dyn_into::().map_err(|_| ()).unwrap(); - let _context = typed_canvas_element.get_context("2d").unwrap().unwrap().dyn_into::().unwrap(); - let _client = CLIENT.read()?; + let context = typed_canvas_element.get_context("2d").unwrap().unwrap().dyn_into::().unwrap(); + let client = CLIENT.read()?; + + context.set_transform(1f64, 0f64, 0f64, 1f64, 0f64, 0f64).map_err(|e: JsValue| e.as_string().unwrap())?; + context.clear_rect(0f64, 0f64, typed_canvas_element.width() as f64, typed_canvas_element.height() as f64); + + let camera_translate_x = -client.x + (typed_canvas_element.width() / 2) as f64; + let camera_translate_y = -client.y + (typed_canvas_element.height() / 2) as f64; + + context.translate(camera_translate_x, camera_translate_y).map_err(|e: JsValue| e.as_string().unwrap())?; + Ok(()) } } \ No newline at end of file