Struct rapier2d::dynamics::RigidBodyBuilder

source ·
pub struct RigidBodyBuilder {
Show 14 fields pub position: Isometry<Real>, pub linvel: Vector<Real>, pub angvel: AngVector<Real>, pub gravity_scale: Real, pub linear_damping: Real, pub angular_damping: Real, pub can_sleep: bool, pub sleeping: bool, pub ccd_enabled: bool, pub soft_ccd_prediction: Real, pub dominance_group: i8, pub enabled: bool, pub user_data: u128, pub additional_solver_iterations: usize, /* private fields */
}
Expand description

A builder for rigid-bodies.

Fields§

§position: Isometry<Real>

The initial position of the rigid-body to be built.

§linvel: Vector<Real>

The linear velocity of the rigid-body to be built.

§angvel: AngVector<Real>

The angular velocity of the rigid-body to be built.

§gravity_scale: Real

The scale factor applied to the gravity affecting the rigid-body to be built, 1.0 by default.

§linear_damping: Real

Damping factor for gradually slowing down the translational motion of the rigid-body, 0.0 by default.

§angular_damping: Real

Damping factor for gradually slowing down the angular motion of the rigid-body, 0.0 by default.

§can_sleep: bool

Whether the rigid-body to be created can sleep if it reaches a dynamic equilibrium.

§sleeping: bool

Whether the rigid-body is to be created asleep.

§ccd_enabled: bool

Whether Continuous Collision-Detection is enabled for the rigid-body to be built.

CCD prevents tunneling, but may still allow limited interpenetration of colliders.

§soft_ccd_prediction: Real

The maximum prediction distance Soft Continuous Collision-Detection.

When set to 0, soft CCD is disabled. Soft-CCD helps prevent tunneling especially of slow-but-thin to moderately fast objects. The soft CCD prediction distance indicates how far in the object’s path the CCD algorithm is allowed to inspect. Large values can impact performance badly by increasing the work needed from the broad-phase.

It is a generally cheaper variant of regular CCD (that can be enabled with RigidBodyBuilder::ccd_enabled since it relies on predictive constraints instead of shape-cast and substeps.

§dominance_group: i8

The dominance group of the rigid-body to be built.

§enabled: bool

Will the rigid-body being built be enabled?

§user_data: u128

An arbitrary user-defined 128-bit integer associated to the rigid-bodies built by this builder.

§additional_solver_iterations: usize

The additional number of solver iterations run for this rigid-body and everything interacting with it.

See RigidBody::set_additional_solver_iterations for additional information.

Implementations§

source§

impl RigidBodyBuilder

source

pub fn new(body_type: RigidBodyType) -> Self

Initialize a new builder for a rigid body which is either fixed, dynamic, or kinematic.

source

pub fn new_static() -> Self

👎Deprecated: use RigidBodyBuilder::fixed() instead

Initializes the builder of a new fixed rigid body.

source

pub fn new_kinematic_velocity_based() -> Self

👎Deprecated: use RigidBodyBuilder::kinematic_velocity_based() instead

Initializes the builder of a new velocity-based kinematic rigid body.

source

pub fn new_kinematic_position_based() -> Self

👎Deprecated: use RigidBodyBuilder::kinematic_position_based() instead

Initializes the builder of a new position-based kinematic rigid body.

source

pub fn fixed() -> Self

Initializes the builder of a new fixed rigid body.

source

pub fn kinematic_velocity_based() -> Self

Initializes the builder of a new velocity-based kinematic rigid body.

source

pub fn kinematic_position_based() -> Self

Initializes the builder of a new position-based kinematic rigid body.

source

pub fn dynamic() -> Self

Initializes the builder of a new dynamic rigid body.

source

pub fn additional_solver_iterations(self, additional_iterations: usize) -> Self

Sets the additional number of solver iterations run for this rigid-body and everything interacting with it.

See RigidBody::set_additional_solver_iterations for additional information.

source

pub fn gravity_scale(self, scale_factor: Real) -> Self

Sets the scale applied to the gravity force affecting the rigid-body to be created.

source

pub fn dominance_group(self, group: i8) -> Self

Sets the dominance group of this rigid-body.

source

pub fn translation(self, translation: Vector<Real>) -> Self

Sets the initial translation of the rigid-body to be created.

source

pub fn rotation(self, angle: AngVector<Real>) -> Self

Sets the initial orientation of the rigid-body to be created.

source

pub fn position(self, pos: Isometry<Real>) -> Self

Sets the initial position (translation and orientation) of the rigid-body to be created.

source

pub fn user_data(self, data: u128) -> Self

An arbitrary user-defined 128-bit integer associated to the rigid-bodies built by this builder.

source

pub fn additional_mass_properties(self, mprops: MassProperties) -> Self

Sets the additional mass-properties of the rigid-body being built.

This will be overridden by a call to Self::additional_mass so it only makes sense to call either Self::additional_mass or Self::additional_mass_properties.

Note that “additional” means that the final mass-properties of the rigid-bodies depends on the initial mass-properties of the rigid-body (set by this method) to which is added the contributions of all the colliders with non-zero density attached to this rigid-body.

Therefore, if you want your provided mass-properties to be the final mass-properties of your rigid-body, don’t attach colliders to it, or only attach colliders with densities equal to zero.

source

pub fn additional_mass(self, mass: Real) -> Self

Sets the additional mass of the rigid-body being built.

This will be overridden by a call to Self::additional_mass_properties so it only makes sense to call either Self::additional_mass or Self::additional_mass_properties.

This is only the “additional” mass because the total mass of the rigid-body is equal to the sum of this additional mass and the mass computed from the colliders (with non-zero densities) attached to this rigid-body.

The total angular inertia of the rigid-body will be scaled automatically based on this additional mass. If this scaling effect isn’t desired, use Self::additional_mass_properties instead of this method.

§Parameters
  • mass- The mass that will be added to the created rigid-body.
source

pub fn locked_axes(self, locked_axes: LockedAxes) -> Self

Sets the axes along which this rigid-body cannot translate or rotate.

source

pub fn lock_translations(self) -> Self

Prevents this rigid-body from translating because of forces.

source

pub fn enabled_translations( self, allow_translations_x: bool, allow_translations_y: bool ) -> Self

Only allow translations of this rigid-body around specific coordinate axes.

source

pub fn restrict_translations( self, allow_translations_x: bool, allow_translations_y: bool ) -> Self

👎Deprecated: Use enabled_translations instead

Only allow translations of this rigid-body around specific coordinate axes.

source

pub fn lock_rotations(self) -> Self

Prevents this rigid-body from rotating because of forces.

source

pub fn linear_damping(self, factor: Real) -> Self

Sets the damping factor for the linear part of the rigid-body motion.

The higher the linear damping factor is, the more quickly the rigid-body will slow-down its translational movement.

source

pub fn angular_damping(self, factor: Real) -> Self

Sets the damping factor for the angular part of the rigid-body motion.

The higher the angular damping factor is, the more quickly the rigid-body will slow-down its rotational movement.

source

pub fn linvel(self, linvel: Vector<Real>) -> Self

Sets the initial linear velocity of the rigid-body to be created.

source

pub fn angvel(self, angvel: AngVector<Real>) -> Self

Sets the initial angular velocity of the rigid-body to be created.

source

pub fn can_sleep(self, can_sleep: bool) -> Self

Sets whether the rigid-body to be created can sleep if it reaches a dynamic equilibrium.

source

pub fn ccd_enabled(self, enabled: bool) -> Self

Sets whether Continuous Collision-Detection is enabled for this rigid-body.

CCD prevents tunneling, but may still allow limited interpenetration of colliders.

source

pub fn soft_ccd_prediction(self, prediction_distance: Real) -> Self

Sets the maximum prediction distance Soft Continuous Collision-Detection.

When set to 0, soft-CCD is disabled. Soft-CCD helps prevent tunneling especially of slow-but-thin to moderately fast objects. The soft CCD prediction distance indicates how far in the object’s path the CCD algorithm is allowed to inspect. Large values can impact performance badly by increasing the work needed from the broad-phase.

It is a generally cheaper variant of regular CCD (that can be enabled with RigidBodyBuilder::ccd_enabled since it relies on predictive constraints instead of shape-cast and substeps.

source

pub fn sleeping(self, sleeping: bool) -> Self

Sets whether the rigid-body is to be created asleep.

source

pub fn enabled(self, enabled: bool) -> Self

Enable or disable the rigid-body after its creation.

source

pub fn build(&self) -> RigidBody

Build a new rigid-body with the parameters configured with this builder.

Trait Implementations§

source§

impl Clone for RigidBodyBuilder

source§

fn clone(&self) -> RigidBodyBuilder

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

impl Debug for RigidBodyBuilder

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<RigidBodyBuilder> for RigidBody

source§

fn from(val: RigidBodyBuilder) -> RigidBody

Converts to this type from the input type.
source§

impl PartialEq for RigidBodyBuilder

source§

fn eq(&self, other: &RigidBodyBuilder) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for RigidBodyBuilder

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
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> Downcast for T
where T: Any,

source§

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>

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)

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)

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> DowncastSync for T
where T: Any + Send + Sync,

source§

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

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

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

Initializes a with the given initializer. Read more
source§

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

Dereferences the given pointer. Read more
source§

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

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

§

type Output = T

Should always be Self
source§

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

source§

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

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

fn is_in_subset(&self) -> bool

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

fn to_subset_unchecked(&self) -> SS

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

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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
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.
source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,