pub struct PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>where
T: Pose<P::Point, R> + Clone + Component + Send + Sync + 'static,
P: Primitive + Send + Sync + 'static,
B: Bound<Point = P::Point> + Send + Sync + 'static,
P::Point: EuclideanSpace<Scalar = V::Scalar> + Send + Sync + 'static,
V::Scalar: BaseFloat + Send + Sync + 'static,
V: VectorSpace + Zero + Clone + Send + Sync + 'static,
A: Copy + Zero + Clone + Send + Sync + 'static,
Y: Send + Sync + 'static,
I: Send + Sync + 'static,
R: Rotation<P::Point> + Send + Sync + 'static,{
pub shapes: WriteStorage<'a, CollisionShape<P, T, B, Y>>,
pub poses: WriteStorage<'a, T>,
pub entities: WriteStorage<'a, PhysicalEntity<V::Scalar>>,
pub masses: WriteStorage<'a, Mass<V::Scalar, I>>,
pub velocities: WriteStorage<'a, Velocity<V, A>>,
pub next_poses: WriteStorage<'a, NextFrame<T>>,
pub next_velocities: WriteStorage<'a, NextFrame<Velocity<V, A>>>,
pub forces: WriteStorage<'a, ForceAccumulator<V, A>>,
/* private fields */
}Expand description
SystemData for easier creation of physical entities.
§Type parameters:
P: Collision PrimitiveY: ColliderR: Rotational quantityV: Linear velocityA: Angular velocityI: InertiaB: Bounding volumeT: Transform
Fields§
§shapes: WriteStorage<'a, CollisionShape<P, T, B, Y>>Collision shapes
poses: WriteStorage<'a, T>Body transforms
entities: WriteStorage<'a, PhysicalEntity<V::Scalar>>Physical entities
masses: WriteStorage<'a, Mass<V::Scalar, I>>Mass
velocities: WriteStorage<'a, Velocity<V, A>>Velocity
next_poses: WriteStorage<'a, NextFrame<T>>Next frame transform
next_velocities: WriteStorage<'a, NextFrame<Velocity<V, A>>>Next frame velocity
forces: WriteStorage<'a, ForceAccumulator<V, A>>Forces
Implementations§
Source§impl<'a, P, Y, R, V, A, I, B, T> PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>where
T: Pose<P::Point, R> + Clone + Component + Send + Sync + 'static,
P: Primitive + Send + Sync + 'static,
B: Bound<Point = P::Point> + Send + Sync + 'static,
P::Point: EuclideanSpace<Scalar = V::Scalar> + Send + Sync + 'static,
V::Scalar: BaseFloat + Send + Sync + 'static,
V: VectorSpace + Zero + Clone + Send + Sync + 'static,
A: Copy + Zero + Clone + Send + Sync + 'static,
Y: Send + Sync + 'static,
I: Send + Sync + 'static,
R: Rotation<P::Point> + Send + Sync + 'static,
impl<'a, P, Y, R, V, A, I, B, T> PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>where
T: Pose<P::Point, R> + Clone + Component + Send + Sync + 'static,
P: Primitive + Send + Sync + 'static,
B: Bound<Point = P::Point> + Send + Sync + 'static,
P::Point: EuclideanSpace<Scalar = V::Scalar> + Send + Sync + 'static,
V::Scalar: BaseFloat + Send + Sync + 'static,
V: VectorSpace + Zero + Clone + Send + Sync + 'static,
A: Copy + Zero + Clone + Send + Sync + 'static,
Y: Send + Sync + 'static,
I: Send + Sync + 'static,
R: Rotation<P::Point> + Send + Sync + 'static,
Sourcepub fn static_entity(
&mut self,
entity: Entity,
shape: CollisionShape<P, T, B, Y>,
pose: T,
physical_entity: PhysicalEntity<V::Scalar>,
mass: Mass<V::Scalar, I>,
) -> Result<(), PhysicalEntityCreationError>
pub fn static_entity( &mut self, entity: Entity, shape: CollisionShape<P, T, B, Y>, pose: T, physical_entity: PhysicalEntity<V::Scalar>, mass: Mass<V::Scalar, I>, ) -> Result<(), PhysicalEntityCreationError>
Setup static physical entity for given entity.
Sourcepub fn dynamic_entity(
&mut self,
entity: Entity,
shape: CollisionShape<P, T, B, Y>,
pose: T,
velocity: Velocity<V, A>,
physical_entity: PhysicalEntity<V::Scalar>,
mass: Mass<V::Scalar, I>,
) -> Result<(), PhysicalEntityCreationError>
pub fn dynamic_entity( &mut self, entity: Entity, shape: CollisionShape<P, T, B, Y>, pose: T, velocity: Velocity<V, A>, physical_entity: PhysicalEntity<V::Scalar>, mass: Mass<V::Scalar, I>, ) -> Result<(), PhysicalEntityCreationError>
Setup dynamic physical entity for given entity.
Trait Implementations§
Source§impl<'a, P, Y, R, V, A, I, B, T> SystemData<'a> for PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>where
T: Pose<P::Point, R> + Clone + Component + Send + Sync + 'static,
P: Primitive + Send + Sync + 'static,
B: Bound<Point = P::Point> + Send + Sync + 'static,
P::Point: EuclideanSpace<Scalar = V::Scalar> + Send + Sync + 'static,
V::Scalar: BaseFloat + Send + Sync + 'static,
V: VectorSpace + Zero + Clone + Send + Sync + 'static,
A: Copy + Zero + Clone + Send + Sync + 'static,
Y: Send + Sync + 'static,
I: Send + Sync + 'static,
R: Rotation<P::Point> + Send + Sync + 'static,
WriteStorage<'a, CollisionShape<P, T, B, Y>>: SystemData<'a>,
WriteStorage<'a, T>: SystemData<'a>,
WriteStorage<'a, PhysicalEntity<V::Scalar>>: SystemData<'a>,
WriteStorage<'a, Mass<V::Scalar, I>>: SystemData<'a>,
WriteStorage<'a, Velocity<V, A>>: SystemData<'a>,
WriteStorage<'a, NextFrame<T>>: SystemData<'a>,
WriteStorage<'a, NextFrame<Velocity<V, A>>>: SystemData<'a>,
WriteStorage<'a, ForceAccumulator<V, A>>: SystemData<'a>,
PhantomData<R>: SystemData<'a>,
impl<'a, P, Y, R, V, A, I, B, T> SystemData<'a> for PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>where
T: Pose<P::Point, R> + Clone + Component + Send + Sync + 'static,
P: Primitive + Send + Sync + 'static,
B: Bound<Point = P::Point> + Send + Sync + 'static,
P::Point: EuclideanSpace<Scalar = V::Scalar> + Send + Sync + 'static,
V::Scalar: BaseFloat + Send + Sync + 'static,
V: VectorSpace + Zero + Clone + Send + Sync + 'static,
A: Copy + Zero + Clone + Send + Sync + 'static,
Y: Send + Sync + 'static,
I: Send + Sync + 'static,
R: Rotation<P::Point> + Send + Sync + 'static,
WriteStorage<'a, CollisionShape<P, T, B, Y>>: SystemData<'a>,
WriteStorage<'a, T>: SystemData<'a>,
WriteStorage<'a, PhysicalEntity<V::Scalar>>: SystemData<'a>,
WriteStorage<'a, Mass<V::Scalar, I>>: SystemData<'a>,
WriteStorage<'a, Velocity<V, A>>: SystemData<'a>,
WriteStorage<'a, NextFrame<T>>: SystemData<'a>,
WriteStorage<'a, NextFrame<Velocity<V, A>>>: SystemData<'a>,
WriteStorage<'a, ForceAccumulator<V, A>>: SystemData<'a>,
PhantomData<R>: SystemData<'a>,
Source§fn fetch(res: &'a Resources) -> Self
fn fetch(res: &'a Resources) -> Self
Fetches the system data from
Resources. Note that this is only specified for one concrete
lifetime 'a, you need to implement the SystemData trait for every possible
lifetime.Auto Trait Implementations§
impl<'a, P, Y, R, V, A, I, B, T> Freeze for PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>
impl<'a, P, Y, R, V, A, I, B, T> !RefUnwindSafe for PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>
impl<'a, P, Y, R, V, A, I, B, T> Send for PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>
impl<'a, P, Y, R, V, A, I, B, T> Sync for PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>
impl<'a, P, Y, R, V, A, I, B, T> Unpin for PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>
impl<'a, P, Y, R, V, A, I, B, T> !UnwindSafe for PhysicalEntityParts<'a, P, Y, R, V, A, I, B, T>
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
Mutably borrows from an owned value. Read more
Source§impl<'a, T> DynamicSystemData<'a> for Twhere
T: SystemData<'a>,
impl<'a, T> DynamicSystemData<'a> for Twhere
T: SystemData<'a>,
Source§type Accessor = StaticAccessor<T>
type Accessor = StaticAccessor<T>
The accessor of the
SystemData, which specifies the read and write dependencies and does
the fetching.Source§fn setup(_: &StaticAccessor<T>, res: &mut Resources)
fn setup(_: &StaticAccessor<T>, res: &mut Resources)
Sets up
Resources for fetching this system data.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>
Converts
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>
Converts
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