Struct bevy::transform::components::Transform [−]
Expand description
Describe the position of an entity. If the entity has a parent, the position is relative to its parent position.
- To place or move an entity, you should set its
Transform
. - To be displayed, an entity must have both a
Transform
and aGlobalTransform
. - To get the global position of an entity, you should get its
GlobalTransform
.
Transform
and GlobalTransform
Transform
is the position of an entity relative to its parent position, or the reference
frame if it doesn’t have a Parent
.
GlobalTransform
is the position of an entity relative to the reference frame.
GlobalTransform
is updated from Transform
in the system
transform_propagate_system
.
In pseudo code:
for entity in entities_without_parent:
set entity.global_transform to entity.transform
recursively:
set parent to current entity
for child in parent.children:
set child.global_transform to parent.global_transform * child.transform
This system runs in stage CoreStage::PostUpdate
. If you
update theTransform
of an entity in this stage or after, you will notice a 1 frame lag
before the GlobalTransform
is updated.
Fields
translation: Vec3
Position of the entity. In 2d, the last value of the Vec3
is used for z-ordering.
rotation: Quat
Rotation of the entity.
scale: Vec3
Scale of the entity.
Implementations
impl Transform
impl Transform
Creates a new Transform
at the position (x, y, z)
. In 2d, the z
component
is used for z-ordering elements: higher z
-value will be in front of lower
z
-value.
Creates a new identity Transform
, with no translation, rotation, and a scale of 1 on
all axes.
pub fn from_matrix(matrix: Mat4) -> Transform
pub fn from_matrix(matrix: Mat4) -> Transform
Extracts the translation, rotation, and scale from matrix
. It must be a 3d affine
transformation matrix.
pub fn from_translation(translation: Vec3) -> Transform
pub fn from_translation(translation: Vec3) -> Transform
Creates a new Transform
, with translation
. Rotation will be 0 and scale 1 on
all axes.
pub fn from_rotation(rotation: Quat) -> Transform
pub fn from_rotation(rotation: Quat) -> Transform
Creates a new Transform
, with rotation
. Translation will be 0 and scale 1 on
all axes.
pub fn from_scale(scale: Vec3) -> Transform
pub fn from_scale(scale: Vec3) -> Transform
Creates a new Transform
, with scale
. Translation will be 0 and rotation 0 on
all axes.
pub fn looking_at(self, target: Vec3, up: Vec3) -> Transform
pub fn looking_at(self, target: Vec3, up: Vec3) -> Transform
Updates and returns this Transform
by rotating it so that its unit vector in the
local z direction is toward target
and its unit vector in the local y direction
is toward up
.
pub fn with_translation(self, translation: Vec3) -> Transform
pub fn with_translation(self, translation: Vec3) -> Transform
Returns this Transform
with a new translation.
pub fn with_rotation(self, rotation: Quat) -> Transform
pub fn with_rotation(self, rotation: Quat) -> Transform
Returns this Transform
with a new rotation.
pub fn with_scale(self, scale: Vec3) -> Transform
pub fn with_scale(self, scale: Vec3) -> Transform
Returns this Transform
with a new scale.
pub fn compute_matrix(&self) -> Mat4
pub fn compute_matrix(&self) -> Mat4
Returns the 3d affine transformation matrix from this transforms translation, rotation, and scale.
Equivalent to -local_x()
Equivalent to -local_y()
Equivalent to -local_z()
pub fn mul_transform(&self, transform: Transform) -> Transform
pub fn mul_transform(&self, transform: Transform) -> Transform
Multiplies self
with transform
component by component, returning the
resulting Transform
pub fn apply_non_uniform_scale(&mut self, scale_factor: Vec3)
pub fn apply_non_uniform_scale(&mut self, scale_factor: Vec3)
Changes the scale
of this Transform
, multiplying the current scale
by
scale_factor
.
Trait Implementations
type Storage = TableStorage
impl From<GlobalTransform> for Transform
impl From<GlobalTransform> for Transform
pub fn from(transform: GlobalTransform) -> Transform
pub fn from(transform: GlobalTransform) -> Transform
Performs the conversion.
impl From<Transform> for GlobalTransform
impl From<Transform> for GlobalTransform
pub fn from(transform: Transform) -> GlobalTransform
pub fn from(transform: Transform) -> GlobalTransform
Performs the conversion.
impl GetTypeRegistration for Transform
impl GetTypeRegistration for Transform
pub fn get_type_registration() -> TypeRegistration
impl Mul<Transform> for GlobalTransform
impl Mul<Transform> for GlobalTransform
type Output = GlobalTransform
type Output = GlobalTransform
The resulting type after applying the *
operator.
pub fn clone_value(&self) -> Box<dyn Reflect + 'static, Global>ⓘ
pub fn set(
&mut self,
value: Box<dyn Reflect + 'static, Global>
) -> Result<(), Box<dyn Reflect + 'static, Global>>
pub fn reflect_ref(&self) -> ReflectRef<'_>
pub fn reflect_mut(&mut self) -> ReflectMut<'_>
pub fn serializable(&self) -> Option<Serializable<'_>>
pub fn serializable(&self) -> Option<Serializable<'_>>
Returns a serializable value, if serialization is supported. Otherwise None
will be
returned. Read more
pub fn reflect_hash(&self) -> Option<u64>
pub fn reflect_hash(&self) -> Option<u64>
Returns a hash of the value (which includes the type) if hashing is supported. Otherwise
None
will be returned. Read more
pub fn reflect_partial_eq(
&self,
value: &(dyn Reflect + 'static)
) -> Option<bool>
pub fn reflect_partial_eq(
&self,
value: &(dyn Reflect + 'static)
) -> Option<bool>
Returns a “partial equal” comparison result if comparison is supported. Otherwise None
will be returned. Read more
pub fn field_at_mut(
&mut self,
index: usize
) -> Option<&mut (dyn Reflect + 'static)>
pub fn iter_fields(&self) -> FieldIter<'_>ⓘ
pub fn clone_dynamic(&self) -> DynamicStruct
impl StructuralPartialEq for Transform
Auto Trait Implementations
impl RefUnwindSafe for Transform
impl UnwindSafe for Transform
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
pub fn from_world(_world: &mut World) -> T
pub fn from_world(_world: &mut World) -> T
Creates Self
using data from the given World
pub fn path(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
pub fn path_mut(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn get_path_mut<T>(
&'r mut self,
path: &'p str
) -> Result<&'r mut T, ReflectPathError<'p>> where
T: Reflect,
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
pub fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>ⓘ
pub fn vzip(self) -> V
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more