Enum heron::CollisionShape
source · #[non_exhaustive]
pub enum CollisionShape {
Sphere {
radius: f32,
},
Capsule {
half_segment: f32,
radius: f32,
},
Cuboid {
half_extends: Vec3,
border_radius: Option<f32>,
},
ConvexHull {
points: Vec<Vec3, Global>,
border_radius: Option<f32>,
},
HeightField {
size: Vec2,
heights: Vec<Vec<f32, Global>, Global>,
},
Cone {
half_height: f32,
radius: f32,
},
Cylinder {
half_height: f32,
radius: f32,
},
Custom {
shape: CustomCollisionShape,
},
}
Expand description
Components that defines the collision shape of a rigid body
The collision shape will be attached to the RigidBody
of the same entity.
If there isn’t any RigidBody
in the entity,
the collision shape will be attached to the RigidBody
of the parent entity.
Example
fn spawn(mut commands: Commands) {
commands.spawn_bundle(todo!("Spawn your sprite/mesh, incl. at least a GlobalTransform"))
.insert(RigidBody::Dynamic) // Create a dynamic rigid body
.insert(CollisionShape::Sphere { radius: 1.0 }); // Attach a collision shape
}
Variants (Non-exhaustive)
This enum is marked as non-exhaustive
Sphere
Fields
radius: f32
Radius of the sphere
A sphere (or circle in 2d) shape defined by its radius
Capsule
Fields
half_segment: f32
Distance from the center of the capsule to the center of an hemisphere.
radius: f32
Radius of the hemispheres
A capsule shape
Cuboid
Fields
half_extends: Vec3
The half extends on each axis. (x = half width, y = half height, z = half depth)
In 2d the z
axis is ignored
A cuboid/rectangular shape
ConvexHull
Fields
A convex polygon/polyhedron shape
HeightField
Fields
size: Vec2
The dimensions of the field.
In 2D, only the first element is taken into account.
A shape defined by the height of points.
This shape is usefull for floors with relief.
Cone
Fields
half_height: f32
Half of the height from the base of the cone to the top point
radius: f32
The radius of the base circle
A Cone shape, like a traffic cone, with a circular base
This shape is exclusive to the 3d API, you must enable the “3d” flag to use it.
For the 2d equivalent, look at Sphere
.
Cylinder
Fields
half_height: f32
Half of the height from the base of the cylinder to the top
radius: f32
The radius of the base circle
A Cylinder shape, it is a cirlce with a height
This shape is exclusive to the 3d API, you must enable the “3d” flag to use it.
For the 2d equivalent, look at Sphere
.
Custom
Fields
shape: CustomCollisionShape
The custom collision shape to use
A Custom shape, the actual shape is abstracted, and will be determined by a corresponding backend depending on the implementation details
See CustomCollisionShape
for more info.
Trait Implementations
sourceimpl Clone for CollisionShape
impl Clone for CollisionShape
sourcefn clone(&self) -> CollisionShape
fn clone(&self) -> CollisionShape
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl Component for CollisionShapewhere
CollisionShape: 'static + Send + Sync,
impl Component for CollisionShapewhere
CollisionShape: 'static + Send + Sync,
type Storage = TableStorage
sourceimpl Debug for CollisionShape
impl Debug for CollisionShape
sourceimpl Default for CollisionShape
impl Default for CollisionShape
sourcefn default() -> CollisionShape
fn default() -> CollisionShape
sourceimpl GetTypeRegistration for CollisionShape
impl GetTypeRegistration for CollisionShape
fn get_type_registration() -> TypeRegistration
sourceimpl Reflect for CollisionShape
impl Reflect for CollisionShape
sourcefn get_type_info(&self) -> &'static TypeInfo
fn get_type_info(&self) -> &'static TypeInfo
TypeInfo
] of the underlying type. Read moresourcefn into_any(self: Box<CollisionShape, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<CollisionShape, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Any>
.sourcefn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
.sourcefn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
sourcefn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
sourcefn clone_value(&self) -> Box<dyn Reflect + 'static, Global>
fn clone_value(&self) -> Box<dyn Reflect + 'static, Global>
Reflect
trait object. Read moresourcefn apply(&mut self, value: &(dyn Reflect + 'static))
fn apply(&mut self, value: &(dyn Reflect + 'static))
sourcefn set(
&mut self,
value: Box<dyn Reflect + 'static, Global>
) -> Result<(), Box<dyn Reflect + 'static, Global>>
fn set(
&mut self,
value: Box<dyn Reflect + 'static, Global>
) -> Result<(), Box<dyn Reflect + 'static, Global>>
sourcefn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
sourcefn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
fn reflect_partial_eq(&self, _value: &(dyn Reflect + 'static)) -> Option<bool>
fn reflect_partial_eq(&self, _value: &(dyn Reflect + 'static)) -> Option<bool>
fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
Auto Trait Implementations
impl !RefUnwindSafe for CollisionShape
impl Send for CollisionShape
impl Sync for CollisionShape
impl Unpin for CollisionShape
impl !UnwindSafe for CollisionShape
Blanket Implementations
impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
fn as_bind_group_shader_type(
&self,
_images: &HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState, Global>
) -> U
fn as_bind_group_shader_type(
&self,
_images: &HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState, Global>
) -> U
T
[ShaderType
] for self
. When used in [AsBindGroup
]
derives, it is safe to assume that all images in self
exist. Read moresourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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 morefn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read morefn 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. Read morefn 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. Read moreimpl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given [World]impl<T> GetPath for Twhere
T: Reflect,
impl<T> GetPath for Twhere
T: Reflect,
fn path<'r, 'p>(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
fn path<'r, 'p>(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read morefn path_mut<'r, 'p>(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn path_mut<'r, 'p>(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read morefn get_path<T, 'r, 'p>(
&'r self,
path: &'p str
) -> Result<&'r T, ReflectPathError<'p>>where
T: Reflect,
fn get_path<T, 'r, 'p>(
&'r self,
path: &'p str
) -> Result<&'r T, ReflectPathError<'p>>where
T: Reflect,
path
.fn get_path_mut<T, 'r, 'p>(
&'r mut self,
path: &'p str
) -> Result<&'r mut T, ReflectPathError<'p>>where
T: Reflect,
fn get_path_mut<T, 'r, 'p>(
&'r mut self,
path: &'p str
) -> Result<&'r mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moresourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pointable for T
impl<T> Pointable for T
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read morefn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.