From f963857665e23f741bba435f733b47f05cda237f Mon Sep 17 00:00:00 2001 From: TerraMaster85 Date: Wed, 12 Apr 2023 22:59:53 -0400 Subject: [PATCH] new rendering paradigm & de-fuck rotation --- client/src/rendering/renderer.rs | 44 ++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/client/src/rendering/renderer.rs b/client/src/rendering/renderer.rs index b92817b085992847d05f7bb19444b24ddba5a6ee..c85395ac2c83d4f19909df3da7d4d574c1d2f1e1 100644 --- a/client/src/rendering/renderer.rs +++ b/client/src/rendering/renderer.rs @@ -35,45 +35,57 @@ impl Renderer for WebRenderer { } let client_data = client.client_data.as_ref().unwrap(); - 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 viewer_size_x = typed_canvas_element.width() as f64; + //let camera_translate_y = -client.y + (typed_canvas_element.height() / 2) as f64; + let viewer_size_y = 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.set_transform(1f64, 0f64, 0f64, 1f64, 0f64, 0f64).map_err(|e: JsValue| e.as_string().unwrap())?; + context.clear_rect(0f64, 0f64, viewer_size_x, viewer_size_y); - context.translate(camera_translate_x, camera_translate_y).map_err(|e: JsValue| e.as_string().unwrap())?; + // *dont* translate the camera. we're movign everything else around us. cameracentrism. + // only translation will be to center our core module. + //context.translate(camera_translate_x, camera_translate_y).map_err(|e: JsValue| e.as_string().unwrap())?; + context.translate(viewer_size_x / 2.0, viewer_size_y / 2.0).map_err(|e: JsValue| e.as_string().unwrap())?; for planet in &client.planets { - context.save(); + //context.save(); - context.set_transform(1f64, 0f64, 0f64, 1f64, 0f64, 0f64).map_err(|e: JsValue| e.as_string().unwrap())?; - context.translate(-planet.x, -planet.y).map_err(|e: JsValue| e.as_string().unwrap())?; + //context.set_transform(1f64, 0f64, 0f64, 1f64, 0f64, 0f64).map_err(|e: JsValue| e.as_string().unwrap())?; + //context.translate(-planet.x, -planet.y).map_err(|e: JsValue| e.as_string().unwrap())?; let texture_image = document.get_element_by_id(&format!("tex-{}", planet.planet_type.as_texture_id())).unwrap().dyn_into::().unwrap(); - context.draw_image_with_html_image_element_and_dw_and_dh(&texture_image, -planet.radius, -planet.radius, planet.radius * 2f64, planet.radius * 2f64).map_err(|e: JsValue| e.as_string().unwrap())?; + // pos: + //debug!("P {} {}", planet.x - planet.radius - client.x, planet.y - planet.radius - client.y); + debug!("P {} {}", planet.x - planet.radius - /*client.x*/0f64, planet.y - planet.radius - /*client.y*/100f64); + context.draw_image_with_html_image_element_and_dw_and_dh(&texture_image, planet.x - planet.radius - /*client.x*/0f64, planet.y - planet.radius - /*client.y*/100f64, planet.radius * 2f64, planet.radius * 2f64).map_err(|e: JsValue| e.as_string().unwrap())?; - context.restore(); + //context.restore(); } for player in &client.players { context.save(); - context.translate(player.x, player.y).map_err(|e: JsValue| e.as_string().unwrap())?; + //context.translate(player.x, player.y).map_err(|e: JsValue| e.as_string().unwrap())?; context.set_text_align("center"); context.set_font("30px Segoe UI"); - context.set_fill_style(&JsValue::from_str("white")); - + context.set_fill_style(&JsValue::from_str("white")); // CssStyleColor context.fill_text(&player.username, 0f64, -35f64).map_err(|e: JsValue| e.as_string().unwrap())?; - context.rotate(player.rotation).map_err(|e: JsValue| e.as_string().unwrap())?; + context.rotate(player.rotation).map_err(|e: JsValue| e.as_string().unwrap())?; // fwip let texture_image = document.get_element_by_id("tex-hearty").unwrap().dyn_into::().unwrap(); - context.draw_image_with_html_image_element_and_dw_and_dh(&texture_image, -25f64, -25f64, 50f64, 50f64).map_err(|e: JsValue| e.as_string().unwrap())?; + debug!("H {} {}", player.x - 25f64 - client.x, player.y - 25f64 - client.y); + context.draw_image_with_html_image_element_and_dw_and_dh(&texture_image, player.x - 25f64 - client.x, player.y - 25f64 - client.y, 50f64, 50f64).map_err(|e: JsValue| e.as_string().unwrap())?; // sktch + + //context.rotate(-player.rotation).map_err(|e: JsValue| e.as_string().unwrap())?; // fwoop context.restore(); } + context.scale(0.25f64, 0.25f64).map_err(|e: JsValue| e.as_string().unwrap())?; + // do not remove // im making this smiley an easter egg soon // i just have to go fix the broken build system first @@ -105,4 +117,4 @@ impl Renderer for WebRenderer { */ Ok(()) } -} \ No newline at end of file +}