pub struct JointGraph { /* private fields */ }
Expand description
A resource for the joint graph, tracking how rigid bodies are connected by joints.
Implementations§
Source§impl JointGraph
impl JointGraph
Sourcepub fn graph(&self) -> &StableUnGraph<Entity, JointGraphEdge>
pub fn graph(&self) -> &StableUnGraph<Entity, JointGraphEdge>
Returns a reference to the underlying StableUnGraph
.
Sourcepub fn entity_to_body(&self, entity: Entity) -> Option<NodeIndex>
pub fn entity_to_body(&self, entity: Entity) -> Option<NodeIndex>
Returns the NodeIndex
of the given entity in the joint graph.
If the entity is not in the graph, None
is returned.
Sourcepub fn entity_to_joint(&self, entity: Entity) -> Option<JointId>
pub fn entity_to_joint(&self, entity: Entity) -> Option<JointId>
Returns the JointId
of the joint edge for the given entity.
If the entity is not in the graph, None
is returned.
Sourcepub fn get(&self, joint: Entity) -> Option<&JointGraphEdge>
pub fn get(&self, joint: Entity) -> Option<&JointGraphEdge>
Returns the JointGraphEdge
for the given joint entity.
If the joint is not in the graph, None
is returned.
Sourcepub fn get_by_id(&self, joint_id: JointId) -> Option<&JointGraphEdge>
pub fn get_by_id(&self, joint_id: JointId) -> Option<&JointGraphEdge>
Returns a reference to the JointGraphEdge
for the given JointId
.
If the joint is not in the graph, None
is returned.
Sourcepub fn get_mut(&mut self, joint: Entity) -> Option<&mut JointGraphEdge>
pub fn get_mut(&mut self, joint: Entity) -> Option<&mut JointGraphEdge>
Returns a mutable reference to the JointGraphEdge
for the given joint entity.
If the joint is not in the graph, None
is returned.
Sourcepub fn get_mut_by_id(
&mut self,
joint_id: JointId,
) -> Option<&mut JointGraphEdge>
pub fn get_mut_by_id( &mut self, joint_id: JointId, ) -> Option<&mut JointGraphEdge>
Returns a mutable reference to the JointGraphEdge
for the given JointId
.
If the joint is not in the graph, None
is returned.
Sourcepub fn joints_between(
&self,
body1: Entity,
body2: Entity,
) -> impl Iterator<Item = &JointGraphEdge>
pub fn joints_between( &self, body1: Entity, body2: Entity, ) -> impl Iterator<Item = &JointGraphEdge>
Returns the JointGraphEdge
between two entities.
If the edge does not exist, None
is returned.
Sourcepub fn joints_of(&self, body: Entity) -> impl Iterator<Item = &JointGraphEdge>
pub fn joints_of(&self, body: Entity) -> impl Iterator<Item = &JointGraphEdge>
Returns an iterator yielding immutable access to all joint edges involving the given entity.
Sourcepub fn joints_of_mut(
&mut self,
body: Entity,
) -> impl Iterator<Item = &mut JointGraphEdge>
pub fn joints_of_mut( &mut self, body: Entity, ) -> impl Iterator<Item = &mut JointGraphEdge>
Returns an iterator yielding mutable access to all joint edges involving the given entity.
Sourcepub fn bodies_of(&self, joint: Entity) -> Option<[Entity; 2]>
pub fn bodies_of(&self, joint: Entity) -> Option<[Entity; 2]>
Returns the bodies that are connected by the given joint entity.
If the joint is not in the graph, None
is returned.
Sourcepub fn bodies_attached_to(
&self,
body: Entity,
) -> impl Iterator<Item = Entity> + '_
pub fn bodies_attached_to( &self, body: Entity, ) -> impl Iterator<Item = Entity> + '_
Returns an iterator yielding immutable access to all bodies that are attached to the given entity with a joint.
Sourcepub fn add_joint(
&mut self,
body1: Entity,
body2: Entity,
joint_edge: JointGraphEdge,
) -> JointId
pub fn add_joint( &mut self, body1: Entity, body2: Entity, joint_edge: JointGraphEdge, ) -> JointId
Creates a JointGraphEdge
between two entities if it does not already exist,
and returns the EdgeIndex
of the created joint edge.
§Warning
Creating a joint edge with this method will not wake up the entities involved or do any other clean-up. Only use this method if you know what you are doing.
Sourcepub fn remove_joint(&mut self, joint_entity: Entity) -> Option<JointGraphEdge>
pub fn remove_joint(&mut self, joint_entity: Entity) -> Option<JointGraphEdge>
Removes a JointGraphEdge
between two entites and returns its value.
§Warning
Removing a joint edge with this method will not wake up the entities involved or do any other clean-up. Only use this method if you know what you are doing.
Sourcepub fn remove_body_with<F>(&mut self, entity: Entity, edge_callback: F)
pub fn remove_body_with<F>(&mut self, entity: Entity, edge_callback: F)
Removes the body of the given entity from the joint graph, calling the given callback
for each JointGraphEdge
right before it is removed.
§Warning
Removing a body with this method will not wake up the entities involved or do any other clean-up. Only use this method if you know what you are doing.
Trait Implementations§
Source§impl Clone for JointGraph
impl Clone for JointGraph
Source§fn clone(&self) -> JointGraph
fn clone(&self) -> JointGraph
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for JointGraph
impl Debug for JointGraph
Source§impl Default for JointGraph
impl Default for JointGraph
Source§fn default() -> JointGraph
fn default() -> JointGraph
impl Resource for JointGraph
Auto Trait Implementations§
impl Freeze for JointGraph
impl RefUnwindSafe for JointGraph
impl Send for JointGraph
impl Sync for JointGraph
impl Unpin for JointGraph
impl UnwindSafe for JointGraph
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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>
, which can then be
downcast
into Box<dyn 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>
, which 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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 moreSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
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.