Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/cr/src/lib/collision_reaction/collision_handle.h @ 7978

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

cr: more memory handling now

File size: 1.7 KB
Line 
1/*!
2 * @file collision_handle.h
3 * @brief Definition of a collision handle: used for accesing per world entity collision events and reactions
4*/
5
6#ifndef _COLLISION_HANDLE_H
7#define _COLLISION_HANDLE_H
8
9#include "base_object.h"
10#include "cr_engine.h"
11
12#include <vector>
13
14
15class Collision;
16class WorldEntity;
17
18
19
20//! A class for defining collision reactions and storing events
21class CollisionHandle : public BaseObject
22{
23
24  public:
25    CollisionHandle(WorldEntity* owner, CREngine::CRType type);
26    virtual ~CollisionHandle();
27
28    void reset();
29
30    void addTarget(long classID);
31    Collision* registerCollision(WorldEntity* entityA, WorldEntity* entityB);
32    void registerCollisionEvent(CollisionEvent* collisionEvent);
33    /** @returns true if regiestered some new collision events in this tick frame */
34    inline bool isCollided() const { return this->bCollided; }
35
36    void handleCollisions();
37
38
39  private:
40    void flushCollisions();
41
42
43  private:
44    WorldEntity*                  owner;                   //!< the worldenity this reaction will be applied on
45    CREngine::CRType              type;                    //!< the reaction type
46
47    bool                          bDispatched;             //!< true if this handle has already been dispatched
48    bool                          bStopOnFirstCollision;   //!< true if the cd of this object should be terminated after one match
49    bool                          bCollided;               //!< true if the CollsionHandle has registered some new collisions
50
51    std::vector<Collision*>       collisionList;           //!< a list full of collisions
52    std::vector<long>             targetList;              //!< a list of target classes for filtering
53
54};
55
56#endif /* _COLLISION_HANDLE_H */
Note: See TracBrowser for help on using the repository browser.