diff options
author | HampusM <hampus@hampusmat.com> | 2023-11-28 19:34:29 +0100 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2023-11-28 19:34:29 +0100 |
commit | a924aaf2b0dee84835dfe5f6f5381076017fb18a (patch) | |
tree | 568a4924aa68790d20a16f1dbfa8a183370339aa /engine/src/vector.rs | |
parent | c04ff88876e48cdf09223fe99b77e4724f2024aa (diff) |
feat(engine): add Vec2 Add, Sub, Mul & Div impls
Diffstat (limited to 'engine/src/vector.rs')
-rw-r--r-- | engine/src/vector.rs | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/engine/src/vector.rs b/engine/src/vector.rs index e0aa262..1d2ea93 100644 --- a/engine/src/vector.rs +++ b/engine/src/vector.rs @@ -1,4 +1,4 @@ -use std::ops::{Add, AddAssign, Mul, Neg, Sub, SubAssign}; +use std::ops::{Add, AddAssign, Div, Mul, Neg, Sub, SubAssign}; use crate::color::Color; @@ -14,6 +14,66 @@ impl Vec2<u32> pub const ZERO: Self = Self { x: 0, y: 0 }; } +impl<Value> Add<Value> for Vec2<Value> +where + Value: Add<Output = Value> + Clone, +{ + type Output = Self; + + fn add(self, rhs: Value) -> Self::Output + { + Self { + x: self.x + rhs.clone(), + y: self.y + rhs, + } + } +} + +impl<Value> Sub<Value> for Vec2<Value> +where + Value: Sub<Output = Value> + Clone, +{ + type Output = Self; + + fn sub(self, rhs: Value) -> Self::Output + { + Self { + x: self.x - rhs.clone(), + y: self.y - rhs, + } + } +} + +impl<Value> Mul<Value> for Vec2<Value> +where + Value: Mul<Output = Value> + Clone, +{ + type Output = Self; + + fn mul(self, rhs: Value) -> Self::Output + { + Self { + x: self.x * rhs.clone(), + y: self.y * rhs, + } + } +} + +impl<Value> Div<Value> for Vec2<Value> +where + Value: Div<Output = Value> + Clone, +{ + type Output = Self; + + fn div(self, rhs: Value) -> Self::Output + { + Self { + x: self.x / rhs.clone(), + y: self.y / rhs, + } + } +} + #[derive(Debug, Default, Clone)] #[repr(C)] pub struct Vec3<Value> |