diff options
| author | HampusM <hampus@hampusmat.com> | 2023-11-13 19:04:05 +0100 | 
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2023-11-13 19:04:05 +0100 | 
| commit | 347b5374fb344507b57f4c5eecd28785a9f00961 (patch) | |
| tree | 7c27da6168e461e3ce45477527e34844e31362b3 /engine/src | |
| parent | 04e778802c0d9fd84ffd68ba7f7b9a26ea7640b8 (diff) | |
fix(engine): make object translate function add to current pos
Diffstat (limited to 'engine/src')
| -rw-r--r-- | engine/src/object.rs | 7 | ||||
| -rw-r--r-- | engine/src/transform.rs | 24 | 
2 files changed, 16 insertions, 15 deletions
diff --git a/engine/src/object.rs b/engine/src/object.rs index 4112bcb..3827763 100644 --- a/engine/src/object.rs +++ b/engine/src/object.rs @@ -42,17 +42,18 @@ impl Object      #[must_use]      pub fn position(&self) -> &Vec3<f32>      { -        self.transform.translation() +        self.transform.position()      }      pub fn translate(&mut self, translation: Vec3<f32>)      { -        self.transform.set_translation(translation); +        self.transform +            .set_position(self.transform.position().clone() + translation);      }      pub fn scale(&mut self, scaling: Vec3<f32>)      { -        self.transform.set_scaling(scaling); +        self.transform.set_scale(scaling);      }      #[must_use] diff --git a/engine/src/transform.rs b/engine/src/transform.rs index b01e3c1..a9d9980 100644 --- a/engine/src/transform.rs +++ b/engine/src/transform.rs @@ -4,8 +4,8 @@ use crate::vector::Vec3;  #[derive(Debug, Clone)]  pub struct Transform  { -    translation: Vec3<f32>, -    scaling: Vec3<f32>, +    position: Vec3<f32>, +    scale: Vec3<f32>,  }  impl Transform @@ -13,33 +13,33 @@ impl Transform      pub fn new() -> Self      {          Self { -            translation: Vec3::default(), -            scaling: Vec3 { x: 1.0, y: 1.0, z: 1.0 }, +            position: Vec3::default(), +            scale: Vec3 { x: 1.0, y: 1.0, z: 1.0 },          }      } -    pub fn translation(&self) -> &Vec3<f32> +    pub fn position(&self) -> &Vec3<f32>      { -        &self.translation +        &self.position      } -    pub fn set_translation(&mut self, translation: Vec3<f32>) +    pub fn set_position(&mut self, position: Vec3<f32>)      { -        self.translation = translation; +        self.position = position;      } -    pub fn set_scaling(&mut self, scaling: Vec3<f32>) +    pub fn set_scale(&mut self, scale: Vec3<f32>)      { -        self.scaling = scaling; +        self.scale = scale;      }      pub fn as_matrix(&self) -> Matrix<f32, 4, 4>      {          let mut matrix = Matrix::new_identity(); -        matrix.translate(&self.translation); +        matrix.translate(&self.position); -        matrix.scale(&self.scaling); +        matrix.scale(&self.scale);          matrix      }  | 
