#[repr(C)]pub struct b2ChainDef {
pub userData: *mut c_void,
pub points: *const b2Vec2,
pub count: c_int,
pub materials: *const b2SurfaceMaterial,
pub materialCount: c_int,
pub filter: b2Filter,
pub isLoop: bool,
pub enableSensorEvents: bool,
pub internalValue: c_int,
}Expand description
Used to create a chain of line segments. This is designed to eliminate ghost collisions with some limitations.
- chains are one-sided
- chains have no mass and should be used on static bodies
- chains have a counter-clockwise winding order (normal points right of segment direction)
- chains are either a loop or open
- a chain must have at least 4 points
- the distance between any two points must be greater than B2_LINEAR_SLOP
- a chain shape should not self intersect (this is not validated)
- an open chain shape has NO COLLISION on the first and final edge
- you may overlap two open chains on their first three and/or last three points to get smooth collision
- a chain shape creates multiple line segment shapes on the body https://en.wikipedia.org/wiki/Polygonal_chain Must be initialized using b2DefaultChainDef(). @warning Do not use chain shapes unless you understand the limitations. This is an advanced feature. @ingroup shape
Fields§
§userData: *mut c_voidUse this to store application specific shape data.
points: *const b2Vec2An array of at least 4 points. These are cloned and may be temporary.
count: c_intThe point count, must be 4 or more.
materials: *const b2SurfaceMaterialSurface materials for each segment. These are cloned.
materialCount: c_intThe material count. Must be 1 or count. This allows you to provide one material for all segments or a unique material per segment. For open chains, the material on the ghost segments are place holders.
filter: b2FilterContact filtering data.
isLoop: boolIndicates a closed chain formed by connecting the first and last points
enableSensorEvents: boolEnable sensors to detect this chain. False by default.
internalValue: c_intUsed internally to detect a valid definition. DO NOT SET.
Trait Implementations§
Source§impl Clone for b2ChainDef
impl Clone for b2ChainDef
Source§fn clone(&self) -> b2ChainDef
fn clone(&self) -> b2ChainDef
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for b2ChainDef
impl Debug for b2ChainDef
impl Copy for b2ChainDef
Auto Trait Implementations§
impl Freeze for b2ChainDef
impl RefUnwindSafe for b2ChainDef
impl !Send for b2ChainDef
impl !Sync for b2ChainDef
impl Unpin for b2ChainDef
impl UnwindSafe for b2ChainDef
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)