aboutsummaryrefslogtreecommitdiff
path: root/light-client/src/render/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'light-client/src/render/mod.rs')
-rw-r--r--light-client/src/render/mod.rs20
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(),
),
})
}