Add new Center enum for center config
This commit is contained in:
parent
dcb596806c
commit
b327996d89
@ -56,7 +56,7 @@ impl Application<ExampleState> for ExampleApp {
|
||||
fn init(canvas: &mut Canvas) -> Result<ExampleState, &'static str> {
|
||||
use canvas::{
|
||||
utils::Size,
|
||||
sprite::Sprite,
|
||||
sprite::{Sprite, Center},
|
||||
};
|
||||
|
||||
//// 20 x 20 sprite of a picture
|
||||
@ -64,7 +64,7 @@ impl Application<ExampleState> for ExampleApp {
|
||||
.unwrap();
|
||||
let mut tex_sprite = canvas.create_texture_sprite(Size {w: 1280, h: 720});
|
||||
tex_sprite.set_texture(texture.clone(), Some(Position {x: 0, y: 0}), 1.0);
|
||||
tex_sprite.set_center(Position {x:-1280/2, y:-720/2});
|
||||
tex_sprite.set_center(Center::BotLeft);
|
||||
tex_sprite.set_position(Position {x: 0, y: 0});
|
||||
|
||||
let mut sub_sprite = canvas.create_texture_sprite(Size {w: 100, h: 100});
|
||||
@ -74,12 +74,12 @@ impl Application<ExampleState> for ExampleApp {
|
||||
|
||||
let mut sub_sprite2 = canvas.create_texture_sprite(Size {w: 200, h: 200});
|
||||
sub_sprite2.set_texture(texture.clone(), Some(Position {x: 100, y: 0}), 1.0);
|
||||
sub_sprite2.set_center(Position {x:100, y:100});
|
||||
sub_sprite2.set_center(Center::Custom(Position {x:100, y:100}));
|
||||
sub_sprite2.set_rotation(0.0);
|
||||
sub_sprite2.set_position(Position {x: 100, y: 100});
|
||||
|
||||
let mut txt_sprite = canvas.create_text_sprite("00", Size {w: 100, h: 100}, 22.0);
|
||||
txt_sprite.set_center(Position {x:-50, y:50});
|
||||
txt_sprite.set_center(Center::BotLeft);
|
||||
txt_sprite.set_position(Position {x:100, y:100});
|
||||
txt_sprite.set_scale(1.0);
|
||||
|
||||
|
||||
@ -19,6 +19,16 @@ use crate::{
|
||||
|
||||
//--External imports--------------------------------------------------------------------------------
|
||||
|
||||
//--Center enum-------------------------------------------------------------------------------------
|
||||
pub enum Center {
|
||||
Geometric,
|
||||
TopLeft,
|
||||
TopRight,
|
||||
BotLeft,
|
||||
BotRight,
|
||||
Custom(Position),
|
||||
}
|
||||
|
||||
//--Sprite trait------------------------------------------------------------------------------------
|
||||
|
||||
/// The interface for everything that can be rendered by the engine.
|
||||
@ -31,7 +41,7 @@ pub trait Sprite {
|
||||
fn set_position(&mut self, position: Position);
|
||||
|
||||
/// Sets the center of the [`Sprite`] for rotations as well as translations
|
||||
fn set_center(&mut self, center: Position);
|
||||
fn set_center(&mut self, center: Center);
|
||||
|
||||
/// Sets the rotation of the [`Sprite`] on the screen
|
||||
fn set_rotation(&mut self, rotation: f32);
|
||||
|
||||
@ -5,7 +5,7 @@ use log::{debug, error, info, trace, warn};
|
||||
|
||||
use crate::{
|
||||
renderer::WgpuRenderer,
|
||||
sprite::Sprite,
|
||||
sprite::{Sprite, Center},
|
||||
shape::Shape,
|
||||
utils::{Pixel, Position, Size},
|
||||
};
|
||||
@ -39,7 +39,7 @@ impl Sprite for ShapeSprite {
|
||||
todo!();
|
||||
}
|
||||
|
||||
fn set_center(&mut self, _center: Position) {
|
||||
fn set_center(&mut self, _center: Center) {
|
||||
todo!();
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ use log::{debug, error, info, trace, warn};
|
||||
|
||||
use crate::{
|
||||
renderer::WgpuRenderer,
|
||||
sprite::Sprite,
|
||||
sprite::{Sprite, Center},
|
||||
utils::{Pixel, Color, Position, Size},
|
||||
};
|
||||
use super::TextureSprite;
|
||||
@ -149,7 +149,7 @@ impl Sprite for TextSprite {
|
||||
self.texture_sprite.set_position(position);
|
||||
}
|
||||
|
||||
fn set_center(&mut self, center: Position) {
|
||||
fn set_center(&mut self, center: Center) {
|
||||
self.texture_sprite.set_center(center);
|
||||
}
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ use log::{debug, error, info, trace, warn};
|
||||
|
||||
//--Internal imports--------------------------------------------------------------------------------
|
||||
|
||||
use super::Sprite;
|
||||
use super::{Sprite, Center};
|
||||
|
||||
use crate::{
|
||||
texture::TextureHandle,
|
||||
@ -148,8 +148,28 @@ impl Sprite for TextureSprite {
|
||||
self.matrix.set_position(position);
|
||||
}
|
||||
|
||||
fn set_center(&mut self, center: Position) {
|
||||
self.matrix.set_center(center);
|
||||
fn set_center(&mut self, center: Center) {
|
||||
let center_pos = match center {
|
||||
Center::Geometric => Position {x: 0, y: 0},
|
||||
Center::TopLeft => Position {
|
||||
x: -(self.inner_size.w as i32) / 2,
|
||||
y: (self.inner_size.h as i32) / 2
|
||||
},
|
||||
Center::TopRight => Position {
|
||||
x: (self.inner_size.w as i32) / 2,
|
||||
y: (self.inner_size.h as i32) / 2
|
||||
},
|
||||
Center::BotLeft => Position {
|
||||
x: -(self.inner_size.w as i32) / 2,
|
||||
y: -(self.inner_size.h as i32) / 2
|
||||
},
|
||||
Center::BotRight => Position {
|
||||
x: (self.inner_size.w as i32) / 2,
|
||||
y: -(self.inner_size.h as i32) / 2
|
||||
},
|
||||
Center::Custom(pos) => pos,
|
||||
};
|
||||
self.matrix.set_center(center_pos);
|
||||
}
|
||||
|
||||
fn set_rotation(&mut self, rotation: f32) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user