Hummingbird Framework
 All Classes Functions Variables Modules Pages
CollisionComponent.h
1 #ifndef HB_COLLISION_COMPONENT_H
2 #define HB_COLLISION_COMPONENT_H
3 #include <queue>
4 #include <set>
5 #include "../Core/Transform.h"
6 #include "../Core/GameObject.h"
7 #include "../Core/Vector2d.h"
8 #include "../Core/Vector3d.h"
9 #include "Rect.h"
10 
11 namespace hb
12 {
18  {
19  public:
20  struct Collision
21  {
22  Rect intersection;
23  GameObject* object;
24  };
25  CollisionComponent(const Vector2d& size = Vector2d());
26  CollisionComponent(double width, double height);
27  virtual ~CollisionComponent() override;
28 
29  virtual void preUpdate() override;
30  virtual void postUpdate() override;
31  void setSize(const Vector2d& box);
32  const Vector2d& getSize() const;
33 
34  static void executeCollisions();
35 
36  Collision nextCollision();
37  bool empty() const;
38 
39  private:
40  static bool s_collisions_executed;
41  static std::set<CollisionComponent*> s_components;
42 
43  Vector2d m_size;
44  std::queue<Collision> m_collisions;
45  std::set<CollisionComponent*>::iterator m_me;
46  };
47 }
48 #endif
Definition: CollisionComponent.h:20
Object with a position, rotation and scale in a 3D space.
Definition: Transform.h:12
virtual void preUpdate() override
Function called in the pre-update step.
Definition: Rect.h:13
Definition: Box2DPlugin.h:6
Base class for implementing custom Components.
Definition: GameObject.h:57
GameObject (also known as Actor).
Definition: GameObject.h:50
virtual void postUpdate() override
Function called in the post-update step.
A 2D vector.
Definition: Vector2d.h:14
Definition: CollisionComponent.h:17