GameKit  0.0.1a
C++ gamedev tools
CollisionComponent.hpp
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: CollisionComponent.hpp
5  *
6  * Description:
7  *
8  * Created: 17/01/2018 19:39:01
9  *
10  * Author: Quentin Bazin, <quent42340@gmail.com>
11  *
12  * =====================================================================================
13  */
14 #ifndef GK_COLLISIONCOMPONENT_HPP_
15 #define GK_COLLISIONCOMPONENT_HPP_
16 
17 #include <functional>
18 #include <vector>
19 
20 #include "gk/scene/SceneObject.hpp"
21 
22 namespace gk {
23 
25  using CollisionChecker = std::function<void(SceneObject&)>;
26  using CollisionAction = std::function<void(SceneObject&, SceneObject&, bool)>;
27 
28  public:
29  void checkCollisions(SceneObject &object) {
30  for(auto &it : m_checkers) {
31  it(object);
32  }
33  }
34 
35  void collisionActions(SceneObject &object1, SceneObject &object2, bool inCollision) {
36  for(auto &it : m_actions) {
37  it(object1, object2, inCollision);
38  }
39  }
40 
41  void addChecker(CollisionChecker checker) {
42  m_checkers.push_back(checker);
43  }
44 
45  void addAction(CollisionAction action) {
46  m_actions.push_back(action);
47  }
48 
49  private:
50  std::vector<CollisionChecker> m_checkers;
51 
52  std::vector<CollisionAction> m_actions;
53 };
54 
55 } // namespace gk
56 
57 #endif // GK_COLLISIONCOMPONENT_HPP_
std::function< void(SceneObject &, SceneObject &, bool)> CollisionAction
void collisionActions(SceneObject &object1, SceneObject &object2, bool inCollision)
void addAction(CollisionAction action)
std::vector< CollisionAction > m_actions
void checkCollisions(SceneObject &object)
std::vector< CollisionChecker > m_checkers
std::function< void(SceneObject &)> CollisionChecker
void addChecker(CollisionChecker checker)