pub struct RigidBody {
pub user_data: u128,
/* private fields */
}
Expand description
A rigid body.
To create a new rigid-body, use the RigidBodyBuilder
structure.
Fields
user_data: u128
User-defined data associated to this rigid-body.
Implementations
sourceimpl RigidBody
impl RigidBody
sourcepub fn activation(&self) -> &RigidBodyActivation
pub fn activation(&self) -> &RigidBodyActivation
The activation status of this rigid-body.
sourcepub fn activation_mut(&mut self) -> &mut RigidBodyActivation
pub fn activation_mut(&mut self) -> &mut RigidBodyActivation
Mutable reference to the activation status of this rigid-body.
sourcepub fn linear_damping(&self) -> Real
pub fn linear_damping(&self) -> Real
The linear damping coefficient of this rigid-body.
sourcepub fn set_linear_damping(&mut self, damping: Real)
pub fn set_linear_damping(&mut self, damping: Real)
Sets the linear damping coefficient of this rigid-body.
sourcepub fn angular_damping(&self) -> Real
pub fn angular_damping(&self) -> Real
The angular damping coefficient of this rigid-body.
sourcepub fn set_angular_damping(&mut self, damping: Real)
pub fn set_angular_damping(&mut self, damping: Real)
Sets the angular damping coefficient of this rigid-body.
sourcepub fn body_type(&self) -> RigidBodyType
pub fn body_type(&self) -> RigidBodyType
The type of this rigid-body.
sourcepub fn set_body_type(&mut self, status: RigidBodyType)
pub fn set_body_type(&mut self, status: RigidBodyType)
Sets the type of this rigid-body.
sourcepub fn mass_properties(&self) -> &MassProperties
pub fn mass_properties(&self) -> &MassProperties
The mass properties of this rigid-body.
sourcepub fn effective_dominance_group(&self) -> i16
pub fn effective_dominance_group(&self) -> i16
The dominance group of this rigid-body.
This method always returns i8::MAX + 1
for non-dynamic
rigid-bodies.
sourcepub fn lock_rotations(&mut self, locked: bool, wake_up: bool)
pub fn lock_rotations(&mut self, locked: bool, wake_up: bool)
Locks or unlocks all the rotations of this rigid-body.
sourcepub fn restrict_rotations(
&mut self,
allow_rotations_x: bool,
allow_rotations_y: bool,
allow_rotations_z: bool,
wake_up: bool
)
pub fn restrict_rotations(
&mut self,
allow_rotations_x: bool,
allow_rotations_y: bool,
allow_rotations_z: bool,
wake_up: bool
)
Locks or unlocks rotations of this rigid-body along each cartesian axes.
sourcepub fn lock_translations(&mut self, locked: bool, wake_up: bool)
pub fn lock_translations(&mut self, locked: bool, wake_up: bool)
Locks or unlocks all the rotations of this rigid-body.
sourcepub fn is_translation_locked(&self) -> bool
pub fn is_translation_locked(&self) -> bool
Are the translations of this rigid-body locked?
sourcepub fn is_rotation_locked(&self) -> [bool; 3]
pub fn is_rotation_locked(&self) -> [bool; 3]
Returns true
for each rotational degrees of freedom locked on this rigid-body.
sourcepub fn enable_ccd(&mut self, enabled: bool)
pub fn enable_ccd(&mut self, enabled: bool)
Enables of disable CCD (continuous collision-detection) for this rigid-body.
sourcepub fn is_ccd_enabled(&self) -> bool
pub fn is_ccd_enabled(&self) -> bool
Is CCD (continous collision-detection) enabled for this rigid-body?
sourcepub fn is_ccd_active(&self) -> bool
pub fn is_ccd_active(&self) -> bool
Is CCD active for this rigid-body?
The CCD is considered active if the rigid-body is moving at a velocity greater than an automatically-computed threshold.
This is not the same as self.is_ccd_enabled
which only
checks if CCD is allowed to run for this rigid-body or if
it is completely disabled (independently from its velocity).
sourcepub fn set_mass_properties(&mut self, props: MassProperties, wake_up: bool)
pub fn set_mass_properties(&mut self, props: MassProperties, wake_up: bool)
Sets the rigid-body’s initial mass properties.
If wake_up
is true
then the rigid-body will be woken up if it was
put to sleep because it did not move for a while.
sourcepub fn colliders(&self) -> &[ColliderHandle]
pub fn colliders(&self) -> &[ColliderHandle]
The handles of colliders attached to this rigid body.
sourcepub fn is_dynamic(&self) -> bool
pub fn is_dynamic(&self) -> bool
Is this rigid body dynamic?
A dynamic body can move freely and is affected by forces.
sourcepub fn is_kinematic(&self) -> bool
pub fn is_kinematic(&self) -> bool
Is this rigid body kinematic?
A kinematic body can move freely but is not affected by forces.
sourcepub fn is_static(&self) -> bool
pub fn is_static(&self) -> bool
Is this rigid body static?
A static body cannot move and is not affected by forces.
sourcepub fn mass(&self) -> Real
pub fn mass(&self) -> Real
The mass of this rigid body.
Returns zero if this rigid body has an infinite mass.
sourcepub fn next_position(&self) -> &Isometry<Real>
pub fn next_position(&self) -> &Isometry<Real>
The predicted position of this rigid-body.
If this rigid-body is kinematic this value is set by the set_next_kinematic_position
method and is used for estimating the kinematic body velocity at the next timestep.
For non-kinematic bodies, this value is currently unspecified.
sourcepub fn gravity_scale(&self) -> Real
pub fn gravity_scale(&self) -> Real
The scale factor applied to the gravity affecting this rigid-body.
sourcepub fn set_gravity_scale(&mut self, scale: Real, wake_up: bool)
pub fn set_gravity_scale(&mut self, scale: Real, wake_up: bool)
Sets the gravity scale facter for this rigid-body.
sourcepub fn dominance_group(&self) -> i8
pub fn dominance_group(&self) -> i8
The dominance group of this rigid-body.
sourcepub fn set_dominance_group(&mut self, dominance: i8)
pub fn set_dominance_group(&mut self, dominance: i8)
The dominance group of this rigid-body.
sourcepub fn add_collider(
&mut self,
co_handle: ColliderHandle,
co_parent: &ColliderParent,
co_pos: &mut ColliderPosition,
co_shape: &ColliderShape,
co_mprops: &ColliderMassProps
)
pub fn add_collider(
&mut self,
co_handle: ColliderHandle,
co_parent: &ColliderParent,
co_pos: &mut ColliderPosition,
co_shape: &ColliderShape,
co_mprops: &ColliderMassProps
)
Adds a collider to this rigid-body.
sourcepub fn sleep(&mut self)
pub fn sleep(&mut self)
Put this rigid body to sleep.
A sleeping body no longer moves and is no longer simulated by the physics engine unless
it is waken up. It can be woken manually with self.wake_up
or automatically due to
external forces like contacts.
sourcepub fn wake_up(&mut self, strong: bool)
pub fn wake_up(&mut self, strong: bool)
Wakes up this rigid body if it is sleeping.
If strong
is true
then it is assured that the rigid-body will
remain awake during multiple subsequent timesteps.
sourcepub fn is_sleeping(&self) -> bool
pub fn is_sleeping(&self) -> bool
Is this rigid body sleeping?
sourcepub fn set_linvel(&mut self, linvel: Vector<Real>, wake_up: bool)
pub fn set_linvel(&mut self, linvel: Vector<Real>, wake_up: bool)
The linear velocity of this rigid-body.
If wake_up
is true
then the rigid-body will be woken up if it was
put to sleep because it did not move for a while.
sourcepub fn set_angvel(&mut self, angvel: Vector<Real>, wake_up: bool)
pub fn set_angvel(&mut self, angvel: Vector<Real>, wake_up: bool)
The angular velocity of this rigid-body.
If wake_up
is true
then the rigid-body will be woken up if it was
put to sleep because it did not move for a while.
sourcepub fn translation(&self) -> &Vector<Real>
pub fn translation(&self) -> &Vector<Real>
The translational part of this rigid-body’s position.
sourcepub fn set_translation(&mut self, translation: Vector<Real>, wake_up: bool)
pub fn set_translation(&mut self, translation: Vector<Real>, wake_up: bool)
Sets the translational part of this rigid-body’s position.
sourcepub fn rotation(&self) -> &Rotation<Real>
pub fn rotation(&self) -> &Rotation<Real>
The translational part of this rigid-body’s position.
sourcepub fn set_rotation(&mut self, rotation: AngVector<Real>, wake_up: bool)
pub fn set_rotation(&mut self, rotation: AngVector<Real>, wake_up: bool)
Sets the rotational part of this rigid-body’s position.
sourcepub fn set_position(&mut self, pos: Isometry<Real>, wake_up: bool)
pub fn set_position(&mut self, pos: Isometry<Real>, wake_up: bool)
Sets the position and next_kinematic_position
of this rigid body.
This will teleport the rigid-body to the specified position/orientation, completely ignoring any physics rule. If this body is kinematic, this will also set the next kinematic position to the same value, effectively resetting to zero the next interpolated velocity of the kinematic body.
If wake_up
is true
then the rigid-body will be woken up if it was
put to sleep because it did not move for a while.
sourcepub fn set_next_kinematic_rotation(&mut self, rotation: AngVector<Real>)
pub fn set_next_kinematic_rotation(&mut self, rotation: AngVector<Real>)
If this rigid body is kinematic, sets its future translation after the next timestep integration.
sourcepub fn set_next_kinematic_translation(&mut self, translation: Vector<Real>)
pub fn set_next_kinematic_translation(&mut self, translation: Vector<Real>)
If this rigid body is kinematic, sets its future orientation after the next timestep integration.
sourcepub fn set_next_kinematic_position(&mut self, pos: Isometry<Real>)
pub fn set_next_kinematic_position(&mut self, pos: Isometry<Real>)
If this rigid body is kinematic, sets its future position after the next timestep integration.
sourcepub fn predict_position_using_velocity_and_forces(
&self,
dt: Real
) -> Isometry<Real>
pub fn predict_position_using_velocity_and_forces(
&self,
dt: Real
) -> Isometry<Real>
Predicts the next position of this rigid-body, by integrating its velocity and forces
by a time of dt
.
sourceimpl RigidBody
impl RigidBody
sourcepub fn apply_force(&mut self, force: Vector<Real>, wake_up: bool)
pub fn apply_force(&mut self, force: Vector<Real>, wake_up: bool)
Applies a force at the center-of-mass of this rigid-body. The force will be applied in the next simulation step. This does nothing on non-dynamic bodies.
sourcepub fn apply_torque(&mut self, torque: Vector<Real>, wake_up: bool)
pub fn apply_torque(&mut self, torque: Vector<Real>, wake_up: bool)
Applies a torque at the center-of-mass of this rigid-body. The torque will be applied in the next simulation step. This does nothing on non-dynamic bodies.
sourceimpl RigidBody
impl RigidBody
sourcepub fn apply_impulse(&mut self, impulse: Vector<Real>, wake_up: bool)
pub fn apply_impulse(&mut self, impulse: Vector<Real>, wake_up: bool)
Applies an impulse at the center-of-mass of this rigid-body. The impulse is applied right away, changing the linear velocity. This does nothing on non-dynamic bodies.
sourcepub fn apply_torque_impulse(
&mut self,
torque_impulse: Vector<Real>,
wake_up: bool
)
pub fn apply_torque_impulse(
&mut self,
torque_impulse: Vector<Real>,
wake_up: bool
)
Applies an angular impulse at the center-of-mass of this rigid-body. The impulse is applied right away, changing the angular velocity. This does nothing on non-dynamic bodies.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for RigidBody
impl Send for RigidBody
impl Sync for RigidBody
impl Unpin for RigidBody
impl UnwindSafe for RigidBody
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
sourcefn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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
. Read more
sourcefn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
sourcefn as_any(&self) -> &(dyn Any + 'static)
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. Read more
sourcefn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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. Read more
sourceimpl<T> DowncastSync for T where
T: Any + Send + Sync,
impl<T> DowncastSync for T where
T: Any + Send + Sync,
impl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
sourcefn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
sourcefn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
sourcefn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
sourcefn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more