mirror of
https://github.com/bevyengine/bevy
synced 2024-11-25 06:00:20 +00:00
Add builder methods to Transform (#2778)
# Objective Make it easier to construct transforms. E.g. ```rs Transform::from_xyz(0.0, 0.0, 10.0).with_scale(Vec3::splat(2.0)) ``` I found myself writing an extension method to do this so I don't have to write: ```rs Transform { translation: Vec3::new(0.0, 0.0, 10.0), scale: Vec3::splat(2.0), ..Default::default() } ``` ## Solution Add *builder style* methods to `Transform`. Methods: - `with_translation` - `with_rotation` - `with_scale` I also added these methods to `GlobalTransform`. But they are probably less useful there.
This commit is contained in:
parent
e317058677
commit
2f6c464f4b
2 changed files with 42 additions and 0 deletions
|
@ -105,6 +105,27 @@ impl GlobalTransform {
|
|||
self
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
#[inline]
|
||||
pub fn with_translation(mut self, translation: Vec3) -> Self {
|
||||
self.translation = translation;
|
||||
self
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
#[inline]
|
||||
pub fn with_rotation(mut self, rotation: Quat) -> Self {
|
||||
self.rotation = rotation;
|
||||
self
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
#[inline]
|
||||
pub fn with_scale(mut self, scale: Vec3) -> Self {
|
||||
self.scale = scale;
|
||||
self
|
||||
}
|
||||
|
||||
/// Returns the 3d affine transformation matrix from this transforms translation,
|
||||
/// rotation, and scale.
|
||||
#[inline]
|
||||
|
|
|
@ -117,6 +117,27 @@ impl Transform {
|
|||
self
|
||||
}
|
||||
|
||||
/// Returns this [`Transform`] with a new translation.
|
||||
#[inline]
|
||||
pub fn with_translation(mut self, translation: Vec3) -> Self {
|
||||
self.translation = translation;
|
||||
self
|
||||
}
|
||||
|
||||
/// Returns this [`Transform`] with a new rotation.
|
||||
#[inline]
|
||||
pub fn with_rotation(mut self, rotation: Quat) -> Self {
|
||||
self.rotation = rotation;
|
||||
self
|
||||
}
|
||||
|
||||
/// Returns this [`Transform`] with a new scale.
|
||||
#[inline]
|
||||
pub fn with_scale(mut self, scale: Vec3) -> Self {
|
||||
self.scale = scale;
|
||||
self
|
||||
}
|
||||
|
||||
/// Returns the 3d affine transformation matrix from this transforms translation,
|
||||
/// rotation, and scale.
|
||||
#[inline]
|
||||
|
|
Loading…
Reference in a new issue