Bubba-3D  0.9.0
Awesome game engine!
TwoPhaseCollider.h
1 /*
2  * This file is part of Bubba-3D.
3  *
4  * Bubba-3D is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Bubba-3D is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with Bubba-3D. If not, see http://www.gnu.org/licenses/.
16  */
17 //
18 // Created by johan on 2016-04-13.
19 //
20 
21 #ifndef SUPER_BUBBA_AWESOME_SPACE_TWOPHASECOLLIDER_H
22 #define SUPER_BUBBA_AWESOME_SPACE_TWOPHASECOLLIDER_H
23 
24 #include <BroadPhaseCollider.h>
25 #include <ExactPhaseCollider.h>
26 #include "../../includes/Collider.h"
27 
33 class TwoPhaseCollider : public Collider{
34 public:
35  TwoPhaseCollider(BroadPhaseCollider *broadPhaseCollider, ExactPhaseCollider *exactPhaseCollider);
36 
37  void updateCollision(Scene *scene) override;
38 
39 private:
40  void triggerObjectEvent(GameObject* object1, GameObject* object2, EventType eventType);
41 
42  void forgetCollidingPair(GameObject* object1, GameObject* object2);
43  void rememberCollidingPair(GameObject* object1, GameObject* object2);
44  bool wasCollidingPreviously(GameObject* object1, GameObject* object2);
45 
46  GameObject* getMaxId(GameObject* object1, GameObject* object2);
47  GameObject* getMinId(GameObject* object1, GameObject* object2);
48 
49  CollisionPairList collidingList;
50 
51  BroadPhaseCollider *broadPhaseCollider;
52  ExactPhaseCollider *exactPhaseCollider;
53 
54  void triggerObjectEvents(CollisionPairList vector);
55 
56  void callEventsForObjectsThatNoLongerCollides(CollisionPairList exactCollisions);
57 };
58 
59 
60 #endif //SUPER_BUBBA_AWESOME_SPACE_TWOPHASECOLLIDER_H
void updateCollision(Scene *scene) override
A class for containing all information about a object in the game world.
Definition: GameObject.h:67
Definition: Scene.h:29