pub struct ConvexPolygon { /* private fields */ }Available on crate feature
alloc only.Expand description
A convex polygon with N vertices.
Implementations§
Source§impl ConvexPolygon
impl ConvexPolygon
Sourcepub fn new(
vertices: impl IntoIterator<Item = Vec2>,
) -> Result<ConvexPolygon, ConvexPolygonError>
pub fn new( vertices: impl IntoIterator<Item = Vec2>, ) -> Result<ConvexPolygon, ConvexPolygonError>
Create a ConvexPolygon from its vertices.
§Errors
Returns ConvexPolygonError::Concave if the vertices do not form a convex polygon.
Examples found in repository?
examples/math/render_primitives.rs (line 462)
430fn draw_gizmos_2d(mut gizmos: Gizmos, state: Res<State<PrimitiveSelected>>, time: Res<Time>) {
431 const POSITION: Vec2 = Vec2::new(-LEFT_RIGHT_OFFSET_2D, 0.0);
432 let angle = time.elapsed_secs();
433 let isometry = Isometry2d::new(POSITION, Rot2::radians(angle));
434 let color = Color::WHITE;
435
436 #[expect(
437 clippy::match_same_arms,
438 reason = "Certain primitives don't have any 2D rendering support yet."
439 )]
440 match state.get() {
441 PrimitiveSelected::RectangleAndCuboid => {
442 gizmos.primitive_2d(&RECTANGLE, isometry, color);
443 }
444 PrimitiveSelected::CircleAndSphere => {
445 gizmos.primitive_2d(&CIRCLE, isometry, color);
446 }
447 PrimitiveSelected::Ellipse => drop(gizmos.primitive_2d(&ELLIPSE, isometry, color)),
448 PrimitiveSelected::Triangle => gizmos.primitive_2d(&TRIANGLE_2D, isometry, color),
449 PrimitiveSelected::Plane => gizmos.primitive_2d(&PLANE_2D, isometry, color),
450 PrimitiveSelected::Line => drop(gizmos.primitive_2d(&LINE_2D, isometry, color)),
451 PrimitiveSelected::Segment => {
452 drop(gizmos.primitive_2d(&SEGMENT_2D, isometry, color));
453 }
454 PrimitiveSelected::Polyline => gizmos.primitive_2d(
455 &Polyline2d {
456 vertices: POLYLINE_2D_VERTICES.to_vec(),
457 },
458 isometry,
459 color,
460 ),
461 PrimitiveSelected::ConvexPolygon => gizmos.primitive_2d(
462 &Polygon::from(ConvexPolygon::new(CONVEX_POLYGON_VERTICES).unwrap()),
463 isometry,
464 color,
465 ),
466 PrimitiveSelected::Polygon => gizmos.primitive_2d(
467 &Polygon {
468 vertices: vec![
469 Vec2::new(-BIG_2D, -SMALL_2D),
470 Vec2::new(BIG_2D, -SMALL_2D),
471 Vec2::new(BIG_2D, SMALL_2D),
472 Vec2::new(0.0, 0.0),
473 Vec2::new(-BIG_2D, SMALL_2D),
474 ],
475 },
476 isometry,
477 color,
478 ),
479 PrimitiveSelected::RegularPolygon => {
480 gizmos.primitive_2d(®ULAR_POLYGON, isometry, color);
481 }
482 PrimitiveSelected::Capsule => gizmos.primitive_2d(&CAPSULE_2D, isometry, color),
483 PrimitiveSelected::Cylinder => {}
484 PrimitiveSelected::Cone => {}
485 PrimitiveSelected::ConicalFrustum => {}
486 PrimitiveSelected::Torus => drop(gizmos.primitive_2d(&ANNULUS, isometry, color)),
487 PrimitiveSelected::Tetrahedron => {}
488 PrimitiveSelected::Arc => gizmos.primitive_2d(&ARC, isometry, color),
489 PrimitiveSelected::CircularSector => {
490 gizmos.primitive_2d(&CIRCULAR_SECTOR, isometry, color);
491 }
492 PrimitiveSelected::CircularSegment => {
493 gizmos.primitive_2d(&CIRCULAR_SEGMENT, isometry, color);
494 }
495 }
496}
497
498/// Marker for primitive meshes to record in which state they should be visible in
499#[derive(Debug, Clone, Component, Default, Reflect)]
500pub struct PrimitiveData {
501 camera_mode: CameraActive,
502 primitive_state: PrimitiveSelected,
503}
504
505/// Marker for meshes of 2D primitives
506#[derive(Debug, Clone, Component, Default)]
507pub struct MeshDim2;
508
509/// Marker for meshes of 3D primitives
510#[derive(Debug, Clone, Component, Default)]
511pub struct MeshDim3;
512
513fn spawn_primitive_2d(
514 mut commands: Commands,
515 mut materials: ResMut<Assets<ColorMaterial>>,
516 mut meshes: ResMut<Assets<Mesh>>,
517) {
518 const POSITION: Vec3 = Vec3::new(LEFT_RIGHT_OFFSET_2D, 0.0, 0.0);
519 let material: Handle<ColorMaterial> = materials.add(Color::WHITE);
520 let camera_mode = CameraActive::Dim2;
521 let polyline_2d = Polyline2d {
522 vertices: POLYLINE_2D_VERTICES.to_vec(),
523 };
524 let convex_polygon = ConvexPolygon::new(CONVEX_POLYGON_VERTICES).unwrap();
525 [
526 Some(RECTANGLE.mesh().build()),
527 Some(CIRCLE.mesh().build()),
528 Some(ELLIPSE.mesh().build()),
529 Some(TRIANGLE_2D.mesh().build()),
530 None, // plane
531 None, // line
532 Some(SEGMENT_2D.mesh().build()),
533 Some(polyline_2d.mesh().build()),
534 None, // polygon
535 Some(convex_polygon.mesh().build()),
536 Some(REGULAR_POLYGON.mesh().build()),
537 Some(CAPSULE_2D.mesh().build()),
538 None, // cylinder
539 None, // cone
540 None, // conical frustum
541 Some(ANNULUS.mesh().build()),
542 None, // tetrahedron
543 None, // arc
544 Some(CIRCULAR_SECTOR.mesh().build()),
545 Some(CIRCULAR_SEGMENT.mesh().build()),
546 ]
547 .into_iter()
548 .zip(PrimitiveSelected::ALL)
549 .for_each(|(maybe_mesh, state)| {
550 if let Some(mesh) = maybe_mesh {
551 commands.spawn((
552 MeshDim2,
553 PrimitiveData {
554 camera_mode,
555 primitive_state: state,
556 },
557 Mesh2d(meshes.add(mesh)),
558 MeshMaterial2d(material.clone()),
559 Transform::from_translation(POSITION),
560 ));
561 }
562 });
563}More examples
examples/3d/3d_shapes.rs (lines 95-101)
57fn setup(
58 mut commands: Commands,
59 mut meshes: ResMut<Assets<Mesh>>,
60 mut images: ResMut<Assets<Image>>,
61 mut materials: ResMut<Assets<StandardMaterial>>,
62) {
63 let debug_material = materials.add(StandardMaterial {
64 base_color_texture: Some(images.add(uv_debug_texture())),
65 ..default()
66 });
67
68 let shapes = [
69 meshes.add(Cuboid::default()),
70 meshes.add(Tetrahedron::default()),
71 meshes.add(Capsule3d::default()),
72 meshes.add(Torus::default()),
73 meshes.add(Cylinder::default()),
74 meshes.add(Cone::default()),
75 meshes.add(ConicalFrustum::default()),
76 meshes.add(Sphere::default().mesh().ico(5).unwrap()),
77 meshes.add(Sphere::default().mesh().uv(32, 18)),
78 meshes.add(Segment3d::default()),
79 meshes.add(Polyline3d::new(vec![
80 Vec3::new(-0.5, 0.0, 0.0),
81 Vec3::new(0.5, 0.0, 0.0),
82 Vec3::new(0.0, 0.5, 0.0),
83 ])),
84 ];
85
86 let extrusions = [
87 meshes.add(Extrusion::new(Rectangle::default(), 1.)),
88 meshes.add(Extrusion::new(Capsule2d::default(), 1.)),
89 meshes.add(Extrusion::new(Annulus::default(), 1.)),
90 meshes.add(Extrusion::new(Circle::default(), 1.)),
91 meshes.add(Extrusion::new(Ellipse::default(), 1.)),
92 meshes.add(Extrusion::new(RegularPolygon::default(), 1.)),
93 meshes.add(Extrusion::new(Triangle2d::default(), 1.)),
94 meshes.add(Extrusion::new(
95 ConvexPolygon::new(vec![
96 Vec2::new(0.0, 0.8),
97 Vec2::new(-0.47, 0.25),
98 Vec2::new(-0.47, -0.65),
99 Vec2::new(0.47, -0.65),
100 Vec2::new(0.47, 0.25),
101 ])
102 .unwrap(),
103 1.0,
104 )),
105 ];
106
107 let ring_extrusions = [
108 meshes.add(Extrusion::new(Rectangle::default().to_ring(THICKNESS), 1.)),
109 meshes.add(Extrusion::new(Capsule2d::default().to_ring(THICKNESS), 1.)),
110 meshes.add(Extrusion::new(
111 Ring::new(Circle::new(1.0), Circle::new(0.5)),
112 1.,
113 )),
114 meshes.add(Extrusion::new(Circle::default().to_ring(THICKNESS), 1.)),
115 meshes.add(Extrusion::new(
116 {
117 // This is an approximation; Ellipse does not implement Inset as concentric ellipses do not have parallel curves
118 let outer = Ellipse::default();
119 let mut inner = outer;
120 inner.half_size -= Vec2::splat(THICKNESS);
121 Ring::new(outer, inner)
122 },
123 1.,
124 )),
125 meshes.add(Extrusion::new(
126 RegularPolygon::default().to_ring(THICKNESS),
127 1.,
128 )),
129 meshes.add(Extrusion::new(Triangle2d::default().to_ring(THICKNESS), 1.)),
130 ];
131
132 let num_shapes = shapes.len();
133
134 for (i, shape) in shapes.into_iter().enumerate() {
135 commands.spawn((
136 Mesh3d(shape),
137 MeshMaterial3d(debug_material.clone()),
138 Transform::from_xyz(
139 -SHAPES_X_EXTENT / 2. + i as f32 / (num_shapes - 1) as f32 * SHAPES_X_EXTENT,
140 2.0,
141 Row::Front.z(),
142 )
143 .with_rotation(Quat::from_rotation_x(-PI / 4.)),
144 Shape,
145 Row::Front,
146 ));
147 }
148
149 let num_extrusions = extrusions.len();
150
151 for (i, shape) in extrusions.into_iter().enumerate() {
152 commands.spawn((
153 Mesh3d(shape),
154 MeshMaterial3d(debug_material.clone()),
155 Transform::from_xyz(
156 -EXTRUSION_X_EXTENT / 2.
157 + i as f32 / (num_extrusions - 1) as f32 * EXTRUSION_X_EXTENT,
158 2.0,
159 Row::Middle.z(),
160 )
161 .with_rotation(Quat::from_rotation_x(-PI / 4.)),
162 Shape,
163 Row::Middle,
164 ));
165 }
166
167 let num_ring_extrusions = ring_extrusions.len();
168
169 for (i, shape) in ring_extrusions.into_iter().enumerate() {
170 commands.spawn((
171 Mesh3d(shape),
172 MeshMaterial3d(debug_material.clone()),
173 Transform::from_xyz(
174 -EXTRUSION_X_EXTENT / 2.
175 + i as f32 / (num_ring_extrusions - 1) as f32 * EXTRUSION_X_EXTENT,
176 2.0,
177 Row::Rear.z(),
178 )
179 .with_rotation(Quat::from_rotation_x(-PI / 4.)),
180 Shape,
181 Row::Rear,
182 ));
183 }
184
185 commands.spawn((
186 PointLight {
187 shadow_maps_enabled: true,
188 intensity: 10_000_000.,
189 range: 100.0,
190 shadow_depth_bias: 0.2,
191 ..default()
192 },
193 Transform::from_xyz(8.0, 16.0, 8.0),
194 ));
195
196 // ground plane
197 commands.spawn((
198 Mesh3d(meshes.add(Plane3d::default().mesh().size(50.0, 50.0).subdivisions(10))),
199 MeshMaterial3d(materials.add(Color::from(SILVER))),
200 ));
201
202 commands.spawn((
203 Camera3d::default(),
204 Transform::from_xyz(0.0, 7., 14.0).looking_at(Vec3::new(0., 1., 0.), Vec3::Y),
205 ));
206
207 let mut text = "\
208 Press 'R' to pause/resume rotation\n\
209 Press 'Tab' to cycle through rows"
210 .to_string();
211 #[cfg(not(target_arch = "wasm32"))]
212 text.push_str("\nPress 'Space' to toggle wireframes");
213
214 commands.spawn((
215 Text::new(text),
216 Node {
217 position_type: PositionType::Absolute,
218 top: px(12),
219 left: px(12),
220 ..default()
221 },
222 ));
223}Sourcepub fn new_unchecked(vertices: impl IntoIterator<Item = Vec2>) -> ConvexPolygon
pub fn new_unchecked(vertices: impl IntoIterator<Item = Vec2>) -> ConvexPolygon
Create a ConvexPolygon from its vertices, without checks.
Use this version only if you know that the vertices make up a convex polygon.
Trait Implementations§
Source§impl Bounded2d for ConvexPolygon
impl Bounded2d for ConvexPolygon
Source§fn aabb_2d(&self, isometry: impl Into<Isometry2d>) -> Aabb2d
fn aabb_2d(&self, isometry: impl Into<Isometry2d>) -> Aabb2d
Get an axis-aligned bounding box for the shape translated and rotated by the given isometry.
Source§fn bounding_circle(&self, isometry: impl Into<Isometry2d>) -> BoundingCircle
fn bounding_circle(&self, isometry: impl Into<Isometry2d>) -> BoundingCircle
Get a bounding circle for the shape translated and rotated by the given isometry.
Source§impl Clone for ConvexPolygon
impl Clone for ConvexPolygon
Source§fn clone(&self) -> ConvexPolygon
fn clone(&self) -> ConvexPolygon
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ConvexPolygon
impl Debug for ConvexPolygon
Source§impl<'de> Deserialize<'de> for ConvexPolygon
impl<'de> Deserialize<'de> for ConvexPolygon
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ConvexPolygon, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ConvexPolygon, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<ConvexPolygon> for Polygon
impl From<ConvexPolygon> for Polygon
Source§fn from(val: ConvexPolygon) -> Polygon
fn from(val: ConvexPolygon) -> Polygon
Converts to this type from the input type.
Source§impl From<ConvexPolygon> for Mesh
impl From<ConvexPolygon> for Mesh
Source§fn from(polygon: ConvexPolygon) -> Mesh
fn from(polygon: ConvexPolygon) -> Mesh
Converts to this type from the input type.
Source§impl FromArg for ConvexPolygon
impl FromArg for ConvexPolygon
Source§impl FromReflect for ConvexPolygon
impl FromReflect for ConvexPolygon
Source§fn from_reflect(
reflect: &(dyn PartialReflect + 'static),
) -> Option<ConvexPolygon>
fn from_reflect( reflect: &(dyn PartialReflect + 'static), ) -> Option<ConvexPolygon>
Constructs a concrete instance of
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>>
Attempts to downcast the given value to
Self using,
constructing the value using from_reflect if that fails. Read moreSource§impl GetOwnership for ConvexPolygon
impl GetOwnership for ConvexPolygon
Source§impl GetTypeRegistration for ConvexPolygon
impl GetTypeRegistration for ConvexPolygon
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
Returns the default
TypeRegistration for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Registers other types needed by this type. Read more
Source§impl IntoReturn for ConvexPolygon
impl IntoReturn for ConvexPolygon
Source§fn into_return<'into_return>(self) -> Return<'into_return>where
ConvexPolygon: 'into_return,
fn into_return<'into_return>(self) -> Return<'into_return>where
ConvexPolygon: 'into_return,
Source§impl Meshable for ConvexPolygon
impl Meshable for ConvexPolygon
Source§impl PartialEq for ConvexPolygon
impl PartialEq for ConvexPolygon
Source§fn eq(&self, other: &ConvexPolygon) -> bool
fn eq(&self, other: &ConvexPolygon) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl PartialReflect for ConvexPolygon
impl PartialReflect for ConvexPolygon
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
Returns a zero-sized enumeration of “kinds” of type. Read more
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Returns an immutable enumeration of “kinds” of type. Read more
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Returns a mutable enumeration of “kinds” of type. Read more
Source§fn reflect_owned(self: Box<ConvexPolygon>) -> ReflectOwned
fn reflect_owned(self: Box<ConvexPolygon>) -> ReflectOwned
Returns an owned enumeration of “kinds” of type. Read more
Source§fn try_into_reflect(
self: Box<ConvexPolygon>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<ConvexPolygon>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Attempts to cast this type to a boxed, fully-reflected value.
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Attempts to cast this type to a fully-reflected value.
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)>
Attempts to cast this type to a mutable, fully-reflected value.
Source§fn into_partial_reflect(self: Box<ConvexPolygon>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<ConvexPolygon>) -> Box<dyn PartialReflect>
Casts this type to a boxed, reflected value. Read more
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Casts this type to a reflected value. Read more
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Casts this type to a mutable, reflected value. Read more
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Returns a “partial equality” comparison result. Read more
Source§fn reflect_partial_cmp(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<Ordering>
fn reflect_partial_cmp( &self, value: &(dyn PartialReflect + 'static), ) -> Option<Ordering>
Returns a “partial comparison” result. Read more
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Debug formatter for the value. Read more
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Attempts to clone
Self using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Applies a reflected value to this value. Read more
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>
For a type implementing
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>
Returns a hash of the value (which includes the type). Read more
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Indicates whether or not this type is a dynamic type. Read more
impl Primitive2d for ConvexPolygon
Source§impl Reflect for ConvexPolygon
impl Reflect for ConvexPolygon
Source§fn into_any(self: Box<ConvexPolygon>) -> Box<dyn Any>
fn into_any(self: Box<ConvexPolygon>) -> Box<dyn Any>
Returns the value as a
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)
Returns the value as a
&mut dyn Any. Read moreSource§fn into_reflect(self: Box<ConvexPolygon>) -> Box<dyn Reflect>
fn into_reflect(self: Box<ConvexPolygon>) -> Box<dyn Reflect>
Casts this type to a boxed, fully-reflected value.
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Casts this type to a fully-reflected value.
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Casts this type to a mutable, fully-reflected value.
Source§impl Serialize for ConvexPolygon
impl Serialize for ConvexPolygon
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,
Serialize this value into the given Serde serializer. Read more
Source§impl Struct for ConvexPolygon
impl Struct for ConvexPolygon
Source§fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
Gets a reference to the value of the field named
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)>
Gets a mutable reference to the value of the field named
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)>
Gets a reference to the value of the field with index
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)>
Gets a mutable reference to the value of the field with index
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>
Gets the index of the field with the given name.
Source§fn iter_fields(&self) -> FieldIter<'_> ⓘ
fn iter_fields(&self) -> FieldIter<'_> ⓘ
Returns an iterator over the values of the reflectable fields for this struct.
Source§fn to_dynamic_struct(&self) -> DynamicStruct
fn to_dynamic_struct(&self) -> DynamicStruct
Creates a new
DynamicStruct from this struct.Source§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
Will return
None if TypeInfo is not available.impl StructuralPartialEq for ConvexPolygon
Source§impl TryFrom<Polygon> for ConvexPolygon
impl TryFrom<Polygon> for ConvexPolygon
Source§type Error = ConvexPolygonError
type Error = ConvexPolygonError
The type returned in the event of a conversion error.
Source§fn try_from(
val: Polygon,
) -> Result<ConvexPolygon, <ConvexPolygon as TryFrom<Polygon>>::Error>
fn try_from( val: Polygon, ) -> Result<ConvexPolygon, <ConvexPolygon as TryFrom<Polygon>>::Error>
Performs the conversion.
Source§impl TypePath for ConvexPolygon
impl TypePath for ConvexPolygon
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Returns the fully qualified path of the underlying type. Read more
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Returns a short, pretty-print enabled path to the type. Read more
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 ConvexPolygon
impl RefUnwindSafe for ConvexPolygon
impl Send for ConvexPolygon
impl Sync for ConvexPolygon
impl Unpin for ConvexPolygon
impl UnsafeUnpin for ConvexPolygon
impl UnwindSafe for ConvexPolygon
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
Return the
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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)
Converts
&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)
Converts
&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>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
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)
Convert
&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)
Convert
&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
See
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>
See
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
See
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
See
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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<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>>
Returns a reference to the value specified by
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>>
Returns a mutable reference to the value specified by
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,
Returns a statically typed reference to the value specified by
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,
Returns a statically typed mutable reference to the value specified by
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
Create an instance of this type from an initialization function
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> ⓘ
Converts
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> ⓘ
Converts
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>
Converts this type into the system output type.
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<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,
Pipes by value. This is generally the method you want to use. Read more
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,
Borrows
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,
Mutably borrows
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
Borrows
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
Mutably borrows
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
Borrows
self, then passes self.deref() into the pipe function.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
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
Convert from a type to another type.
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
Convert from a type to another type.
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.tap_deref() only in debug builds, and is erased in release
builds.Source§impl<T, U> ToSample<U> for Twhere
U: FromSample<T>,
impl<T, U> ToSample<U> for Twhere
U: FromSample<T>,
fn to_sample_(self) -> U
Source§impl<T> TypeData for T
impl<T> TypeData for T
Source§fn clone_type_data(&self) -> Box<dyn TypeData>
fn clone_type_data(&self) -> Box<dyn TypeData>
Creates a type-erased clone of this value.