Drag[en]gine Game Engine
1.21
|
Defines a collision filter using layer masks. More...
#include <decCollisionFilter.h>
Public Member Functions | |
Constructors and Destructors | |
decCollisionFilter () | |
Create new collision filter. More... | |
decCollisionFilter (const decLayerMask &mask) | |
Create new collision filter with category and filter set to the same mask. More... | |
decCollisionFilter (const decLayerMask &category, const decLayerMask &filter) | |
Create new collision filter from a set of layer masks. More... | |
decCollisionFilter (const decCollisionFilter &other) | |
Create copy of a collision filter. More... | |
~decCollisionFilter () | |
Clean up collision filter. More... | |
Management | |
decLayerMask & | GetCategory () |
Category layer mask. More... | |
const decLayerMask & | GetCategory () const |
decLayerMask & | GetFilter () |
Filter layer mask. More... | |
const decLayerMask & | GetFilter () const |
bool | Collides (const decCollisionFilter &other) const |
Determines if two collision filters can collide. More... | |
bool | CollidesNot (const decCollisionFilter &other) const |
Determines if two collision filters can not collide. More... | |
bool | CanCollide () const |
Collision filters can collide with another collision filter. More... | |
bool | CanNotCollide () const |
Collision filters can never collide with another collision filter. More... | |
Operators | |
bool | operator== (const decCollisionFilter &other) const |
Determines if collision filters are equal. More... | |
bool | operator!= (const decCollisionFilter &other) const |
Determines if collision filters are not equal. More... | |
decCollisionFilter & | operator= (const decCollisionFilter &other) |
Sets this collision filter from another one. More... | |
Defines a collision filter using layer masks.
Composes of a category and filter layer mask. Category is usually a single bit and the filter one or more bits. In special cases this can be different. Two collision filters collide with each other if A.category.Matches(B.filter) and B.category.Matches(A.filter). For simple layer mask matching without filtering set both category and filter to the same value. Otherwise category is usually set to the object category and the filter to all categories the object is allowed to collide with.
decCollisionFilter::decCollisionFilter | ( | ) |
Create new collision filter.
Category is set empty and filter set filled.
decCollisionFilter::decCollisionFilter | ( | const decLayerMask & | mask | ) |
Create new collision filter with category and filter set to the same mask.
decCollisionFilter::decCollisionFilter | ( | const decLayerMask & | category, |
const decLayerMask & | filter | ||
) |
Create new collision filter from a set of layer masks.
decCollisionFilter::decCollisionFilter | ( | const decCollisionFilter & | other | ) |
Create copy of a collision filter.
decCollisionFilter::~decCollisionFilter | ( | ) |
Clean up collision filter.
bool decCollisionFilter::CanCollide | ( | ) | const |
Collision filters can collide with another collision filter.
Returns true if the both the category and filter layer mask are not empty. Can be used to test if collision calculations are required for the collision filter.
bool decCollisionFilter::CanNotCollide | ( | ) | const |
Collision filters can never collide with another collision filter.
Returns true if the category and/or the filter is empty. Can be used to avoid collision calculations if a collision filter has no chance to ever collide.
bool decCollisionFilter::Collides | ( | const decCollisionFilter & | other | ) | const |
Determines if two collision filters can collide.
Tests if for both collision filters the category matches the other filter. Hence the result is this.filter.Matches(other.category) and other.filter.Matches(this.category).
bool decCollisionFilter::CollidesNot | ( | const decCollisionFilter & | other | ) | const |
Determines if two collision filters can not collide.
Tests if for any of both collision filters the category matches not the other filter. Hence the result is this.filter.MatchesNot(other.category) or other.filter.MatchesNot(this.category).
|
inline |
Category layer mask.
|
inline |
|
inline |
Filter layer mask.
|
inline |
bool decCollisionFilter::operator!= | ( | const decCollisionFilter & | other | ) | const |
Determines if collision filters are not equal.
decCollisionFilter& decCollisionFilter::operator= | ( | const decCollisionFilter & | other | ) |
Sets this collision filter from another one.
bool decCollisionFilter::operator== | ( | const decCollisionFilter & | other | ) | const |
Determines if collision filters are equal.