Struct ncollide::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]
fn new() -> CollisionGroups
Creates a new CollisionGroups
that enables interactions with everything except
self-interaction.
fn max_group_id() -> usize
The maximum allowed group identifier.
fn modify_membership(&mut self, group_id: usize, add: bool)
Adds or removes this entity from the given group.
fn modify_whitelist(&mut self, group_id: usize, add: bool)
Adds or removes the given group from this entity whitelist.
fn modify_blacklist(&mut self, group_id: usize, add: bool)
Adds or removes this entity from the given group.
fn set_membership(&mut self, groups: &[usize])
Make this object member of the given groups only.
fn set_whitelist(&mut self, groups: &[usize])
Whitelists the given groups only (others will be un-whitelisted).
fn set_blacklist(&mut self, groups: &[usize])
Blacklists the given groups only (others will be un-blacklisted).
fn copy_membership(&mut self, other: &CollisionGroups)
Copies the membership of another collision groups.
fn copy_whitelist(&mut self, other: &CollisionGroups)
Copies the whitelist of another collision groups.
fn copy_blacklist(&mut self, other: &CollisionGroups)
Copies the blacklist of another collision groups.
fn enable_self_interaction(&mut self)
Allows the object to interact with itself.
fn disable_self_interaction(&mut self)
Prevents the object from interacting with itself.
fn is_member_of(&self, group_id: usize) -> bool
Tests if this entity is part of the given group.
fn is_group_whitelisted(&self, group_id: usize) -> bool
Tests if the given group is whitelisted.
fn is_group_blacklisted(&self, group_id: usize) -> bool
Tests if the given group is blacklisted.
fn can_interact_with(&self, group_id: usize) -> bool
Tests whether interactinos with a given group is possible.
Collision is possible if group_id
is whitelisted but not blacklisted.
fn can_interact_with_groups(&self, other: &CollisionGroups) -> bool
Tests whether two collision groups have at least one group in common.
fn can_interact_with_self(&self) -> bool
Tests whether self-interaction is enabled.