pub struct BodyHandle(/* private fields */);Expand description
An opaque identifier for a body inside a physics world.
BodyHandle is the single identity the physics public API speaks in —
collision/trigger/fracture events, raycast hits, joints and broadphase
queries all carry BodyHandles rather than the engine’s ECS
Entity. The ECS↔physics bridge converts at
the boundary (BodyHandle::from_id(entity.id()) on the way in,
Entity::new(handle.id(), 0) on the way out), so a non-ECS embedding can
drive the simulation with its own handles and the internal representation
can evolve post-1.0 without breaking the physics API.
It is a transparent newtype over u32, so where it appears in serialized
data (e.g. scene-file joint endpoints) it round-trips as that single id.
§Determinism
A handle wraps the body’s stable u32 id — the sole identity physics keys
on (the deterministic state hash sorts and mixes bodies by id).
Carrying the same id the old Entity did keeps the state hash bit-identical,
preserving cross-process/rollback determinism.
Implementations§
Source§impl BodyHandle
impl BodyHandle
Sourcepub const INVALID: BodyHandle
pub const INVALID: BodyHandle
Sentinel value for “no body”; usable in place of Option<BodyHandle>.
Sourcepub const fn from_id(id: u32) -> BodyHandle
pub const fn from_id(id: u32) -> BodyHandle
Builds a handle from a raw body id.
Trait Implementations§
Source§impl Clone for BodyHandle
impl Clone for BodyHandle
Source§fn clone(&self) -> BodyHandle
fn clone(&self) -> BodyHandle
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BodyHandle
Source§impl Debug for BodyHandle
impl Debug for BodyHandle
Source§impl<'de> Deserialize<'de> for BodyHandle
impl<'de> Deserialize<'de> for BodyHandle
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<BodyHandle, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<BodyHandle, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Display for BodyHandle
impl Display for BodyHandle
impl Eq for BodyHandle
Source§impl Hash for BodyHandle
impl Hash for BodyHandle
Source§impl Ord for BodyHandle
impl Ord for BodyHandle
Source§fn cmp(&self, other: &BodyHandle) -> Ordering
fn cmp(&self, other: &BodyHandle) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for BodyHandle
impl PartialEq for BodyHandle
Source§impl PartialOrd for BodyHandle
impl PartialOrd for BodyHandle
Source§impl Serialize for BodyHandle
impl Serialize for BodyHandle
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,
impl StructuralPartialEq for BodyHandle
Auto Trait Implementations§
impl Freeze for BodyHandle
impl RefUnwindSafe for BodyHandle
impl Send for BodyHandle
impl Sync for BodyHandle
impl Unpin for BodyHandle
impl UnsafeUnpin for BodyHandle
impl UnwindSafe for BodyHandle
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> 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>
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 more