Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/coll_rect/src/lib/collision_reaction/collision_tube.h @ 9890

Last change on this file since 9890 was 9890, checked in by patrick, 17 years ago

intruducing new container collision_tube. which serves as a central collision registration tube.

File size: 1.4 KB
Line 
1/*!
2 * @file collision_tube.h
3 *
4 * collision tube collects all collisions from all entities
5 */
6
7#ifndef _COLLISION_TUBE_H
8#define _COLLISION_TUBE_H
9
10#include "base_object.h"
11#include "cr_engine.h"
12#include "world_entity.h"
13
14#include "vector.h"
15#include <vector>
16
17class Collision;
18class WorldEntity;
19class BoundingVolume;
20
21namespace CoRe
22{
23
24  class CollisionReaction;
25
26  //! A class for defining collision reactions and storing events
27  class CollisionTube : public BaseObject
28  {
29    ObjectListDeclaration(CollisionTube);
30
31
32  public:
33    CollisionTube();
34    ~CollisionTube();
35
36    /** @returns true if at least one of both WorldEntities are subscribed for a collision check */
37    inline bool isReactive(const WorldEntity& entityA, const WorldEntity& entityB) const
38    { return (entityA.isReactive() && entityB.isReactive()); }
39
40    bool registerCollisionEvent(WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB);
41    bool registerCollisionEvent(int type, WorldEntity* entity, WorldEntity* groundEntity,
42                                const Vector& normal, const Vector& position, bool bInWall = false);
43
44    void handleCollisions();
45
46
47  private:
48    /* private copy constructor so this object can't be passed as a */
49    CollisionTube(const CollisionTube& tube) {}
50
51
52  private:
53    std::vector<Collision*>        _collisionList;      //!< the list of collisions since the last processing
54
55  };
56
57}
58
59#endif /* _COLLISION_TUBE_H */
Note: See TracBrowser for help on using the repository browser.