UGDK  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
collisionclass.h
Go to the documentation of this file.
1 #ifndef PYRAMIDWORKS_COLLISION_COLLISIONMASK_H_
2 #define PYRAMIDWORKS_COLLISION_COLLISIONMASK_H_
3 
4 #include <string>
5 #include <list>
6 #include <set>
7 #include <memory>
8 #include <ugdk/structure.h>
9 #include <ugdk/math.h>
10 #include <pyramidworks/collision.h>
11 #include <pyramidworks/geometry.h>
12 
13 namespace pyramidworks {
14 namespace collision {
15 
19  public:
21  const CollisionClass* parent() const { return parent_; }
22 
23  void FindCollidingObjects(const CollisionObject *target, CollisionObjectList& collisions) const;
24  void FindCollidingObjects(const ugdk::math::Vector2D& position, const geometry::GeometricShape& shape, CollisionObjectList& collisions) const;
25 
26  void AddObject(const CollisionObject *obj);
27  void RemoveObject(const CollisionObject *obj);
28  void RefreshObject(const CollisionObject *obj);
29 
31 
32 #ifdef DEBUG
33  const std::string& name() const { return name_; }
34  void set_name(const std::string &name) { name_ = name; }
35 #endif
36  private:
37  friend class CollisionManager;
38  CollisionClass(const ugdk::structure::Box<2>& tree_bounding_box);
39 
40  CollisionClass(const CollisionClass&); // Uncopyable
41  void operator=(const CollisionClass&); // Uncopyable
42 
43 #ifdef DEBUG
44  // Unnecessary, used for debugging purposes.
45  std::string name_;
46 #endif
47  CollisionClass* parent_;
48  std::unique_ptr<ObjectTree> objects_tree_;
49 };
50 
51 } // namespace collision
52 } // namespace pyramidworks
53 
54 #endif /* PYRAMIDWORKS_COLLISION_COLLISIONMASK_H_ */
std::list< const CollisionObject * > CollisionObjectList
Definition: collision.h:14
Definition: vector2D.h:18
Definition: collisionclass.h:17
Definition: collisionclass.h:13
void RemoveObject(const CollisionObject *obj)
void FindCollidingObjects(const CollisionObject *target, CollisionObjectList &collisions) const
Definition: intervalkdtree.h:21
void RefreshObject(const CollisionObject *obj)
Definition: geometricshape.h:13
void AddObject(const CollisionObject *obj)
A class that knows how to manage collisions.
Definition: collisionobject.h:22
void ChangeParent(CollisionClass *parent)
Definition: collisionmanager.h:19
const CollisionClass * parent() const
Definition: collisionclass.h:21