Struct heron_core::CollisionLayers [−][src]
pub struct CollisionLayers { /* fields omitted */ }
Expand description
Components that defines the collision layers of the collision shape.
This component contains two collections of layers: “groups” and “masks”.
Two entities A and B will interact iff:
- There is a layer in the groups of A that is also in the masks of B
- There is a layer in the groups of B that is also in the masks of A
An entity without this component is considered has having all layers in its “groups” and “masks”, and will interact with everything.
This component must be on the same entity of a CollisionShape
To build an instance, start with either CollisionLayers::new()
, CollisionLayers::all()
or
CollisionLayers::none()
, and then add or remove layers by calling
with_group
/without_group
and with_mask
/without_mask
.
Theses methods take a type that implement PhysicsLayer
. The best option is to create an enum
with a #[derive(PhysicsLayer)]
clause.
Example
fn spawn(mut commands: Commands) {
commands.spawn_bundle(todo!("Spawn a bundle of your choice"))
.insert(RigidBody::Dynamic) // <-- Create a rigid body
.insert(CollisionShape::Sphere { radius: 10.0 }) // <-- Attach a collision shape
.insert(
// Define the collision layer of this *collision shape*
CollisionLayers::none()
.with_group(GameLayer::Player) // <-- Mark it as the player
.with_masks(&[GameLayer::World, GameLayer::Enemies]) // <-- Defines that the player collides with world and enemies (but not with other players)
);
}
Implementations
Create a new collision layers configuration with a single group and mask.
You may add more groups and mask with with_group
and with_mask
.
Contains all layers
The entity,will interacts with everything (except the entities that interact with nothing)
Returns true if the entity would interact with an entity containing the other
[CollisionLayers]
Returns true if the given layer is contained in the “groups”
Add the given layer in the “groups”
Add the given layers in the “groups”
Remove the given layer from the “groups”
Returns true if the given layer is contained in the “masks”
Add the given layer in the “masks”
Add the given layers in the “masks”
Remove the given layer from the “masks”
Trait Implementations
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
Returns a serializable value, if serialization is supported. Otherwise None
will be
returned. Read more
Returns a hash of the value (which includes the type) if hashing is supported. Otherwise
None
will be returned. Read more
Returns a “partial equal” comparison result if comparison is supported. Otherwise None
will be returned. Read more
Auto Trait Implementations
impl RefUnwindSafe for CollisionLayers
impl Send for CollisionLayers
impl Sync for CollisionLayers
impl Unpin for CollisionLayers
impl UnwindSafe for CollisionLayers
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert 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
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
impl<T> FromWorld for T where
T: Default,
impl<T> FromWorld for T where
T: Default,
pub fn from_world(_world: &mut World) -> T
pub fn from_world(_world: &mut World) -> T
Creates Self
using data from the given [World]
pub fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more