From 54c0fd70f82eb1a6814872c78bc22380f438c9d1 Mon Sep 17 00:00:00 2001 From: HampusM Date: Sun, 22 Oct 2023 19:29:11 +0200 Subject: feat(engine): add translating & scaling objects --- engine/src/transform.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 engine/src/transform.rs (limited to 'engine/src/transform.rs') diff --git a/engine/src/transform.rs b/engine/src/transform.rs new file mode 100644 index 0000000..9ce52ee --- /dev/null +++ b/engine/src/transform.rs @@ -0,0 +1,45 @@ +use crate::matrix::Matrix; +use crate::vector::Vec3; + +#[derive(Debug, Clone)] +pub struct Transform +{ + translation: Vec3, + scaling: Vec3, +} + +impl Transform +{ + pub fn new() -> Self + { + Self { + translation: Vec3::default(), + scaling: Vec3 { + x: 1.0, + y: 1.0, + z: 1.0, + }, + } + } + + pub fn set_translation(&mut self, translation: Vec3) + { + self.translation = translation; + } + + pub fn set_scaling(&mut self, scaling: Vec3) + { + self.scaling = scaling; + } + + pub fn as_matrix(&self) -> Matrix + { + let mut matrix = Matrix::new_identity(); + + matrix.translate(&self.translation); + + matrix.scale(&self.scaling); + + matrix + } +} -- cgit v1.2.3-18-g5258