Enum heron_core::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>,
border_radius: Option<f32>,
},
HeightField {
size: Vec2,
heights: Vec<Vec<f32>>,
},
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
Self: Send + Sync + 'static,
impl Component for CollisionShapewhere
Self: Send + Sync + 'static,
type Storage = TableStorage
sourceimpl Debug for CollisionShape
impl Debug for CollisionShape
sourceimpl Default for CollisionShape
impl Default for 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 as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any
.sourcefn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
sourcefn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
sourcefn clone_value(&self) -> Box<dyn Reflect>
fn clone_value(&self) -> Box<dyn Reflect>
Reflect
trait object. Read moresourcefn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
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 more