From 49bfe7902cb058a6ecf20bfa8199ca93a8af669b Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Tue, 2 Jun 2026 00:59:58 -0400 Subject: Update --- crates/teleia/src/audio.rs | 2 -- crates/teleia/src/renderer.rs | 26 +++++++++++++++++++++++++- crates/teleia/src/shader.rs | 4 ++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/crates/teleia/src/audio.rs b/crates/teleia/src/audio.rs index 000e696..754cb7e 100644 --- a/crates/teleia/src/audio.rs +++ b/crates/teleia/src/audio.rs @@ -226,9 +226,7 @@ pub struct Assets { impl Assets { pub fn new(f : F) -> Self where F: Fn(&Context) -> HashMap { let ctx = Context::new(); - let audio = f(&ctx); - Self { ctx, audio, diff --git a/crates/teleia/src/renderer.rs b/crates/teleia/src/renderer.rs index 27ffbb6..0a16d36 100644 --- a/crates/teleia/src/renderer.rs +++ b/crates/teleia/src/renderer.rs @@ -168,6 +168,18 @@ impl Renderer { pub fn render_square(&self, ctx: &context::Context, st: &state::State) { st.mesh_square.render(ctx) } + pub fn set_position_2d_mat(&self, ctx: &context::Context, st: &state::State, pos: glam::Mat4) { + if let Some((s, sm)) = self.shader() { + debug_assert!(sm == ShaderMode::TwoDimension, "attempted to set_position_2d in wrong mode"); + s.set_position_2d_mat(ctx, st, &pos); + } + } + pub fn set_position_2d_rotate(&self, ctx: &context::Context, st: &state::State, pos: glam::Vec2, dims: glam::Vec2, rot: glam::Quat) { + if let Some((s, sm)) = self.shader() { + debug_assert!(sm == ShaderMode::TwoDimension, "attempted to set_position_2d in wrong mode"); + s.set_position_2d_helper(ctx, st, &pos, &dims, &rot) + } + } pub fn set_position_2d(&self, ctx: &context::Context, st: &state::State, pos: glam::Vec2, dims: glam::Vec2) { if let Some((s, sm)) = self.shader() { debug_assert!(sm == ShaderMode::TwoDimension, "attempted to set_position_2d in wrong mode"); @@ -242,7 +254,6 @@ impl Renderer { /// Common case: draw the given texture on the screen (units are pixels, pos is top left) pub fn texture_screen(&mut self, - ctx: &context::Context, st: &mut state::State, texture: A::Texture, pos: glam::Vec2, @@ -254,6 +265,19 @@ impl Renderer { self.render_square(ctx, st); } + pub fn texture_screen_rotate(&mut self, + ctx: &context::Context, st: &mut state::State, + texture: A::Texture, + pos: glam::Vec2, + dims: glam::Vec2, + rot: glam::Quat, + ) { + self.bind_uber_2d(ctx, st, UberFlags::TEXTURE_COLOR); + self.bind_texture(ctx, st, texture); + self.set_position_2d_rotate(ctx, st, pos, dims, rot); + self.render_square(ctx, st); + } + pub fn texture_screen_recolor(&mut self, ctx: &context::Context, st: &mut state::State, texture: A::Texture, hue: f32, diff --git a/crates/teleia/src/shader.rs b/crates/teleia/src/shader.rs index 857e8d0..6248658 100644 --- a/crates/teleia/src/shader.rs +++ b/crates/teleia/src/shader.rs @@ -218,6 +218,10 @@ impl Shader { self.set_mat4(ctx, "normal_matrix", &position.inverse().transpose()); } + pub fn set_position_2d_mat(&self, ctx: &context::Context, st: &state::State, position: &glam::Mat4) { + self.set_mat4(ctx, "position", position); + } + pub fn set_position_2d_helper(&self, ctx: &context::Context, st: &state::State, pos: &glam::Vec2, dims: &glam::Vec2, rot: &glam::Quat) { let halfwidth = dims.x / 2.0; let halfheight = dims.y / 2.0; -- cgit v1.2.3