Struct jumpy::core::physics::rapier::Collider

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

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)

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>

The rigid body this collider is attached to.

pub fn is_sensor(&self) -> bool

Is this collider a sensor?

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

The physics hooks enabled for this collider.

pub fn set_active_hooks(&mut self, active_hooks: ActiveHooks)

Sets the physics hooks enabled for this collider.

pub fn active_events(&self) -> ActiveEvents

The events enabled for this collider.

pub fn set_active_events(&mut self, active_events: ActiveEvents)

Sets the events enabled for this collider.

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, )

Sets the collision types enabled for this collider.

pub fn friction(&self) -> f32

The friction coefficient of this collider.

pub fn set_friction(&mut self, coefficient: f32)

Sets the friction coefficient of this collider.

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)

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

The restitution coefficient of this collider.

pub fn set_restitution(&mut self, coefficient: f32)

Sets the restitution coefficient of this collider.

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)

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)

Sets the total force magnitude beyond which a contact force event can be emitted.

pub fn set_sensor(&mut self, is_sensor: bool)

Sets whether or not this is a sensor collider.

pub fn is_enabled(&self) -> bool

Is this collider enabled?

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>>, )

Sets the translational part of this collider’s position.

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>)

Sets the position of this collider.

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>>

The translational part of this collider’s position.

pub fn rotation(&self) -> &Unit<Complex<f32>>

The rotational part of this collider’s position.

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>>, )

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)

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>, )

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

The collision groups used by this collider.

pub fn set_collision_groups(&mut self, groups: InteractionGroups)

Sets the collision groups of this collider.

pub fn solver_groups(&self) -> InteractionGroups

The solver groups used by this collider.

pub fn set_solver_groups(&mut self, groups: InteractionGroups)

Sets the solver groups of this collider.

pub fn material(&self) -> &ColliderMaterial

The material (friction and restitution properties) of this collider.

pub fn volume(&self) -> f32

The volume (or surface in 2D) of this collider.

pub fn density(&self) -> f32

The density of this collider.

pub fn mass(&self) -> f32

The mass of this collider.

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)

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)

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(&self) -> &(dyn Shape + 'static)

The geometric shape of this collider.

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)

Sets the shape of this collider.

pub fn shared_shape(&self) -> &SharedShape

Retrieve the SharedShape. Also see the shape() function

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

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

Compute the local-space mass properties of this collider.

pub fn contact_force_event_threshold(&self) -> f32

The total force magnitude beyond which a contact force event can be emitted.

Trait Implementations§

§

impl Clone for Collider

§

fn clone(&self) -> Collider

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl From<ColliderBuilder> for Collider

§

fn from(val: ColliderBuilder) -> Collider

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U

Return the 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 T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: 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.
§

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.
§

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.
§

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.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynClone for T
where T: Clone,

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows 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) -> R
where R: 'a,

Mutably borrows 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> RawClone for T
where T: Clone,

§

unsafe fn raw_clone(src: *const c_void, dst: *mut c_void)

Write the default value of the type to the pointer. Read more
§

fn raw_clone_cb() -> Unsafe<&'static (dyn Fn(*const c_void, *mut c_void) + Send + Sync)>

Get a callback suitable for [SchemaData].
§

impl<T> RawDrop for T

§

unsafe fn raw_drop(ptr: *mut c_void)

Write the default value of the type to the pointer. Read more
§

fn raw_drop_cb() -> Unsafe<&'static (dyn Fn(*mut c_void) + Send + Sync)>

Get a callback suitable for [SchemaData].
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> TypeData for T
where T: 'static + Send + Sync + Clone,

§

fn clone_type_data(&self) -> Box<dyn TypeData>

§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

§

impl<T> SerializableAny for T
where T: 'static + Any + Clone + for<'a> Send + Sync,