diff options
Diffstat (limited to 'engine/src/transform.rs')
| -rw-r--r-- | engine/src/transform.rs | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/engine/src/transform.rs b/engine/src/transform.rs index 5e5e296..05819bc 100644 --- a/engine/src/transform.rs +++ b/engine/src/transform.rs @@ -1,15 +1,54 @@ use ecs::Component; +use crate::builder; use crate::vector::Vec3; -/// A position in 3D space. +builder!( + #[builder(name = Builder, derives=(Debug))] + #[derive(Debug)] + #[non_exhaustive] + pub struct Transform + { + pub position: Vec3<f32>, + pub scale: Vec3<f32>, + } +); + +impl Transform +{ + pub fn builder() -> Builder + { + Builder::default() + } +} + +impl Default for Transform +{ + fn default() -> Self + { + Self::builder().build() + } +} + +impl Default for Builder +{ + fn default() -> Self + { + Self { + position: Vec3::from(0.0), + scale: Vec3::from(1.0), + } + } +} + +/// A position in world space. #[derive(Debug, Default, Clone, Copy, Component)] -pub struct Position +pub struct WorldPosition { pub position: Vec3<f32>, } -impl From<Vec3<f32>> for Position +impl From<Vec3<f32>> for WorldPosition { fn from(position: Vec3<f32>) -> Self { |
