pub struct RapierContext<'a> {
pub simulation: &'a RapierContextSimulation,
pub colliders: &'a RapierContextColliders,
pub joints: &'a RapierContextJoints,
pub rigidbody_set: &'a RapierRigidBodySet,
}Expand description
A helper struct to avoid passing too many parameters to most rapier functions. This helps with reducing boilerplate, at the (small) price of maybe getting too much information from the ECS.
Note: This is not a component, refer to ReadRapierContext, WriteRapierContext, or RapierContextSimulation
Fields§
§simulation: &'a RapierContextSimulationThe Rapier context, containing all the state of the physics engine.
colliders: &'a RapierContextCollidersThe set of colliders part of the simulation.
joints: &'a RapierContextJointsThe sets of joints part of the simulation.
rigidbody_set: &'a RapierRigidBodySetThe set of rigid-bodies part of the simulation.
Implementations§
Source§impl RapierContext<'_>
RapierContextSimulation functions for immutable accesses
impl RapierContext<'_>
RapierContextSimulation functions for immutable accesses
Sourcepub fn contact_pair(
&self,
collider1: Entity,
collider2: Entity,
) -> Option<ContactPairView<'_>>
pub fn contact_pair( &self, collider1: Entity, collider2: Entity, ) -> Option<ContactPairView<'_>>
Shortcut to RapierContextSimulation::contact_pair.
Sourcepub fn contact_pairs_with(
&self,
collider: Entity,
) -> impl Iterator<Item = ContactPairView<'_>>
pub fn contact_pairs_with( &self, collider: Entity, ) -> impl Iterator<Item = ContactPairView<'_>>
Shortcut to RapierContextSimulation::contact_pairs_with.
Sourcepub fn intersection_pair(
&self,
collider1: Entity,
collider2: Entity,
) -> Option<bool>
pub fn intersection_pair( &self, collider1: Entity, collider2: Entity, ) -> Option<bool>
Shortcut to RapierContextSimulation::intersection_pair.
Sourcepub fn intersection_pairs_with(
&self,
collider: Entity,
) -> impl Iterator<Item = (Entity, Entity, bool)> + '_
pub fn intersection_pairs_with( &self, collider: Entity, ) -> impl Iterator<Item = (Entity, Entity, bool)> + '_
Shortcut to RapierContextSimulation::intersection_pairs_with.
Source§impl RapierContext<'_>
impl RapierContext<'_>
Sourcepub fn with_query_pipeline<'a, T>(
&'a self,
filter: QueryFilter<'a>,
scoped_fn: impl FnOnce(RapierQueryPipeline<'_>) -> T,
) -> T
pub fn with_query_pipeline<'a, T>( &'a self, filter: QueryFilter<'a>, scoped_fn: impl FnOnce(RapierQueryPipeline<'_>) -> T, ) -> T
Shortcut to RapierQueryPipeline::new_scoped.
Sourcepub fn cast_ray(
&self,
ray_origin: Vect,
ray_dir: Vect,
max_toi: f32,
solid: bool,
filter: QueryFilter<'_>,
) -> Option<(Entity, f32)>
pub fn cast_ray( &self, ray_origin: Vect, ray_dir: Vect, max_toi: f32, solid: bool, filter: QueryFilter<'_>, ) -> Option<(Entity, f32)>
Shortcut to RapierQueryPipeline::cast_ray.
Sourcepub fn cast_ray_and_get_normal(
&self,
ray_origin: Vect,
ray_dir: Vect,
max_toi: f32,
solid: bool,
filter: QueryFilter<'_>,
) -> Option<(Entity, RayIntersection)>
pub fn cast_ray_and_get_normal( &self, ray_origin: Vect, ray_dir: Vect, max_toi: f32, solid: bool, filter: QueryFilter<'_>, ) -> Option<(Entity, RayIntersection)>
Shortcut to RapierQueryPipeline::cast_ray_and_get_normal.
Sourcepub fn intersect_point(
&self,
point: Vect,
filter: QueryFilter<'_>,
callback: impl FnMut(Entity) -> bool,
)
pub fn intersect_point( &self, point: Vect, filter: QueryFilter<'_>, callback: impl FnMut(Entity) -> bool, )
Shortcut to RapierQueryPipeline::intersect_point.
Stops the query if callback returns false.
Sourcepub fn intersect_ray(
&self,
ray_origin: Vect,
ray_dir: Vect,
max_toi: f32,
solid: bool,
filter: QueryFilter<'_>,
callback: impl FnMut(Entity, RayIntersection) -> bool,
)
pub fn intersect_ray( &self, ray_origin: Vect, ray_dir: Vect, max_toi: f32, solid: bool, filter: QueryFilter<'_>, callback: impl FnMut(Entity, RayIntersection) -> bool, )
Shortcut to RapierQueryPipeline::intersect_ray.
Stops the query if callback returns false.
Sourcepub fn intersect_shape(
&self,
shape_pos: Vect,
shape_rot: Rot,
shape: &dyn Shape,
filter: QueryFilter<'_>,
callback: impl FnMut(Entity) -> bool,
)
pub fn intersect_shape( &self, shape_pos: Vect, shape_rot: Rot, shape: &dyn Shape, filter: QueryFilter<'_>, callback: impl FnMut(Entity) -> bool, )
Shortcut to RapierQueryPipeline::intersect_shape.
Sourcepub fn intersect_aabb_conservative(
&self,
aabb: Aabb3d,
filter: QueryFilter<'_>,
callback: impl FnMut(Entity) -> bool,
)
pub fn intersect_aabb_conservative( &self, aabb: Aabb3d, filter: QueryFilter<'_>, callback: impl FnMut(Entity) -> bool, )
Shortcut to RapierQueryPipeline::intersect_aabb_conservative.
Sourcepub fn cast_shape(
&self,
shape_pos: Vect,
shape_rot: Rot,
shape_vel: Vect,
shape: &dyn Shape,
options: ShapeCastOptions,
filter: QueryFilter<'_>,
) -> Option<(Entity, ShapeCastHit)>
pub fn cast_shape( &self, shape_pos: Vect, shape_rot: Rot, shape_vel: Vect, shape: &dyn Shape, options: ShapeCastOptions, filter: QueryFilter<'_>, ) -> Option<(Entity, ShapeCastHit)>
Shortcut to RapierQueryPipeline::cast_shape.
Sourcepub fn project_point(
&self,
point: Vect,
max_dist: f32,
solid: bool,
filter: QueryFilter<'_>,
) -> Option<(Entity, PointProjection)>
pub fn project_point( &self, point: Vect, max_dist: f32, solid: bool, filter: QueryFilter<'_>, ) -> Option<(Entity, PointProjection)>
Shortcut to RapierQueryPipeline::project_point.
Source§impl RapierContext<'_>
impl RapierContext<'_>
Sourcepub fn entity2body(&self) -> &HashMap<Entity, RigidBodyHandle>
pub fn entity2body(&self) -> &HashMap<Entity, RigidBodyHandle>
Shortcut to RapierRigidBodySet::entity2body.
Sourcepub fn rigid_body_entity(&self, handle: RigidBodyHandle) -> Option<Entity>
pub fn rigid_body_entity(&self, handle: RigidBodyHandle) -> Option<Entity>
Shortcut to RapierRigidBodySet::rigid_body_entity.
Sourcepub fn impulse_revolute_joint_angle(&self, entity: Entity) -> Option<f32>
pub fn impulse_revolute_joint_angle(&self, entity: Entity) -> Option<f32>
Shortcut to RapierRigidBodySet::impulse_revolute_joint_angle.
Trait Implementations§
Source§impl<'a> QueryData for RapierContext<'a>
SAFETY: we assert fields are readonly below
impl<'a> QueryData for RapierContext<'a>
SAFETY: we assert fields are readonly below
Source§unsafe fn fetch<'__w, '__s>(
_state: &'__s Self::State,
_fetch: &mut <Self as WorldQuery>::Fetch<'__w>,
_entity: Entity,
_table_row: TableRow,
) -> Self::Item<'__w, '__s>
unsafe fn fetch<'__w, '__s>( _state: &'__s Self::State, _fetch: &mut <Self as WorldQuery>::Fetch<'__w>, _entity: Entity, _table_row: TableRow, ) -> Self::Item<'__w, '__s>
SAFETY: we call fetch for each member that implements Fetch.
Source§const IS_READ_ONLY: bool = true
const IS_READ_ONLY: bool = true
Source§type ReadOnly = RapierContext<'a>
type ReadOnly = RapierContext<'a>
QueryData, which satisfies the ReadOnlyQueryData trait.Source§type Item<'__w, '__s> = RapierContextItem<'__w, '__s, 'a>
type Item<'__w, '__s> = RapierContextItem<'__w, '__s, 'a>
WorldQuery
This will be the data retrieved by the query,
and is visible to the end user when calling e.g. Query<Self>::get.Source§fn shrink<'__wlong: '__wshort, '__wshort, '__s>(
item: Self::Item<'__wlong, '__s>,
) -> Self::Item<'__wshort, '__s>
fn shrink<'__wlong: '__wshort, '__wshort, '__s>( item: Self::Item<'__wlong, '__s>, ) -> Self::Item<'__wshort, '__s>
Source§fn provide_extra_access(
state: &mut Self::State,
access: &mut Access,
available_access: &Access,
)
fn provide_extra_access( state: &mut Self::State, access: &mut Access, available_access: &Access, )
update_component_access.
Implementations may add additional access that is a subset of available_access
and does not conflict with anything in access,
and must update access to include that access. Read moreSource§impl<'a> ReleaseStateQueryData for RapierContext<'a>where
for<'__a> &'a RapierContextSimulation: ReleaseStateQueryData,
for<'__a> &'a RapierContextColliders: ReleaseStateQueryData,
for<'__a> &'a RapierContextJoints: ReleaseStateQueryData,
for<'__a> &'a RapierRigidBodySet: ReleaseStateQueryData,
impl<'a> ReleaseStateQueryData for RapierContext<'a>where
for<'__a> &'a RapierContextSimulation: ReleaseStateQueryData,
for<'__a> &'a RapierContextColliders: ReleaseStateQueryData,
for<'__a> &'a RapierContextJoints: ReleaseStateQueryData,
for<'__a> &'a RapierRigidBodySet: ReleaseStateQueryData,
Source§fn release_state<'__w>(_item: Self::Item<'__w, '_>) -> Self::Item<'__w, 'static>
fn release_state<'__w>(_item: Self::Item<'__w, '_>) -> Self::Item<'__w, 'static>
'static state lifetime.Source§impl<'a> WorldQuery for RapierContext<'a>
impl<'a> WorldQuery for RapierContext<'a>
Source§unsafe fn set_archetype<'__w, '__s>(
_fetch: &mut <Self as WorldQuery>::Fetch<'__w>,
_state: &'__s Self::State,
_archetype: &'__w Archetype,
_table: &'__w Table,
)
unsafe fn set_archetype<'__w, '__s>( _fetch: &mut <Self as WorldQuery>::Fetch<'__w>, _state: &'__s Self::State, _archetype: &'__w Archetype, _table: &'__w Table, )
SAFETY: we call set_archetype for each member that implements Fetch
Source§unsafe fn set_table<'__w, '__s>(
_fetch: &mut <Self as WorldQuery>::Fetch<'__w>,
_state: &'__s Self::State,
_table: &'__w Table,
)
unsafe fn set_table<'__w, '__s>( _fetch: &mut <Self as WorldQuery>::Fetch<'__w>, _state: &'__s Self::State, _table: &'__w Table, )
SAFETY: we call set_table for each member that implements Fetch
Source§const IS_DENSE: bool = true
const IS_DENSE: bool = true
Source§type Fetch<'__w> = RapierContextFetch<'__w, 'a>
type Fetch<'__w> = RapierContextFetch<'__w, 'a>
WorldQuery to compute Self::Item for each entity.Source§type State = RapierContextState<'a>
type State = RapierContextState<'a>
Self::Fetch. This will be cached inside QueryState,
so it is best to move as much data / computation here as possible to reduce the cost of
constructing Self::Fetch.Source§fn shrink_fetch<'__wlong: '__wshort, '__wshort>(
fetch: <RapierContext<'a> as WorldQuery>::Fetch<'__wlong>,
) -> <RapierContext<'a> as WorldQuery>::Fetch<'__wshort>
fn shrink_fetch<'__wlong: '__wshort, '__wshort>( fetch: <RapierContext<'a> as WorldQuery>::Fetch<'__wlong>, ) -> <RapierContext<'a> as WorldQuery>::Fetch<'__wshort>
Source§unsafe fn init_fetch<'__w, '__s>(
_world: UnsafeWorldCell<'__w>,
state: &'__s Self::State,
_last_run: Tick,
_this_run: Tick,
) -> <Self as WorldQuery>::Fetch<'__w>
unsafe fn init_fetch<'__w, '__s>( _world: UnsafeWorldCell<'__w>, state: &'__s Self::State, _last_run: Tick, _this_run: Tick, ) -> <Self as WorldQuery>::Fetch<'__w>
Self::Fetch,
by combining data from the World with the cached Self::State.
Readonly accesses resources registered in WorldQuery::update_component_access. Read moreSource§fn update_component_access(state: &Self::State, _access: &mut FilteredAccess)
fn update_component_access(state: &Self::State, _access: &mut FilteredAccess)
Source§fn init_state(world: &mut World) -> RapierContextState<'a>
fn init_state(world: &mut World) -> RapierContextState<'a>
State for this WorldQuery type.Source§fn get_state(components: &Components) -> Option<RapierContextState<'a>>
fn get_state(components: &Components) -> Option<RapierContextState<'a>>
Source§fn matches_component_set(
state: &Self::State,
_set_contains_id: &impl Fn(ComponentId) -> bool,
) -> bool
fn matches_component_set( state: &Self::State, _set_contains_id: &impl Fn(ComponentId) -> bool, ) -> bool
impl<'a> ReadOnlyQueryData for RapierContext<'a>
SAFETY: we assert fields are readonly below
Auto Trait Implementations§
impl<'a> Freeze for RapierContext<'a>
impl<'a> !RefUnwindSafe for RapierContext<'a>
impl<'a> Send for RapierContext<'a>
impl<'a> Sync for RapierContext<'a>
impl<'a> Unpin for RapierContext<'a>
impl<'a> !UnwindSafe for RapierContext<'a>
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> 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, 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.