Struct ncollide3d::world::CollisionGroups
[−]
[src]
pub struct CollisionGroups { /* fields omitted */ }
Groups of collision used to filter which object interact with which other one.
There are at most 30 groups indexed from 0 to 29 (included). This identifies collidable entities by combining three attributes:
- A set of group this structure is member of.
- A collision group whitelist.
- A collision group blacklist.
For two entities to interact, they must be member of at least one group part of each-other's whitelists, and must not be part of any blacklisted group. The blacklist always has priority on the whitelist.
Example
For example if the object A is such that:
- It is part of the groups 1, 3, and 6.
- It whitelists the groups 6 and 7.
- It blacklists the group 1. Let the object B be such that:
- It is part of the groups 1, 3, and 7.
- It whitelists the groups 3 and 7.
- It does not blacklist anything. For example if the object C is such that:
- It is part of the groups 6 and 9.
- It whitelists the groups 3 and 7.
- It does not blacklist anything.
Then we have:
- A and C can interact because A whitelists the group 6 (which C is part of), and, reciprocally, C whitelists the group 3 (which A is part of).
- A and B will not interact because B is part of the group 1 which is blacklisted by A.
- Finally, B and C will not interact either because, even if C whitelists the group 3 (which B is part of), B does not whitelists the groups 6 nor 9 (which B is part of).
Methods
impl CollisionGroups
[src]
pub fn new() -> CollisionGroups
[src]
Creates a new CollisionGroups
that enables interactions with everything except
self-interaction.
pub fn max_group_id() -> usize
[src]
The maximum allowed group identifier.
pub fn modify_membership(&mut self, group_id: usize, add: bool)
[src]
Adds or removes this entity from the given group.
pub fn modify_whitelist(&mut self, group_id: usize, add: bool)
[src]
Adds or removes the given group from this entity whitelist.
pub fn modify_blacklist(&mut self, group_id: usize, add: bool)
[src]
Adds or removes this entity from the given group.
pub fn set_membership(&mut self, groups: &[usize])
[src]
Make this object member of the given groups only.
pub fn set_whitelist(&mut self, groups: &[usize])
[src]
Whitelists the given groups only (others will be un-whitelisted).
pub fn set_blacklist(&mut self, groups: &[usize])
[src]
Blacklists the given groups only (others will be un-blacklisted).
pub fn copy_membership(&mut self, other: &CollisionGroups)
[src]
Copies the membership of another collision groups.
pub fn copy_whitelist(&mut self, other: &CollisionGroups)
[src]
Copies the whitelist of another collision groups.
pub fn copy_blacklist(&mut self, other: &CollisionGroups)
[src]
Copies the blacklist of another collision groups.
pub fn enable_self_interaction(&mut self)
[src]
Allows the object to interact with itself.
pub fn disable_self_interaction(&mut self)
[src]
Prevents the object from interacting with itself.
pub fn is_member_of(&self, group_id: usize) -> bool
[src]
Tests if this entity is part of the given group.
pub fn is_group_whitelisted(&self, group_id: usize) -> bool
[src]
Tests if the given group is whitelisted.
pub fn is_group_blacklisted(&self, group_id: usize) -> bool
[src]
Tests if the given group is blacklisted.
pub fn can_interact_with(&self, group_id: usize) -> bool
[src]
Tests whether interactinos with a given group is possible.
Collision is possible if group_id
is whitelisted but not blacklisted.
pub fn can_interact_with_groups(&self, other: &CollisionGroups) -> bool
[src]
Tests whether two collision groups have at least one group in common.
pub fn can_interact_with_self(&self) -> bool
[src]
Tests whether self-interaction is enabled.
Trait Implementations
impl Clone for CollisionGroups
[src]
fn clone(&self) -> CollisionGroups
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Debug for CollisionGroups
[src]
fn fmt(&self, __arg_0: &mut Formatter) -> Result
[src]
Formats the value using the given formatter. Read more