Struct despero::physics::ColliderBuilder
source · pub struct ColliderBuilder {Show 15 fields
pub shape: SharedShape,
pub mass_properties: ColliderMassProps,
pub friction: f32,
pub friction_combine_rule: CoefficientCombineRule,
pub restitution: f32,
pub restitution_combine_rule: CoefficientCombineRule,
pub position: Isometry<f32, Unit<Quaternion<f32>>, 3>,
pub is_sensor: bool,
pub active_collision_types: ActiveCollisionTypes,
pub active_hooks: ActiveHooks,
pub active_events: ActiveEvents,
pub user_data: u128,
pub collision_groups: InteractionGroups,
pub solver_groups: InteractionGroups,
pub contact_force_event_threshold: f32,
}
Expand description
A structure responsible for building a new collider.
Fields§
§shape: SharedShape
The shape of the collider to be built.
mass_properties: ColliderMassProps
Controls the way the collider’s mass-properties are computed.
friction: f32
The friction coefficient of the collider to be built.
friction_combine_rule: CoefficientCombineRule
The rule used to combine two friction coefficients.
restitution: f32
The restitution coefficient of the collider to be built.
restitution_combine_rule: CoefficientCombineRule
The rule used to combine two restitution coefficients.
position: Isometry<f32, Unit<Quaternion<f32>>, 3>
The position of this collider.
is_sensor: bool
Is this collider a sensor?
active_collision_types: ActiveCollisionTypes
Contact pairs enabled for this collider.
active_hooks: ActiveHooks
Physics hooks enabled for this collider.
active_events: ActiveEvents
Events enabled for this collider.
user_data: u128
The user-data of the collider being built.
collision_groups: InteractionGroups
The collision groups for the collider being built.
solver_groups: InteractionGroups
The solver groups for the collider being built.
contact_force_event_threshold: f32
The total force magnitude beyond which a contact force event can be emitted.
Implementations§
source§impl ColliderBuilder
impl ColliderBuilder
sourcepub fn new(shape: SharedShape) -> ColliderBuilder
pub fn new(shape: SharedShape) -> ColliderBuilder
Initialize a new collider builder with the given shape.
sourcepub fn compound(
shapes: Vec<(Isometry<f32, Unit<Quaternion<f32>>, 3>, SharedShape), Global>
) -> ColliderBuilder
pub fn compound( shapes: Vec<(Isometry<f32, Unit<Quaternion<f32>>, 3>, SharedShape), Global> ) -> ColliderBuilder
Initialize a new collider builder with a compound shape.
sourcepub fn ball(radius: f32) -> ColliderBuilder
pub fn ball(radius: f32) -> ColliderBuilder
Initialize a new collider builder with a ball shape defined by its radius.
sourcepub fn halfspace(
outward_normal: Unit<Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>>>
) -> ColliderBuilder
pub fn halfspace( outward_normal: Unit<Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>>> ) -> ColliderBuilder
Initialize a new collider build with a half-space shape defined by the outward normal of its planar boundary.
sourcepub fn cylinder(half_height: f32, radius: f32) -> ColliderBuilder
pub fn cylinder(half_height: f32, radius: f32) -> ColliderBuilder
Initialize a new collider builder with a cylindrical shape defined by its half-height (along along the y axis) and its radius.
sourcepub fn round_cylinder(
half_height: f32,
radius: f32,
border_radius: f32
) -> ColliderBuilder
pub fn round_cylinder( half_height: f32, radius: f32, border_radius: f32 ) -> ColliderBuilder
Initialize a new collider builder with a rounded cylindrical shape defined by its half-height (along along the y axis), its radius, and its roundedness (the radius of the sphere used for dilating the cylinder).
sourcepub fn cone(half_height: f32, radius: f32) -> ColliderBuilder
pub fn cone(half_height: f32, radius: f32) -> ColliderBuilder
Initialize a new collider builder with a cone shape defined by its half-height (along along the y axis) and its basis radius.
sourcepub fn round_cone(
half_height: f32,
radius: f32,
border_radius: f32
) -> ColliderBuilder
pub fn round_cone( half_height: f32, radius: f32, border_radius: f32 ) -> ColliderBuilder
Initialize a new collider builder with a rounded cone shape defined by its half-height (along along the y axis), its radius, and its roundedness (the radius of the sphere used for dilating the cylinder).
sourcepub fn capsule_x(half_height: f32, radius: f32) -> ColliderBuilder
pub fn capsule_x(half_height: f32, radius: f32) -> ColliderBuilder
Initialize a new collider builder with a capsule shape aligned with the x
axis.
sourcepub fn capsule_y(half_height: f32, radius: f32) -> ColliderBuilder
pub fn capsule_y(half_height: f32, radius: f32) -> ColliderBuilder
Initialize a new collider builder with a capsule shape aligned with the y
axis.
sourcepub fn capsule_z(half_height: f32, radius: f32) -> ColliderBuilder
pub fn capsule_z(half_height: f32, radius: f32) -> ColliderBuilder
Initialize a new collider builder with a capsule shape aligned with the z
axis.
sourcepub fn cuboid(hx: f32, hy: f32, hz: f32) -> ColliderBuilder
pub fn cuboid(hx: f32, hy: f32, hz: f32) -> ColliderBuilder
Initialize a new collider builder with a cuboid shape defined by its half-extents.
sourcepub fn round_cuboid(
hx: f32,
hy: f32,
hz: f32,
border_radius: f32
) -> ColliderBuilder
pub fn round_cuboid( hx: f32, hy: f32, hz: f32, border_radius: f32 ) -> ColliderBuilder
Initialize a new collider builder with a round cuboid shape defined by its half-extents and border radius.
sourcepub fn segment(
a: OPoint<f32, Const<3>>,
b: OPoint<f32, Const<3>>
) -> ColliderBuilder
pub fn segment( a: OPoint<f32, Const<3>>, b: OPoint<f32, Const<3>> ) -> ColliderBuilder
Initializes a collider builder with a segment shape.
sourcepub fn triangle(
a: OPoint<f32, Const<3>>,
b: OPoint<f32, Const<3>>,
c: OPoint<f32, Const<3>>
) -> ColliderBuilder
pub fn triangle( a: OPoint<f32, Const<3>>, b: OPoint<f32, Const<3>>, c: OPoint<f32, Const<3>> ) -> ColliderBuilder
Initializes a collider builder with a triangle shape.
sourcepub fn round_triangle(
a: OPoint<f32, Const<3>>,
b: OPoint<f32, Const<3>>,
c: OPoint<f32, Const<3>>,
border_radius: f32
) -> ColliderBuilder
pub fn round_triangle( a: OPoint<f32, Const<3>>, b: OPoint<f32, Const<3>>, c: OPoint<f32, Const<3>>, border_radius: f32 ) -> ColliderBuilder
Initializes a collider builder with a triangle shape with round corners.
sourcepub fn polyline(
vertices: Vec<OPoint<f32, Const<3>>, Global>,
indices: Option<Vec<[u32; 2], Global>>
) -> ColliderBuilder
pub fn polyline( vertices: Vec<OPoint<f32, Const<3>>, Global>, indices: Option<Vec<[u32; 2], Global>> ) -> ColliderBuilder
Initializes a collider builder with a polyline shape defined by its vertex and index buffers.
sourcepub fn trimesh(
vertices: Vec<OPoint<f32, Const<3>>, Global>,
indices: Vec<[u32; 3], Global>
) -> ColliderBuilder
pub fn trimesh( vertices: Vec<OPoint<f32, Const<3>>, Global>, indices: Vec<[u32; 3], Global> ) -> ColliderBuilder
Initializes a collider builder with a triangle mesh shape defined by its vertex and index buffers.
sourcepub fn trimesh_with_flags(
vertices: Vec<OPoint<f32, Const<3>>, Global>,
indices: Vec<[u32; 3], Global>,
flags: TriMeshFlags
) -> ColliderBuilder
pub fn trimesh_with_flags( vertices: Vec<OPoint<f32, Const<3>>, Global>, indices: Vec<[u32; 3], Global>, flags: TriMeshFlags ) -> ColliderBuilder
Initializes a collider builder with a triangle mesh shape defined by its vertex and index buffers and flags controlling its pre-processing.
sourcepub fn convex_decomposition(
vertices: &[OPoint<f32, Const<3>>],
indices: &[[u32; 3]]
) -> ColliderBuilder
pub fn convex_decomposition( vertices: &[OPoint<f32, Const<3>>], indices: &[[u32; 3]] ) -> ColliderBuilder
Initializes a collider builder with a compound shape obtained from the decomposition of the given trimesh (in 3D) or polyline (in 2D) into convex parts.
sourcepub fn round_convex_decomposition(
vertices: &[OPoint<f32, Const<3>>],
indices: &[[u32; 3]],
border_radius: f32
) -> ColliderBuilder
pub fn round_convex_decomposition( vertices: &[OPoint<f32, Const<3>>], indices: &[[u32; 3]], border_radius: f32 ) -> ColliderBuilder
Initializes a collider builder with a compound shape obtained from the decomposition of the given trimesh (in 3D) or polyline (in 2D) into convex parts dilated with round corners.
sourcepub fn convex_decomposition_with_params(
vertices: &[OPoint<f32, Const<3>>],
indices: &[[u32; 3]],
params: &VHACDParameters
) -> ColliderBuilder
pub fn convex_decomposition_with_params( vertices: &[OPoint<f32, Const<3>>], indices: &[[u32; 3]], params: &VHACDParameters ) -> ColliderBuilder
Initializes a collider builder with a compound shape obtained from the decomposition of the given trimesh (in 3D) or polyline (in 2D) into convex parts.
sourcepub fn round_convex_decomposition_with_params(
vertices: &[OPoint<f32, Const<3>>],
indices: &[[u32; 3]],
params: &VHACDParameters,
border_radius: f32
) -> ColliderBuilder
pub fn round_convex_decomposition_with_params( vertices: &[OPoint<f32, Const<3>>], indices: &[[u32; 3]], params: &VHACDParameters, border_radius: f32 ) -> ColliderBuilder
Initializes a collider builder with a compound shape obtained from the decomposition of the given trimesh (in 3D) or polyline (in 2D) into convex parts dilated with round corners.
sourcepub fn convex_hull(points: &[OPoint<f32, Const<3>>]) -> Option<ColliderBuilder>
pub fn convex_hull(points: &[OPoint<f32, Const<3>>]) -> Option<ColliderBuilder>
Initializes a new collider builder with a 2D convex polygon or 3D convex polyhedron obtained after computing the convex-hull of the given points.
sourcepub fn round_convex_hull(
points: &[OPoint<f32, Const<3>>],
border_radius: f32
) -> Option<ColliderBuilder>
pub fn round_convex_hull( points: &[OPoint<f32, Const<3>>], border_radius: f32 ) -> Option<ColliderBuilder>
Initializes a new collider builder with a round 2D convex polygon or 3D convex polyhedron
obtained after computing the convex-hull of the given points. The shape is dilated
by a sphere of radius border_radius
.
sourcepub fn convex_mesh(
points: Vec<OPoint<f32, Const<3>>, Global>,
indices: &[[u32; 3]]
) -> Option<ColliderBuilder>
pub fn convex_mesh( points: Vec<OPoint<f32, Const<3>>, Global>, indices: &[[u32; 3]] ) -> Option<ColliderBuilder>
Creates a new collider builder that is a convex polyhedron formed by the given triangle-mesh assumed to be convex (no convex-hull will be automatically computed).
sourcepub fn round_convex_mesh(
points: Vec<OPoint<f32, Const<3>>, Global>,
indices: &[[u32; 3]],
border_radius: f32
) -> Option<ColliderBuilder>
pub fn round_convex_mesh( points: Vec<OPoint<f32, Const<3>>, Global>, indices: &[[u32; 3]], border_radius: f32 ) -> Option<ColliderBuilder>
Creates a new collider builder that is a round convex polyhedron formed by the
given triangle-mesh assumed to be convex (no convex-hull will be automatically
computed). The triangle mesh shape is dilated by a sphere of radius border_radius
.
sourcepub fn heightfield(
heights: Matrix<f32, Dynamic, Dynamic, VecStorage<f32, Dynamic, Dynamic>>,
scale: Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>>
) -> ColliderBuilder
pub fn heightfield( heights: Matrix<f32, Dynamic, Dynamic, VecStorage<f32, Dynamic, Dynamic>>, scale: Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>> ) -> ColliderBuilder
Initializes a collider builder with a heightfield shape defined by its set of height and a scale factor along each coordinate axis.
sourcepub fn default_friction() -> f32
pub fn default_friction() -> f32
The default friction coefficient used by the collider builder.
sourcepub fn default_density() -> f32
pub fn default_density() -> f32
The default density used by the collider builder.
sourcepub fn user_data(self, data: u128) -> ColliderBuilder
pub fn user_data(self, data: u128) -> ColliderBuilder
Sets an arbitrary user-defined 128-bit integer associated to the colliders built by this builder.
sourcepub fn collision_groups(self, groups: InteractionGroups) -> ColliderBuilder
pub fn collision_groups(self, groups: InteractionGroups) -> ColliderBuilder
Sets the collision groups used by this collider.
Two colliders will interact iff. their collision groups are compatible. See InteractionGroups::test for details.
sourcepub fn solver_groups(self, groups: InteractionGroups) -> ColliderBuilder
pub fn solver_groups(self, groups: InteractionGroups) -> ColliderBuilder
Sets the solver groups used by this collider.
Forces between two colliders in contact will be computed iff their solver groups are compatible. See InteractionGroups::test for details.
sourcepub fn sensor(self, is_sensor: bool) -> ColliderBuilder
pub fn sensor(self, is_sensor: bool) -> ColliderBuilder
Sets whether or not the collider built by this builder is a sensor.
sourcepub fn active_hooks(self, active_hooks: ActiveHooks) -> ColliderBuilder
pub fn active_hooks(self, active_hooks: ActiveHooks) -> ColliderBuilder
The set of physics hooks enabled for this collider.
sourcepub fn active_events(self, active_events: ActiveEvents) -> ColliderBuilder
pub fn active_events(self, active_events: ActiveEvents) -> ColliderBuilder
The set of events enabled for this collider.
sourcepub fn active_collision_types(
self,
active_collision_types: ActiveCollisionTypes
) -> ColliderBuilder
pub fn active_collision_types( self, active_collision_types: ActiveCollisionTypes ) -> ColliderBuilder
The set of active collision types for this collider.
sourcepub fn friction(self, friction: f32) -> ColliderBuilder
pub fn friction(self, friction: f32) -> ColliderBuilder
Sets the friction coefficient of the collider this builder will build.
sourcepub fn friction_combine_rule(
self,
rule: CoefficientCombineRule
) -> ColliderBuilder
pub fn friction_combine_rule( self, rule: CoefficientCombineRule ) -> ColliderBuilder
Sets the rule to be used to combine two friction coefficients in a contact.
sourcepub fn restitution(self, restitution: f32) -> ColliderBuilder
pub fn restitution(self, restitution: f32) -> ColliderBuilder
Sets the restitution coefficient of the collider this builder will build.
sourcepub fn restitution_combine_rule(
self,
rule: CoefficientCombineRule
) -> ColliderBuilder
pub fn restitution_combine_rule( self, rule: CoefficientCombineRule ) -> ColliderBuilder
Sets the rule to be used to combine two restitution coefficients in a contact.
sourcepub fn density(self, density: f32) -> ColliderBuilder
pub fn density(self, density: f32) -> ColliderBuilder
Sets the uniform density of the collider this builder will build.
This will be overridden by a call to Self::mass
or Self::mass_properties
so it only
makes sense to call either Self::density
or Self::mass
or Self::mass_properties
.
The mass and angular inertia of this collider will be computed automatically based on its shape.
sourcepub fn mass(self, mass: f32) -> ColliderBuilder
pub fn mass(self, mass: f32) -> ColliderBuilder
Sets the mass of the collider this builder will build.
This will be overridden by a call to Self::density
or Self::mass_properties
so it only
makes sense to call either Self::density
or Self::mass
or Self::mass_properties
.
The angular inertia of this collider will be computed automatically based on its shape and this mass value.
sourcepub fn mass_properties(self, mass_properties: MassProperties) -> ColliderBuilder
pub fn mass_properties(self, mass_properties: MassProperties) -> ColliderBuilder
Sets the mass properties of the collider this builder will build.
This will be overridden by a call to Self::density
or Self::mass
so it only
makes sense to call either Self::density
or Self::mass
or Self::mass_properties
.
sourcepub fn contact_force_event_threshold(self, threshold: f32) -> ColliderBuilder
pub fn contact_force_event_threshold(self, threshold: f32) -> ColliderBuilder
Sets the total force magnitude beyond which a contact force event can be emitted.
sourcepub fn translation(
self,
translation: Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>>
) -> ColliderBuilder
pub fn translation( self, translation: Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>> ) -> ColliderBuilder
Sets the initial translation of the collider to be created.
If the collider will be attached to a rigid-body, this sets the translation relative to the rigid-body it will be attached to.
sourcepub fn rotation(
self,
angle: Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>>
) -> ColliderBuilder
pub fn rotation( self, angle: Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>> ) -> ColliderBuilder
Sets the initial orientation of the collider to be created.
If the collider will be attached to a rigid-body, this sets the orientation relative to the rigid-body it will be attached to.
sourcepub fn position(
self,
pos: Isometry<f32, Unit<Quaternion<f32>>, 3>
) -> ColliderBuilder
pub fn position( self, pos: Isometry<f32, Unit<Quaternion<f32>>, 3> ) -> ColliderBuilder
Sets the initial position (translation and orientation) of the collider to be created.
If the collider will be attached to a rigid-body, this sets the position relative to the rigid-body it will be attached to.
sourcepub fn position_wrt_parent(
self,
pos: Isometry<f32, Unit<Quaternion<f32>>, 3>
) -> ColliderBuilder
👎Deprecated: Use .position
instead.
pub fn position_wrt_parent( self, pos: Isometry<f32, Unit<Quaternion<f32>>, 3> ) -> ColliderBuilder
.position
instead.Sets the initial position (translation and orientation) of the collider to be created, relative to the rigid-body it is attached to.
sourcepub fn delta(
self,
delta: Isometry<f32, Unit<Quaternion<f32>>, 3>
) -> ColliderBuilder
👎Deprecated: Use .position
instead.
pub fn delta( self, delta: Isometry<f32, Unit<Quaternion<f32>>, 3> ) -> ColliderBuilder
.position
instead.Set the position of this collider in the local-space of the rigid-body it is attached to.
Trait Implementations§
source§impl Clone for ColliderBuilder
impl Clone for ColliderBuilder
source§fn clone(&self) -> ColliderBuilder
fn clone(&self) -> ColliderBuilder
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'de> Deserialize<'de> for ColliderBuilder
impl<'de> Deserialize<'de> for ColliderBuilder
source§fn deserialize<__D>(
__deserializer: __D
) -> Result<ColliderBuilder, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<ColliderBuilder, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
source§impl Into<Collider> for ColliderBuilder
impl Into<Collider> for ColliderBuilder
source§impl Serialize for ColliderBuilder
impl Serialize for ColliderBuilder
source§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
Auto Trait Implementations§
impl !RefUnwindSafe for ColliderBuilder
impl Send for ColliderBuilder
impl Sync for ColliderBuilder
impl Unpin for ColliderBuilder
impl !UnwindSafe for ColliderBuilder
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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 + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
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.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Serialize for Twhere
T: Serialize + ?Sized,
impl<T> Serialize for Twhere T: Serialize + ?Sized,
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
§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.