Drag[en]gine Game Engine  1.21
decCollisionFilter Class Reference

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
decLayerMaskGetCategory ()
 Category layer mask. More...
 
const decLayerMaskGetCategory () const
 
decLayerMaskGetFilter ()
 Filter layer mask. More...
 
const decLayerMaskGetFilter () 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...
 
decCollisionFilteroperator= (const decCollisionFilter &other)
 Sets this collision filter from another one. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ decCollisionFilter() [1/4]

decCollisionFilter::decCollisionFilter ( )

Create new collision filter.

Category is set empty and filter set filled.

◆ decCollisionFilter() [2/4]

decCollisionFilter::decCollisionFilter ( const decLayerMask mask)

Create new collision filter with category and filter set to the same mask.

◆ decCollisionFilter() [3/4]

decCollisionFilter::decCollisionFilter ( const decLayerMask category,
const decLayerMask filter 
)

Create new collision filter from a set of layer masks.

◆ decCollisionFilter() [4/4]

decCollisionFilter::decCollisionFilter ( const decCollisionFilter other)

Create copy of a collision filter.

◆ ~decCollisionFilter()

decCollisionFilter::~decCollisionFilter ( )

Clean up collision filter.

Member Function Documentation

◆ CanCollide()

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.

◆ CanNotCollide()

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.

◆ Collides()

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

◆ CollidesNot()

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

◆ GetCategory() [1/2]

decLayerMask& decCollisionFilter::GetCategory ( )
inline

Category layer mask.

◆ GetCategory() [2/2]

const decLayerMask& decCollisionFilter::GetCategory ( ) const
inline

◆ GetFilter() [1/2]

decLayerMask& decCollisionFilter::GetFilter ( )
inline

Filter layer mask.

◆ GetFilter() [2/2]

const decLayerMask& decCollisionFilter::GetFilter ( ) const
inline

◆ operator!=()

bool decCollisionFilter::operator!= ( const decCollisionFilter other) const

Determines if collision filters are not equal.

◆ operator=()

decCollisionFilter& decCollisionFilter::operator= ( const decCollisionFilter other)

Sets this collision filter from another one.

◆ operator==()

bool decCollisionFilter::operator== ( const decCollisionFilter other) const

Determines if collision filters are equal.


The documentation for this class was generated from the following file: