pub struct Isometry3d {
pub rotation: Quat,
pub translation: Vec3A,
}Expand description
An isometry in three dimensions, representing a rotation followed by a translation. This can often be useful for expressing relative positions and transformations from one position to another.
In particular, this type represents a distance-preserving transformation known as a rigid motion or a direct motion, and belongs to the special Euclidean group SE(3). This includes translation and rotation, but excludes reflection.
For the two-dimensional version, see Isometry2d.
§Example
Isometries can be created from a given translation and rotation:
let iso = Isometry3d::new(Vec3::new(2.0, 1.0, 3.0), Quat::from_rotation_z(FRAC_PI_2));Or from separate parts:
let iso1 = Isometry3d::from_translation(Vec3::new(2.0, 1.0, 3.0));
let iso2 = Isometry3d::from_rotation(Quat::from_rotation_z(FRAC_PI_2));The isometries can be used to transform points:
let iso = Isometry3d::new(Vec3::new(2.0, 1.0, 3.0), Quat::from_rotation_z(FRAC_PI_2));
let point = Vec3::new(4.0, 4.0, 4.0);
// These are equivalent
let result = iso.transform_point(point);
let result = iso * point;
assert_relative_eq!(result, Vec3::new(-2.0, 5.0, 7.0));Isometries can also be composed together:
assert_eq!(iso1 * iso2, iso);One common operation is to compute an isometry representing the relative positions of two objects for things like intersection tests. This can be done with an inverse transformation:
let sphere_iso = Isometry3d::from_translation(Vec3::new(2.0, 1.0, 3.0));
let cuboid_iso = Isometry3d::from_rotation(Quat::from_rotation_z(FRAC_PI_2));
// Compute the relative position and orientation between the two shapes
let relative_iso = sphere_iso.inverse() * cuboid_iso;
// Or alternatively, to skip an extra rotation operation:
let relative_iso = sphere_iso.inverse_mul(cuboid_iso);Fields§
§rotation: QuatThe rotational part of a three-dimensional isometry.
translation: Vec3AThe translational part of a three-dimensional isometry.
Implementations§
Source§impl Isometry3d
impl Isometry3d
Sourcepub const IDENTITY: Isometry3d
pub const IDENTITY: Isometry3d
The identity isometry which represents the rigid motion of not doing anything.
Sourcepub fn new(translation: impl Into<Vec3A>, rotation: Quat) -> Isometry3d
pub fn new(translation: impl Into<Vec3A>, rotation: Quat) -> Isometry3d
Create a three-dimensional isometry from a rotation and a translation.
Examples found in repository?
25fn hello_world(mut text_gizmos: Gizmos, time: Res<Time>) {
26 let t = 0.2 * time.elapsed_secs();
27
28 text_gizmos.text(
29 Isometry3d::new(Vec3::new(0.0, 1.5, 0.0), Quat::from_rotation_y(-t)),
30 "Hello",
31 1.,
32 Vec2::ZERO,
33 RED,
34 );
35
36 text_gizmos.text(
37 Isometry3d::new(Vec3::new(0.0, 0.0, 0.0), Quat::from_rotation_y(t + 0.25)),
38 "Text",
39 1.,
40 Vec2::ZERO,
41 ORANGE,
42 );
43
44 text_gizmos.text(
45 Isometry3d::new(Vec3::new(0.0, -1.5, 0.0), Quat::from_rotation_y(-t - 0.5)),
46 "Gizmos",
47 1.,
48 Vec2::ZERO,
49 YELLOW,
50 );
51}More examples
346fn draw_camera_gizmo(cameras: Query<(&Camera, &GlobalTransform)>, mut gizmos: Gizmos) {
347 for (camera, transform) in &cameras {
348 // As above, we use the order as a cheap tag to tell the depth texture
349 // apart from the main texture.
350 if camera.order >= 0 {
351 continue;
352 }
353
354 // Draw a cone representing the camera.
355 gizmos.primitive_3d(
356 &Cone {
357 radius: 1.0,
358 height: 3.0,
359 },
360 Isometry3d::new(
361 transform.translation(),
362 // We have to rotate here because `Cone` primitives are oriented
363 // along +Y and cameras point along +Z.
364 transform.rotation() * Quat::from_rotation_x(FRAC_PI_2),
365 ),
366 LIME,
367 );
368 }
369}13fn draw_cursor(
14 camera_query: Single<(&Camera, &GlobalTransform)>,
15 ground: Single<&GlobalTransform, With<Ground>>,
16 window: Single<&Window>,
17 mut gizmos: Gizmos,
18) {
19 let (camera, camera_transform) = *camera_query;
20
21 if let Some(cursor_position) = window.cursor_position()
22 // Calculate a ray pointing from the camera into the world based on the cursor's position.
23 && let Ok(ray) = camera.viewport_to_world(camera_transform, cursor_position)
24 // Calculate if and where the ray is hitting the ground plane.
25 && let Some(point) = ray.plane_intersection_point(ground.translation(), InfinitePlane3d::new(ground.up()))
26 {
27 // Draw a circle just above the ground plane at that position.
28 gizmos.circle(
29 Isometry3d::new(
30 point + ground.up() * 0.01,
31 Quat::from_rotation_arc(Vec3::Z, ground.up().as_vec3()),
32 ),
33 0.2,
34 Color::WHITE,
35 );
36 }
37}673fn draw_gizmos_3d(mut gizmos: Gizmos, state: Res<State<PrimitiveSelected>>, time: Res<Time>) {
674 const POSITION: Vec3 = Vec3::new(LEFT_RIGHT_OFFSET_3D, 0.0, 0.0);
675 let rotation = Quat::from_rotation_arc(
676 Vec3::Z,
677 Vec3::new(
678 ops::sin(time.elapsed_secs()),
679 ops::cos(time.elapsed_secs()),
680 ops::sin(time.elapsed_secs()) * 0.5,
681 )
682 .try_normalize()
683 .unwrap_or(Vec3::Z),
684 );
685 let isometry = Isometry3d::new(POSITION, rotation);
686 let color = Color::WHITE;
687 let resolution = 10;
688
689 #[expect(
690 clippy::match_same_arms,
691 reason = "Certain primitives don't have any 3D rendering support yet."
692 )]
693 match state.get() {
694 PrimitiveSelected::RectangleAndCuboid => {
695 gizmos.primitive_3d(&CUBOID, isometry, color);
696 }
697 PrimitiveSelected::CircleAndSphere => drop(
698 gizmos
699 .primitive_3d(&SPHERE, isometry, color)
700 .resolution(resolution),
701 ),
702 PrimitiveSelected::Ellipse => {}
703 PrimitiveSelected::Triangle => gizmos.primitive_3d(&TRIANGLE_3D, isometry, color),
704 PrimitiveSelected::Plane => drop(gizmos.primitive_3d(&PLANE_3D, isometry, color)),
705 PrimitiveSelected::Line => gizmos.primitive_3d(&LINE_3D, isometry, color),
706 PrimitiveSelected::Segment => gizmos.primitive_3d(&SEGMENT_3D, isometry, color),
707 PrimitiveSelected::Polyline => gizmos.primitive_3d(
708 &Polyline3d {
709 vertices: POLYLINE_3D_VERTICES.to_vec(),
710 },
711 isometry,
712 color,
713 ),
714 PrimitiveSelected::Polygon => {}
715 PrimitiveSelected::ConvexPolygon => {}
716 PrimitiveSelected::RegularPolygon => {}
717 PrimitiveSelected::Capsule => drop(
718 gizmos
719 .primitive_3d(&CAPSULE_3D, isometry, color)
720 .resolution(resolution),
721 ),
722 PrimitiveSelected::Cylinder => drop(
723 gizmos
724 .primitive_3d(&CYLINDER, isometry, color)
725 .resolution(resolution),
726 ),
727 PrimitiveSelected::Cone => drop(
728 gizmos
729 .primitive_3d(&CONE, isometry, color)
730 .resolution(resolution),
731 ),
732 PrimitiveSelected::ConicalFrustum => {
733 gizmos.primitive_3d(&CONICAL_FRUSTUM, isometry, color);
734 }
735
736 PrimitiveSelected::Torus => drop(
737 gizmos
738 .primitive_3d(&TORUS, isometry, color)
739 .minor_resolution(resolution)
740 .major_resolution(resolution),
741 ),
742 PrimitiveSelected::Tetrahedron => {
743 gizmos.primitive_3d(&TETRAHEDRON, isometry, color);
744 }
745
746 PrimitiveSelected::Arc => {}
747 PrimitiveSelected::CircularSector => {}
748 PrimitiveSelected::CircularSegment => {}
749 }
750}99fn draw_example_collection(
100 mut gizmos: Gizmos,
101 mut my_gizmos: Gizmos<MyRoundGizmos>,
102 time: Res<Time>,
103) {
104 gizmos.grid(
105 Quat::from_rotation_x(PI / 2.),
106 UVec2::splat(20),
107 Vec2::new(2., 2.),
108 // Light gray
109 LinearRgba::gray(0.65),
110 );
111 gizmos.grid(
112 Isometry3d::new(Vec3::splat(10.0), Quat::from_rotation_x(PI / 3. * 2.)),
113 UVec2::splat(20),
114 Vec2::new(2., 2.),
115 PURPLE,
116 );
117 gizmos.sphere(Vec3::splat(10.0), 1.0, PURPLE);
118
119 gizmos
120 .primitive_3d(
121 &Plane3d {
122 normal: Dir3::Y,
123 half_size: Vec2::splat(1.0),
124 },
125 Isometry3d::new(
126 Vec3::splat(4.0) + Vec2::from(ops::sin_cos(time.elapsed_secs())).extend(0.0),
127 Quat::from_rotation_x(PI / 2. + time.elapsed_secs()),
128 ),
129 GREEN,
130 )
131 .cell_count(UVec2::new(5, 10))
132 .spacing(Vec2::new(0.2, 0.1));
133
134 gizmos.cube(
135 Transform::from_translation(Vec3::Y * 0.5).with_scale(Vec3::splat(1.25)),
136 BLACK,
137 );
138 gizmos.rect(
139 Isometry3d::new(
140 Vec3::new(ops::cos(time.elapsed_secs()) * 2.5, 1., 0.),
141 Quat::from_rotation_y(PI / 2.),
142 ),
143 Vec2::splat(2.),
144 LIME,
145 );
146
147 gizmos.cross(Vec3::new(-1., 1., 1.), 0.5, FUCHSIA);
148
149 let domain = Interval::EVERYWHERE;
150 let curve = FunctionCurve::new(domain, |t| {
151 (Vec2::from(ops::sin_cos(t * 10.0))).extend(t - 6.0)
152 });
153 let resolution = ((ops::sin(time.elapsed_secs()) + 1.0) * 100.0) as usize;
154 let times_and_colors = (0..=resolution)
155 .map(|n| n as f32 / resolution as f32)
156 .map(|t| t * 5.0)
157 .map(|t| (t, TEAL.mix(&HOT_PINK, t / 5.0)));
158 gizmos.curve_gradient_3d(curve, times_and_colors);
159
160 my_gizmos.sphere(Vec3::new(1., 0.5, 0.), 0.5, RED);
161
162 my_gizmos
163 .rounded_cuboid(Vec3::new(-2.0, 0.75, -0.75), Vec3::splat(0.9), TURQUOISE)
164 .edge_radius(0.1)
165 .arc_resolution(4);
166
167 for y in [0., 0.5, 1.] {
168 gizmos.ray(
169 Vec3::new(1., y, 0.),
170 Vec3::new(-3., ops::sin(time.elapsed_secs() * 3.), 0.),
171 BLUE,
172 );
173 }
174
175 my_gizmos
176 .arc_3d(
177 180.0_f32.to_radians(),
178 0.2,
179 Isometry3d::new(
180 Vec3::ONE,
181 Quat::from_rotation_arc(Vec3::Y, Vec3::ONE.normalize()),
182 ),
183 ORANGE,
184 )
185 .resolution(10);
186
187 // Circles have 32 line-segments by default.
188 my_gizmos.circle(Quat::from_rotation_arc(Vec3::Z, Vec3::Y), 3., BLACK);
189
190 // You may want to increase this for larger circles or spheres.
191 my_gizmos
192 .circle(Quat::from_rotation_arc(Vec3::Z, Vec3::Y), 3.1, NAVY)
193 .resolution(64);
194 my_gizmos
195 .sphere(Isometry3d::IDENTITY, 3.2, BLACK)
196 .resolution(64);
197
198 gizmos.arrow(Vec3::ZERO, Vec3::splat(1.5), YELLOW);
199
200 // You can create more complex arrows using the arrow builder.
201 gizmos
202 .arrow(Vec3::new(2., 0., 2.), Vec3::new(2., 2., 2.), ORANGE_RED)
203 .with_double_end()
204 .with_tip_length(0.5);
205}Sourcepub const fn from_rotation(rotation: Quat) -> Isometry3d
pub const fn from_rotation(rotation: Quat) -> Isometry3d
Create a three-dimensional isometry from a rotation.
Sourcepub fn from_translation(translation: impl Into<Vec3A>) -> Isometry3d
pub fn from_translation(translation: impl Into<Vec3A>) -> Isometry3d
Create a three-dimensional isometry from a translation.
Examples found in repository?
379 pub fn draw_gizmos(mut gizmos: Gizmos) {
380 gizmos.cube(
381 Transform::from_translation(Vec3::X * -1.75).with_scale(Vec3::splat(1.25)),
382 RED,
383 );
384 gizmos
385 .sphere(Isometry3d::from_translation(Vec3::X * -3.5), 0.75, GREEN)
386 .resolution(30_000 / 3);
387
388 gizmos.text(
389 Isometry3d::from_translation(Vec3::Y * 1.5),
390 "text gizmo",
391 0.3,
392 Vec2 { x: 0., y: 0. },
393 Color::WHITE,
394 );
395
396 // 3d grids with all variations of outer edges on or off
397 for i in 0..8 {
398 let x = 1.5 * (i % 4) as f32;
399 let y = 1.0 * (0.5 - (i / 4) as f32);
400 let mut grid = gizmos.grid_3d(
401 Isometry3d::from_translation(Vec3::new(x, y, 0.0)),
402 UVec3::new(5, 4, 3),
403 Vec3::splat(0.175),
404 Color::WHITE,
405 );
406 if i & 1 > 0 {
407 grid = grid.outer_edges_x();
408 }
409 if i & 2 > 0 {
410 grid = grid.outer_edges_y();
411 }
412 if i & 4 > 0 {
413 grid.outer_edges_z();
414 }
415 }
416 }Sourcepub const fn from_xyz(x: f32, y: f32, z: f32) -> Isometry3d
pub const fn from_xyz(x: f32, y: f32, z: f32) -> Isometry3d
Create a three-dimensional isometry from a translation with the given x, y, and z components.
Sourcepub fn inverse(&self) -> Isometry3d
pub fn inverse(&self) -> Isometry3d
The inverse isometry that undoes this one.
Sourcepub fn inverse_mul(&self, rhs: Isometry3d) -> Isometry3d
pub fn inverse_mul(&self, rhs: Isometry3d) -> Isometry3d
Compute iso1.inverse() * iso2 in a more efficient way for one-shot cases.
If the same isometry is used multiple times, it is more efficient to instead compute the inverse once and use that for each transformation.
Sourcepub fn transform_point(&self, point: impl Into<Vec3A>) -> Vec3A
pub fn transform_point(&self, point: impl Into<Vec3A>) -> Vec3A
Transform a point by rotating and translating it using this isometry.
Sourcepub fn inverse_transform_point(&self, point: impl Into<Vec3A>) -> Vec3A
pub fn inverse_transform_point(&self, point: impl Into<Vec3A>) -> Vec3A
Transform a point by rotating and translating it using the inverse of this isometry.
This is more efficient than iso.inverse().transform_point(point) for one-shot cases.
If the same isometry is used multiple times, it is more efficient to instead compute
the inverse once and use that for each transformation.
Trait Implementations§
Source§impl Clone for Isometry3d
impl Clone for Isometry3d
Source§fn clone(&self) -> Isometry3d
fn clone(&self) -> Isometry3d
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for Isometry3d
Source§impl Debug for Isometry3d
impl Debug for Isometry3d
Source§impl Default for Isometry3d
impl Default for Isometry3d
Source§fn default() -> Isometry3d
fn default() -> Isometry3d
Source§impl<'de> Deserialize<'de> for Isometry3d
impl<'de> Deserialize<'de> for Isometry3d
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Isometry3d, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Isometry3d, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Ease for Isometry3d
impl Ease for Isometry3d
Source§fn interpolating_curve_unbounded(
start: Isometry3d,
end: Isometry3d,
) -> impl Curve<Isometry3d>
fn interpolating_curve_unbounded( start: Isometry3d, end: Isometry3d, ) -> impl Curve<Isometry3d>
Source§impl From<Isometry3d> for Affine3
impl From<Isometry3d> for Affine3
Source§fn from(iso: Isometry3d) -> Affine3
fn from(iso: Isometry3d) -> Affine3
Source§impl From<Isometry3d> for Affine3A
impl From<Isometry3d> for Affine3A
Source§fn from(iso: Isometry3d) -> Affine3A
fn from(iso: Isometry3d) -> Affine3A
Source§impl From<Quat> for Isometry3d
impl From<Quat> for Isometry3d
Source§fn from(rotation: Quat) -> Isometry3d
fn from(rotation: Quat) -> Isometry3d
Source§impl From<Vec3> for Isometry3d
impl From<Vec3> for Isometry3d
Source§fn from(translation: Vec3) -> Isometry3d
fn from(translation: Vec3) -> Isometry3d
Source§impl From<Vec3A> for Isometry3d
impl From<Vec3A> for Isometry3d
Source§fn from(translation: Vec3A) -> Isometry3d
fn from(translation: Vec3A) -> Isometry3d
Source§impl FromArg for Isometry3d
impl FromArg for Isometry3d
Source§impl FromReflect for Isometry3d
impl FromReflect for Isometry3d
Source§fn from_reflect(reflect: &(dyn PartialReflect + 'static)) -> Option<Isometry3d>
fn from_reflect(reflect: &(dyn PartialReflect + 'static)) -> Option<Isometry3d>
Self from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self using,
constructing the value using from_reflect if that fails. Read moreSource§impl GetOwnership for Isometry3d
impl GetOwnership for Isometry3d
Source§impl GetTypeRegistration for Isometry3d
impl GetTypeRegistration for Isometry3d
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl IntoReturn for Isometry3d
impl IntoReturn for Isometry3d
Source§fn into_return<'into_return>(self) -> Return<'into_return>where
Isometry3d: 'into_return,
fn into_return<'into_return>(self) -> Return<'into_return>where
Isometry3d: 'into_return,
Source§impl Mul for Isometry3d
impl Mul for Isometry3d
Source§type Output = Isometry3d
type Output = Isometry3d
* operator.Source§fn mul(self, rhs: Isometry3d) -> <Isometry3d as Mul>::Output
fn mul(self, rhs: Isometry3d) -> <Isometry3d as Mul>::Output
* operation. Read moreSource§impl Mul<Dir3> for Isometry3d
impl Mul<Dir3> for Isometry3d
Source§impl Mul<Vec3> for Isometry3d
impl Mul<Vec3> for Isometry3d
Source§impl Mul<Vec3A> for Isometry3d
impl Mul<Vec3A> for Isometry3d
Source§impl PartialEq for Isometry3d
impl PartialEq for Isometry3d
Source§fn eq(&self, other: &Isometry3d) -> bool
fn eq(&self, other: &Isometry3d) -> bool
self and other values to be equal, and is used by ==.Source§impl PartialReflect for Isometry3d
impl PartialReflect for Isometry3d
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<Isometry3d>) -> ReflectOwned
fn reflect_owned(self: Box<Isometry3d>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<Isometry3d>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Isometry3d>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Source§fn into_partial_reflect(self: Box<Isometry3d>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Isometry3d>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn reflect_partial_cmp(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<Ordering>
fn reflect_partial_cmp( &self, value: &(dyn PartialReflect + 'static), ) -> Option<Ordering>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
PartialReflect, combines reflect_clone and
take in a useful fashion, automatically constructing an appropriate
ReflectCloneError if the downcast fails.Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for Isometry3d
impl Reflect for Isometry3d
Source§fn into_any(self: Box<Isometry3d>) -> Box<dyn Any>
fn into_any(self: Box<Isometry3d>) -> Box<dyn Any>
Box<dyn Any>. Read moreSource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any. Read moreSource§fn into_reflect(self: Box<Isometry3d>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Isometry3d>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Source§impl Serialize for Isometry3d
impl Serialize for Isometry3d
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl Struct for Isometry3d
impl Struct for Isometry3d
Source§fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
name as a &dyn PartialReflect.Source§fn field_mut(
&mut self,
name: &str,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, name: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>
name as a
&mut dyn PartialReflect.Source§fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
index as a
&dyn PartialReflect.Source§fn field_at_mut(
&mut self,
index: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_at_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
index
as a &mut dyn PartialReflect.Source§fn index_of_name(&self, name: &str) -> Option<usize>
fn index_of_name(&self, name: &str) -> Option<usize>
Source§fn iter_fields(&self) -> FieldIter<'_> ⓘ
fn iter_fields(&self) -> FieldIter<'_> ⓘ
Source§fn to_dynamic_struct(&self) -> DynamicStruct
fn to_dynamic_struct(&self) -> DynamicStruct
DynamicStruct from this struct.Source§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
None if TypeInfo is not available.impl StructuralPartialEq for Isometry3d
Source§impl TransformPoint for Isometry3d
impl TransformPoint for Isometry3d
Source§impl TypePath for Isometry3d
impl TypePath for Isometry3d
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Auto Trait Implementations§
impl Freeze for Isometry3d
impl RefUnwindSafe for Isometry3d
impl Send for Isometry3d
impl Sync for Isometry3d
impl Unpin for Isometry3d
impl UnsafeUnpin for Isometry3d
impl UnwindSafe for Isometry3d
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T ShaderType for self. When used in AsBindGroup
derives, it is safe to assume that all images in self exist.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> Brush for T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ConditionalSend for Twhere
T: Send,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> FromTemplate for T
impl<T> FromTemplate for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
Source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T> HitDataExtra for T
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> InitializeFromFunction<T> for T
impl<T> InitializeFromFunction<T> for T
Source§fn initialize_from_function(f: fn() -> T) -> T
fn initialize_from_function(f: fn() -> T) -> T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Source§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<G> PatchFromTemplate for Gwhere
G: FromTemplate,
impl<G> PatchFromTemplate for Gwhere
G: FromTemplate,
Source§fn patch<F>(func: F) -> TemplatePatch<F, <G as PatchFromTemplate>::Template>
fn patch<F>(func: F) -> TemplatePatch<F, <G as PatchFromTemplate>::Template>
func, and turns it into a TemplatePatch.Source§impl<T> PatchTemplate for Twhere
T: Template,
impl<T> PatchTemplate for Twhere
T: Template,
Source§fn patch_template<F>(func: F) -> TemplatePatch<F, T>
fn patch_template<F>(func: F) -> TemplatePatch<F, T>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().impl<T> Reflectable for T
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
impl<T> Settings for T
Source§impl<Ret> SpawnIfAsync<(), Ret> for Ret
impl<Ret> SpawnIfAsync<(), Ret> for Ret
Source§impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
Source§fn super_from(input: T) -> O
fn super_from(input: T) -> O
Source§impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
Source§fn super_into(self) -> O
fn super_into(self) -> O
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.Source§impl<T> Template for T
impl<T> Template for T
Source§fn build_template(
&self,
_context: &mut TemplateContext<'_, '_>,
) -> Result<<T as Template>::Output, BevyError>
fn build_template( &self, _context: &mut TemplateContext<'_, '_>, ) -> Result<<T as Template>::Output, BevyError>
entity context to produce a Template::Output.Source§fn clone_template(&self) -> T
fn clone_template(&self) -> T
Clone.