pub struct RigidBodyBuilder {Show 15 fields
pub position: Isometry<f32>,
pub linvel: Vector<f32>,
pub angvel: AngVector<f32>,
pub gravity_scale: f32,
pub linear_damping: f32,
pub angular_damping: f32,
pub body_type: RigidBodyType,
pub can_sleep: bool,
pub sleeping: bool,
pub ccd_enabled: bool,
pub soft_ccd_prediction: f32,
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<f32>
The initial position of the rigid-body to be built.
linvel: Vector<f32>
The linear velocity of the rigid-body to be built.
angvel: AngVector<f32>
The angular velocity of the rigid-body to be built.
gravity_scale: f32
The scale factor applied to the gravity affecting the rigid-body to be built, 1.0
by default.
linear_damping: f32
Damping factor for gradually slowing down the translational motion of the rigid-body, 0.0
by default.
angular_damping: f32
Damping factor for gradually slowing down the angular motion of the rigid-body, 0.0
by default.
body_type: RigidBodyType
The type of rigid-body being constructed.
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: f32
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
impl RigidBodyBuilder
Sourcepub fn new(body_type: RigidBodyType) -> Self
pub fn new(body_type: RigidBodyType) -> Self
Initialize a new builder for a rigid body which is either fixed, dynamic, or kinematic.
Sourcepub fn new_static() -> Self
👎Deprecated: use RigidBodyBuilder::fixed()
instead
pub fn new_static() -> Self
RigidBodyBuilder::fixed()
insteadInitializes the builder of a new fixed rigid body.
Sourcepub fn new_kinematic_velocity_based() -> Self
👎Deprecated: use RigidBodyBuilder::kinematic_velocity_based()
instead
pub fn new_kinematic_velocity_based() -> Self
RigidBodyBuilder::kinematic_velocity_based()
insteadInitializes the builder of a new velocity-based kinematic rigid body.
Sourcepub fn new_kinematic_position_based() -> Self
👎Deprecated: use RigidBodyBuilder::kinematic_position_based()
instead
pub fn new_kinematic_position_based() -> Self
RigidBodyBuilder::kinematic_position_based()
insteadInitializes the builder of a new position-based kinematic rigid body.
Sourcepub fn kinematic_velocity_based() -> Self
pub fn kinematic_velocity_based() -> Self
Initializes the builder of a new velocity-based kinematic rigid body.
Sourcepub fn kinematic_position_based() -> Self
pub fn kinematic_position_based() -> Self
Initializes the builder of a new position-based kinematic rigid body.
Sourcepub fn additional_solver_iterations(self, additional_iterations: usize) -> Self
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.
Sourcepub fn gravity_scale(self, scale_factor: f32) -> Self
pub fn gravity_scale(self, scale_factor: f32) -> Self
Sets the scale applied to the gravity force affecting the rigid-body to be created.
Sourcepub fn dominance_group(self, group: i8) -> Self
pub fn dominance_group(self, group: i8) -> Self
Sets the dominance group of this rigid-body.
Sourcepub fn translation(self, translation: Vector<f32>) -> Self
pub fn translation(self, translation: Vector<f32>) -> Self
Sets the initial translation of the rigid-body to be created.
Sourcepub fn rotation(self, angle: AngVector<f32>) -> Self
pub fn rotation(self, angle: AngVector<f32>) -> Self
Sets the initial orientation of the rigid-body to be created.
Sourcepub fn position(self, pos: Isometry<f32>) -> Self
pub fn position(self, pos: Isometry<f32>) -> Self
Sets the initial position (translation and orientation) of the rigid-body to be created.
Sourcepub fn user_data(self, data: u128) -> Self
pub fn user_data(self, data: u128) -> Self
An arbitrary user-defined 128-bit integer associated to the rigid-bodies built by this builder.
Sourcepub fn additional_mass_properties(self, mprops: MassProperties) -> Self
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.
Sourcepub fn additional_mass(self, mass: f32) -> Self
pub fn additional_mass(self, mass: f32) -> 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.
Sourcepub fn locked_axes(self, locked_axes: LockedAxes) -> Self
pub fn locked_axes(self, locked_axes: LockedAxes) -> Self
Sets the axes along which this rigid-body cannot translate or rotate.
Sourcepub fn lock_translations(self) -> Self
pub fn lock_translations(self) -> Self
Prevents this rigid-body from translating because of forces.
Sourcepub fn enabled_translations(
self,
allow_translations_x: bool,
allow_translations_y: bool,
allow_translations_z: bool,
) -> Self
pub fn enabled_translations( self, allow_translations_x: bool, allow_translations_y: bool, allow_translations_z: bool, ) -> Self
Only allow translations of this rigid-body around specific coordinate axes.
Sourcepub fn restrict_translations(
self,
allow_translations_x: bool,
allow_translations_y: bool,
allow_translations_z: bool,
) -> Self
👎Deprecated: Use enabled_translations
instead
pub fn restrict_translations( self, allow_translations_x: bool, allow_translations_y: bool, allow_translations_z: bool, ) -> Self
enabled_translations
insteadOnly allow translations of this rigid-body around specific coordinate axes.
Sourcepub fn lock_rotations(self) -> Self
pub fn lock_rotations(self) -> Self
Prevents this rigid-body from rotating because of forces.
Sourcepub fn enabled_rotations(
self,
allow_rotations_x: bool,
allow_rotations_y: bool,
allow_rotations_z: bool,
) -> Self
pub fn enabled_rotations( self, allow_rotations_x: bool, allow_rotations_y: bool, allow_rotations_z: bool, ) -> Self
Only allow rotations of this rigid-body around specific coordinate axes.
Sourcepub fn restrict_rotations(
self,
allow_rotations_x: bool,
allow_rotations_y: bool,
allow_rotations_z: bool,
) -> Self
👎Deprecated: Use enabled_rotations
instead
pub fn restrict_rotations( self, allow_rotations_x: bool, allow_rotations_y: bool, allow_rotations_z: bool, ) -> Self
enabled_rotations
insteadLocks or unlocks rotations of this rigid-body along each cartesian axes.
Sourcepub fn linear_damping(self, factor: f32) -> Self
pub fn linear_damping(self, factor: f32) -> 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.
Sourcepub fn angular_damping(self, factor: f32) -> Self
pub fn angular_damping(self, factor: f32) -> 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.
Sourcepub fn linvel(self, linvel: Vector<f32>) -> Self
pub fn linvel(self, linvel: Vector<f32>) -> Self
Sets the initial linear velocity of the rigid-body to be created.
Sourcepub fn angvel(self, angvel: AngVector<f32>) -> Self
pub fn angvel(self, angvel: AngVector<f32>) -> Self
Sets the initial angular velocity of the rigid-body to be created.
Sourcepub fn can_sleep(self, can_sleep: bool) -> Self
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.
Sourcepub fn ccd_enabled(self, enabled: bool) -> Self
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.
Sourcepub fn soft_ccd_prediction(self, prediction_distance: f32) -> Self
pub fn soft_ccd_prediction(self, prediction_distance: f32) -> 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.
Sourcepub fn sleeping(self, sleeping: bool) -> Self
pub fn sleeping(self, sleeping: bool) -> Self
Sets whether the rigid-body is to be created asleep.
Trait Implementations§
Source§impl Clone for RigidBodyBuilder
impl Clone for RigidBodyBuilder
Source§fn clone(&self) -> RigidBodyBuilder
fn clone(&self) -> RigidBodyBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RigidBodyBuilder
impl Debug for RigidBodyBuilder
Source§impl Default for RigidBodyBuilder
impl Default for RigidBodyBuilder
Source§impl From<RigidBodyBuilder> for RigidBody
impl From<RigidBodyBuilder> for RigidBody
Source§fn from(val: RigidBodyBuilder) -> RigidBody
fn from(val: RigidBodyBuilder) -> RigidBody
Source§impl PartialEq for RigidBodyBuilder
impl PartialEq for RigidBodyBuilder
impl StructuralPartialEq for RigidBodyBuilder
Auto Trait Implementations§
impl Freeze for RigidBodyBuilder
impl RefUnwindSafe for RigidBodyBuilder
impl Send for RigidBodyBuilder
impl Sync for RigidBodyBuilder
impl Unpin for RigidBodyBuilder
impl UnwindSafe for RigidBodyBuilder
Blanket Implementations§
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§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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
.Source§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
.Source§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.Source§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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.