pub struct CollisionGroups { /* private fields */ }
Expand description

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).

Implementations§

Creates a new CollisionGroups that enables interactions with everything except self-interaction.

The maximum allowed group identifier.

Adds or removes this entity from the given group.

Adds or removes the given group from this entity whitelist.

Adds or removes this entity from the given group.

Make this object member of the given groups only.

Whitelists the given groups only (others will be un-whitelisted).

Blacklists the given groups only (others will be un-blacklisted).

Copies the membership of another collision groups.

Copies the whitelist of another collision groups.

Copies the blacklist of another collision groups.

Allows the object to interact with itself.

Prevents the object from interacting with itself.

Tests if this entity is part of the given group.

Tests if the given group is whitelisted.

Tests if the given group is blacklisted.

Tests whether interactinos with a given group is possible.

Collision is possible if group_id is whitelisted but not blacklisted.

Tests whether two collision groups have at least one group in common.

Tests whether self-interaction is enabled.

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Checks if self is actually part of its subset T (and can be converted to it).
Use with care! Same as self.to_subset but without any property checks. Always succeeds.
The inclusion map: converts self to the equivalent element of its superset.
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.