pub struct Collider {
pub(crate) coll_type: ColliderType,
pub(crate) shape: SharedShape,
pub(crate) mprops: ColliderMassProps,
pub(crate) changes: ColliderChanges,
pub(crate) parent: Option<ColliderParent>,
pub(crate) pos: ColliderPosition,
pub(crate) material: ColliderMaterial,
pub(crate) flags: ColliderFlags,
pub(crate) bf_data: ColliderBroadPhaseData,
contact_force_event_threshold: f32,
pub user_data: u128,
}
Expand description
A geometric entity that can be attached to a body so it can be affected by contacts and proximity queries.
To build a new collider, use the ColliderBuilder
structure.
Fields§
§coll_type: ColliderType
§shape: SharedShape
§mprops: ColliderMassProps
§changes: ColliderChanges
§parent: Option<ColliderParent>
§pos: ColliderPosition
§material: ColliderMaterial
§flags: ColliderFlags
§bf_data: ColliderBroadPhaseData
§contact_force_event_threshold: f32
§user_data: u128
User-defined data associated to this collider.
Implementations§
§impl Collider
impl Collider
pub fn internal_broad_phase_proxy_index(&self) -> u32
pub fn internal_broad_phase_proxy_index(&self) -> u32
An internal index associated to this collider by the broad-phase algorithm.
pub fn set_internal_broad_phase_proxy_index(&mut self, id: u32)
pub fn set_internal_broad_phase_proxy_index(&mut self, id: u32)
Sets the internal index associated to this collider by the broad-phase algorithm.
This must not be called, unless you are implementing your own custom broad-phase that require storing an index in the collider struct. Modifying that index outside of a custom broad-phase code will most certainly break the physics engine.
pub fn parent(&self) -> Option<RigidBodyHandle>
pub fn parent(&self) -> Option<RigidBodyHandle>
The rigid body this collider is attached to.
pub fn copy_from(&mut self, other: &Collider)
pub fn copy_from(&mut self, other: &Collider)
Copy all the characteristics from other
to self
.
If you have a mutable reference to a collider collider: &mut Collider
, attempting to
assign it a whole new collider instance, e.g., *collider = ColliderBuilder::ball(0.5).build()
,
will crash due to some internal indices being overwritten. Instead, use
collider.copy_from(&ColliderBuilder::ball(0.5).build())
.
This method will allow you to set most characteristics of this collider from another collider instance without causing any breakage.
This method cannot be used for reparenting a collider. Therefore, the parent of the
other
(if any), as well as its relative position to that parent will not be copied into
self
.
The pose of other
will only copied into self
if self
doesn’t have a parent (if it has
a parent, its position is directly controlled by the parent rigid-body).
pub fn active_hooks(&self) -> ActiveHooks
pub fn active_hooks(&self) -> ActiveHooks
The physics hooks enabled for this collider.
pub fn set_active_hooks(&mut self, active_hooks: ActiveHooks)
pub fn set_active_hooks(&mut self, active_hooks: ActiveHooks)
Sets the physics hooks enabled for this collider.
pub fn active_events(&self) -> ActiveEvents
pub fn active_events(&self) -> ActiveEvents
The events enabled for this collider.
pub fn set_active_events(&mut self, active_events: ActiveEvents)
pub fn set_active_events(&mut self, active_events: ActiveEvents)
Sets the events enabled for this collider.
pub fn active_collision_types(&self) -> ActiveCollisionTypes
pub fn active_collision_types(&self) -> ActiveCollisionTypes
The collision types enabled for this collider.
pub fn set_active_collision_types(
&mut self,
active_collision_types: ActiveCollisionTypes,
)
pub fn set_active_collision_types( &mut self, active_collision_types: ActiveCollisionTypes, )
Sets the collision types enabled for this collider.
pub fn set_friction(&mut self, coefficient: f32)
pub fn set_friction(&mut self, coefficient: f32)
Sets the friction coefficient of this collider.
pub fn friction_combine_rule(&self) -> CoefficientCombineRule
pub fn friction_combine_rule(&self) -> CoefficientCombineRule
The combine rule used by this collider to combine its friction coefficient with the friction coefficient of the other collider it is in contact with.
pub fn set_friction_combine_rule(&mut self, rule: CoefficientCombineRule)
pub fn set_friction_combine_rule(&mut self, rule: CoefficientCombineRule)
Sets the combine rule used by this collider to combine its friction coefficient with the friction coefficient of the other collider it is in contact with.
pub fn restitution(&self) -> f32
pub fn restitution(&self) -> f32
The restitution coefficient of this collider.
pub fn set_restitution(&mut self, coefficient: f32)
pub fn set_restitution(&mut self, coefficient: f32)
Sets the restitution coefficient of this collider.
pub fn restitution_combine_rule(&self) -> CoefficientCombineRule
pub fn restitution_combine_rule(&self) -> CoefficientCombineRule
The combine rule used by this collider to combine its restitution coefficient with the restitution coefficient of the other collider it is in contact with.
pub fn set_restitution_combine_rule(&mut self, rule: CoefficientCombineRule)
pub fn set_restitution_combine_rule(&mut self, rule: CoefficientCombineRule)
Sets the combine rule used by this collider to combine its restitution coefficient with the restitution coefficient of the other collider it is in contact with.
pub fn set_contact_force_event_threshold(&mut self, threshold: f32)
pub fn set_contact_force_event_threshold(&mut self, threshold: f32)
Sets the total force magnitude beyond which a contact force event can be emitted.
pub fn set_sensor(&mut self, is_sensor: bool)
pub fn set_sensor(&mut self, is_sensor: bool)
Sets whether or not this is a sensor collider.
pub fn is_enabled(&self) -> bool
pub fn is_enabled(&self) -> bool
Is this collider enabled?
pub fn set_enabled(&mut self, enabled: bool)
pub fn set_enabled(&mut self, enabled: bool)
Sets whether or not this collider is enabled.
pub fn set_translation(
&mut self,
translation: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>,
)
pub fn set_translation( &mut self, translation: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, )
Sets the translational part of this collider’s position.
pub fn set_rotation(&mut self, rotation: Unit<Complex<f32>>)
pub fn set_rotation(&mut self, rotation: Unit<Complex<f32>>)
Sets the rotational part of this collider’s position.
pub fn set_position(&mut self, position: Isometry<f32, Unit<Complex<f32>>, 2>)
pub fn set_position(&mut self, position: Isometry<f32, Unit<Complex<f32>>, 2>)
Sets the position of this collider.
pub fn position(&self) -> &Isometry<f32, Unit<Complex<f32>>, 2>
pub fn position(&self) -> &Isometry<f32, Unit<Complex<f32>>, 2>
The world-space position of this collider.
pub fn translation(
&self,
) -> &Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>
pub fn translation( &self, ) -> &Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>
The translational part of this collider’s position.
pub fn position_wrt_parent(
&self,
) -> Option<&Isometry<f32, Unit<Complex<f32>>, 2>>
pub fn position_wrt_parent( &self, ) -> Option<&Isometry<f32, Unit<Complex<f32>>, 2>>
The position of this collider with respect to the body it is attached to.
pub fn set_translation_wrt_parent(
&mut self,
translation: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>,
)
pub fn set_translation_wrt_parent( &mut self, translation: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, )
Sets the translational part of this collider’s translation relative to its parent rigid-body.
pub fn set_rotation_wrt_parent(&mut self, rotation: f32)
pub fn set_rotation_wrt_parent(&mut self, rotation: f32)
Sets the rotational part of this collider’s rotaiton relative to its parent rigid-body.
pub fn set_position_wrt_parent(
&mut self,
pos_wrt_parent: Isometry<f32, Unit<Complex<f32>>, 2>,
)
pub fn set_position_wrt_parent( &mut self, pos_wrt_parent: Isometry<f32, Unit<Complex<f32>>, 2>, )
Sets the position of this collider with respect to its parent rigid-body.
Does nothing if the collider is not attached to a rigid-body.
pub fn collision_groups(&self) -> InteractionGroups
pub fn collision_groups(&self) -> InteractionGroups
The collision groups used by this collider.
pub fn set_collision_groups(&mut self, groups: InteractionGroups)
pub fn set_collision_groups(&mut self, groups: InteractionGroups)
Sets the collision groups of this collider.
pub fn solver_groups(&self) -> InteractionGroups
pub fn solver_groups(&self) -> InteractionGroups
The solver groups used by this collider.
pub fn set_solver_groups(&mut self, groups: InteractionGroups)
pub fn set_solver_groups(&mut self, groups: InteractionGroups)
Sets the solver groups of this collider.
pub fn material(&self) -> &ColliderMaterial
pub fn material(&self) -> &ColliderMaterial
The material (friction and restitution properties) of this collider.
pub fn set_density(&mut self, density: f32)
pub fn set_density(&mut self, density: f32)
Sets the uniform density of this collider.
This will override any previous mass-properties set by Self::set_density
,
Self::set_mass
, Self::set_mass_properties
, ColliderBuilder::density
,
ColliderBuilder::mass
, or ColliderBuilder::mass_properties
for this collider.
The mass and angular inertia of this collider will be computed automatically based on its shape.
pub fn set_mass(&mut self, mass: f32)
pub fn set_mass(&mut self, mass: f32)
Sets the mass of this collider.
This will override any previous mass-properties set by Self::set_density
,
Self::set_mass
, Self::set_mass_properties
, ColliderBuilder::density
,
ColliderBuilder::mass
, or ColliderBuilder::mass_properties
for this collider.
The angular inertia of this collider will be computed automatically based on its shape and this mass value.
pub fn set_mass_properties(&mut self, mass_properties: MassProperties)
pub fn set_mass_properties(&mut self, mass_properties: MassProperties)
Sets the mass properties of this collider.
This will override any previous mass-properties set by Self::set_density
,
Self::set_mass
, Self::set_mass_properties
, ColliderBuilder::density
,
ColliderBuilder::mass
, or ColliderBuilder::mass_properties
for this collider.
pub fn shape_mut(&mut self) -> &mut (dyn Shape + 'static)
pub fn shape_mut(&mut self) -> &mut (dyn Shape + 'static)
A mutable reference to the geometric shape of this collider.
If that shape is shared by multiple colliders, it will be
cloned first so that self
contains a unique copy of that
shape that you can modify.
pub fn set_shape(&mut self, shape: SharedShape)
pub fn set_shape(&mut self, shape: SharedShape)
Sets the shape of this collider.
Retrieve the SharedShape. Also see the shape()
function
pub fn compute_aabb(&self) -> Aabb
pub fn compute_aabb(&self) -> Aabb
Compute the axis-aligned bounding box of this collider.
pub fn compute_swept_aabb(
&self,
next_position: &Isometry<f32, Unit<Complex<f32>>, 2>,
) -> Aabb
pub fn compute_swept_aabb( &self, next_position: &Isometry<f32, Unit<Complex<f32>>, 2>, ) -> Aabb
Compute the axis-aligned bounding box of this collider moving from its current position
to the given next_position
pub fn mass_properties(&self) -> MassProperties
pub fn mass_properties(&self) -> MassProperties
Compute the local-space mass properties of this collider.
pub fn contact_force_event_threshold(&self) -> f32
pub fn contact_force_event_threshold(&self) -> f32
The total force magnitude beyond which a contact force event can be emitted.
Trait Implementations§
§impl From<ColliderBuilder> for Collider
impl From<ColliderBuilder> for Collider
§fn from(val: ColliderBuilder) -> Collider
fn from(val: ColliderBuilder) -> Collider
Auto Trait Implementations§
impl Freeze for Collider
impl !RefUnwindSafe for Collider
impl Send for Collider
impl Sync for Collider
impl Unpin for Collider
impl !UnwindSafe for Collider
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
[ShaderType
] for self
. When used in [AsBindGroup
]
derives, it is safe to assume that all images in self
exist.§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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
.§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
.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§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.§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.§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.§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.§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.§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.§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.§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.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§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
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§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 more§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 more§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
§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
§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.§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.§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> 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 more§fn 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.§impl<T> Tap for T
impl<T> Tap for T
§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 more§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 more§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 more§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 more§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 more§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 more§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.§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.§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.§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.§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.§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.§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.