Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/cr/src/lib/collision_reaction/collision.h @ 8106

Last change on this file since 8106 was 8106, checked in by patrick, 19 years ago

cr: supporting now shared collision lists

File size: 2.2 KB
RevLine 
[7934]1/*!
[5039]2 * @file collision.h
[7959]3 *  Definition of a collision as a two WE hit each other
[7934]4 */
[4510]5
[4511]6#ifndef _COLLISION_H
7#define _COLLISION_H
[4510]8
[4520]9#include "vector.h"
[7964]10#include <vector>
[4510]11
[4520]12class WorldEntity;
13class BoundingVolume;
[7959]14class CollisionEvent;
[4510]15
[4511]16//! A class representing a simple collision
[7968]17class Collision
18{
[4510]19
[7968]20  public:
21    Collision();
22    virtual ~Collision();
[4510]23
[7968]24    /** collides two WorldEntities @param entityA world entity A, @param entityB world entity B, @param bvA volume A @param bvB volumeB */
25    inline void collide(WorldEntity* entityA, WorldEntity* entityB) { this->entityA = entityA; this->entityB = entityB; }
[7934]26
27
[7968]28    /** @return Collision WorldEntity A */
29    inline WorldEntity* getEntityA() const { return this->entityA; }
30    /** @return Collision WorldEntity B */
31    inline WorldEntity* getEntityB() const { return this->entityB; }
[8106]32    /** @return true if Entity A collides */
33    inline bool isEntityACollide() { return this->entityACollide; }
34    /** @return true if Entity B collides */
35    inline bool isEntityBCollide() { return this->entityBCollide; }
[7940]36
[8029]37    /** @returns true if this Collision has already been dispatched */
38    inline bool isDispatched() { return this->bDispatched; }
39
[7968]40    /** registers a @param event CollisionEvent to take place */
41    inline void registerCollisionEvent(CollisionEvent* event) { this->collisionEvents.push_back(event); }
[8006]42    /** @returns a vector of collision events */
43    inline const std::vector<CollisionEvent*>& getCollisionEvents() const { return this->collisionEvents; }
[7940]44
[8106]45
46
[7968]47    void handleCollisionEvents();
[7959]48
[7934]49
[7968]50  private:
51    void flushCollisionEvents();
52
53
54  private:
55    WorldEntity*                 entityA;                       //!< the collision body A
56    WorldEntity*                 entityB;                       //!< the collision body B
[8106]57    bool                         entityACollide;                //!< true if entity A is subscribed for collision reaction
58    bool                         entityBCollide;                //!< true if entity B is subscribed for collision reaction
[7968]59
[8029]60    bool                         bDispatched;                   //!< true if this collision has already been dispatched
61
[7968]62    std::vector<CollisionEvent*> collisionEvents;               //!< the collision event list
[4510]63};
64
[4511]65#endif /* _COLLISION_H */
Note: See TracBrowser for help on using the repository browser.