diff options
Diffstat (limited to 'light-client/src/render')
-rw-r--r-- | light-client/src/render/mod.rs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/light-client/src/render/mod.rs b/light-client/src/render/mod.rs index a410da6f..a2aea365 100644 --- a/light-client/src/render/mod.rs +++ b/light-client/src/render/mod.rs @@ -31,6 +31,7 @@ use std::collections::HashMap; pub struct SpriteRenderer<'a> { metadata: AtlasLayout, + pub size: Vec2, texture: Texture<'a>, view_scale: Vec2, @@ -103,13 +104,22 @@ impl<'a> SpriteRenderer<'a> { Self { texture, + size: Vec2::ONE, metadata, sprites: vec![], view_offset: Vec2::ZERO, - view_scale: Vec2::splat(3.), + view_scale: Vec2::ZERO, } } + pub fn set_view(&mut self, offset: Vec2, scale: f32) { + self.view_offset = offset; + self.view_scale = Vec2::new(32., 24.) * scale; + } + pub fn get_scale(&self) -> Vec2 { + self.view_scale + } + #[inline] pub fn atlas_layout(&self) -> &HashMap<String, Rect> { &self.metadata @@ -129,10 +139,10 @@ impl<'a> SpriteRenderer<'a> { z_order: sprite.z_order, src: sprite.src, dst: FRect::new( - ((sprite.dst.x + self.view_offset.x) * 32.).round() * self.view_scale.x, - ((sprite.dst.y + self.view_offset.y) * 24.).round() * self.view_scale.y, - (sprite.dst.w * 32.).round() * self.view_scale.x, - (sprite.dst.h * 24.).round() * self.view_scale.y, + ((sprite.dst.x + self.view_offset.x) * self.view_scale.x).round(), + ((sprite.dst.y + self.view_offset.y) * self.view_scale.y).round(), + (sprite.dst.w * self.view_scale.x).round(), + (sprite.dst.h * self.view_scale.y).round(), ), }) } |