Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/lib/collision_detection/cd_engine.h @ 4542

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

orxonox/trunk: added obb tree node structure to be more modular

File size: 1.7 KB
Line 
1/*!
2    \file cd_engine.h
3    \brief Definition of the collision detection engine
4   
5*/
6
7#ifndef _CD_ENGINE_H
8#define _CD_ENGINE_H
9
10#include "base_object.h"
11#include "collision_defs.h"
12
13template<class T> class tList;
14class WorldEntity;
15
16
17//! featured state options, they are all additive
18typedef enum cdState
19  {
20    CD_DEBUG_DRAW_ALL = 1,
21    CD_DEBUG_DRAW_POLYGONS = 1<<1,
22    CD_DEBUG_DRAW_BLENDED = 1<<2,
23    CD_DEBUG_DRAW_HIT_BV = 1<<3,
24    CD_DEBUG_VERBOSE = 1<<4,
25
26    CD_STORE_VERTICES = 1<<5
27  };
28
29
30//! The class representing the collision detection system of orxonox
31class CDEngine : public BaseObject {
32
33 public:
34  virtual ~CDEngine(void);
35  /** \returns a Pointer to the only object of this Class */
36  inline static CDEngine* getInstance(void) { if (!singletonRef) singletonRef = new CDEngine();  return singletonRef; };
37  void init();
38
39  void setState(const int newState) { this->state = newState; }
40  const int getState() const { return this->state; }
41  void enable(const int options) { this->state |= options; }
42  void disable(const int options) { int temp = this->state & options; this->state ^= temp; }
43
44  void drawBV(int currentDepth, const int depth) const;
45  void drawBVPolygon(int currentDepth, const int depth) const;
46  void drawBVBlended(int currentDepth, const int depth) const;
47
48  void checkCollisions();
49
50 private:
51  CDEngine(void);
52  static CDEngine* singletonRef;
53
54  void spawnBVTree(int depth = MAX_BV_TREE_DEPTH);
55
56  void checkCollisionObjects();
57  void checkCollisionGround();
58
59
60 private:
61  int                     state;                            //!< the current state of the cd engine
62  tList<WorldEntity>*     entityList;                       //!< pointer to the world entity list
63};
64
65#endif /* _CD_ENGINE_H */
Note: See TracBrowser for help on using the repository browser.