PCG-FPS  v2 m0.22.4
Simple First Person Shooter with Procedurally Generated Level
CollisionManager.h
Go to the documentation of this file.
1 #ifndef SKR_FPS2_COLLISION_COLLISIONMANAGER_H
2 #define SKR_FPS2_COLLISION_COLLISIONMANAGER_H
3 
4 #include "reactphysics3d.h"
5 #include "CollisionBox.h"
6 #include "OverlapCallback.h"
7 #include "CollisionCallback.h"
8 #include "RaycastCallback.h"
9 
10 #include "..\Renderer\OpenGL\RoomGeometry.h"
11 #include "..\Renderer\OpenGL\TargetGeometry.h"
12 
13 namespace skr
14 {
15 namespace fps2
16 {
17 namespace Collision
18 {
23  {
24  public:
28 
31  void Init();
32 
34  void Cleanup();
35 
38  void CheckCollision(glm::vec3 currentPosition);
39 
43  void CheckOverlap(glm::vec3 currentPosition);
44 
49 
54  void RayCast(glm::vec3 start, glm::vec3 dir);
55 
60  void RayCast(rp3d::Vector3 start, rp3d::Vector3 dir);
61 
64  rp3d::CollisionWorld* CollisionWorld();
65 
68  bool DrawHits();
69 
73 
76  size_t HitModelId();
77 
79  void ResetContactPoints();
80 
82  void ClearHits();
83 
84  private:
85  rp3d::CollisionWorld* _collisionWorld;
89 
91  bool _drawHits = true;
92  size_t _hitModelId;
93 
95  void AddCollisionToRooms();
96 
100 
102  void AddCollisionToTargets();
103 
106  };
107 
108 }
109 }
110 }
111 
112 #endif // !SKR_FPS2_COLLISION_COLLISIONMANAGER_H
113 
skr::fps2::Collision::CollisionManager::GetCurrentMeanNormalOfContactPoints
glm::vec3 GetCurrentMeanNormalOfContactPoints()
calculates mean normal of all contact points depending on the size of the collision shapes,...
Definition: CollisionManager.cpp:109
skr::fps2::Collision::CollisionBox
defines a box used to collision
Definition: CollisionBox.h:21
RaycastCallback.h
skr::fps2::Collision::CollisionManager::_collisionWorld
rp3d::CollisionWorld * _collisionWorld
collision world
Definition: CollisionManager.h:85
skr::fps2::Collision::RaycastCallback
implements rp3d::RaycastCallback from ReactPhysics3D Library Used in hit detection
Definition: RaycastCallback.h:19
skr::fps2::Collision::CollisionManager::AddCollisionToTargets
void AddCollisionToTargets()
adds collision to all targets in all rooms
Definition: CollisionManager.cpp:473
skr::fps2::Collision::CollisionManager
initialization and handling of collisions and raycast basically everything that is released to or use...
Definition: CollisionManager.h:23
skr::fps2::Collision::CollisionManager::RayCast
void RayCast(glm::vec3 start, glm::vec3 dir)
triggers raycast default length is used
Definition: CollisionManager.cpp:114
skr::fps2::Collision::CollisionManager::CollisionWorld
rp3d::CollisionWorld * CollisionWorld()
Gets pointer to the current collision world.
Definition: CollisionManager.cpp:129
skr::fps2::Collision::CollisionManager::AddCollissionWallToRoom
void AddCollissionWallToRoom(Renderer::OpenGL::RoomGeometry &rg)
adds collision walls to specified room
Definition: CollisionManager.cpp:252
skr::fps2::Collision::CollisionManager::CheckCollision
void CheckCollision(glm::vec3 currentPosition)
checks collision between objects and uses callback for notification
Definition: CollisionManager.cpp:89
skr::fps2::Collision::CollisionManager::CheckOverlap
void CheckOverlap(glm::vec3 currentPosition)
checks for overlaps between collision bodies as collision checks are quite expensive,...
Definition: CollisionManager.cpp:99
CollisionBox.h
skr::fps2::Collision::CollisionManager::_raycastCallback
RaycastCallback _raycastCallback
raycast callback object
Definition: CollisionManager.h:90
skr::fps2::Collision::CollisionManager::AddCollisionToTarget
void AddCollisionToTarget(Renderer::OpenGL::TargetGeometry &t)
adds collision boxes to all targest in a specified room
Definition: CollisionManager.cpp:490
skr::fps2::Collision::CollisionManager::_overlapCallback
OverlapCallback _overlapCallback
collision callback object
Definition: CollisionManager.h:87
CollisionCallback.h
skr::fps2::Collision::CollisionManager::DrawHits
bool DrawHits()
get value whethere hits are visualized or not
Definition: CollisionManager.cpp:134
skr::fps2::Renderer::OpenGL::TargetGeometry
manages geometry of a target
Definition: TargetGeometry.h:32
skr::fps2::Collision::CollisionManager::AddCollisionToRooms
void AddCollisionToRooms()
Adds collision to all walls and targets in all rooms.
Definition: CollisionManager.cpp:159
OverlapCallback.h
skr::fps2::Collision::CollisionManager::_hitModelId
size_t _hitModelId
model id of model for hit visualization
Definition: CollisionManager.h:92
skr::fps2::Collision::CollisionManager::Init
void Init()
initialization creates collision world, creates player collision box, adds collision to rooms and tar...
Definition: CollisionManager.cpp:30
skr::fps2::Renderer::OpenGL::RoomGeometry
holds geometry of a room
Definition: RoomGeometry.h:24
skr::fps2::Collision::CollisionManager::CollisionManager
CollisionManager()
constructor calls Init()
Definition: CollisionManager.cpp:24
skr::fps2::Collision::CollisionManager::_playerBox
CollisionBox _playerBox
collisionbox of the player
Definition: CollisionManager.h:86
skr
Definition: AssetPath.h:10
skr::fps2::Collision::CollisionCallback
implements rp3d::CollisionCallback from ReactPhysics3D Library Used in detection of collisions betwee...
Definition: CollisionCallback.h:35
skr::fps2::Collision::CollisionManager::Cleanup
void Cleanup()
destroy everything related to ReactPhysics3D (RP3D), as doing it in the destructor is too late....
Definition: CollisionManager.cpp:60
skr::fps2::Collision::CollisionManager::HitModelId
size_t HitModelId()
Gets the model id of the model used for hit visualization.
Definition: CollisionManager.cpp:144
skr::fps2::Collision::CollisionManager::GetRaycastCallback
RaycastCallback GetRaycastCallback()
Gets the current raycast callback object.
Definition: CollisionManager.cpp:139
skr::fps2::Collision::CollisionManager::_drawHits
bool _drawHits
value specifying whether hits are visualized. Default true
Definition: CollisionManager.h:91
skr::fps2::Collision::CollisionManager::_collisionCallback
CollisionCallback _collisionCallback
contact callback object
Definition: CollisionManager.h:88
skr::fps2::Collision::CollisionManager::ClearHits
void ClearHits()
clears list of registered hits
Definition: CollisionManager.cpp:154
skr::fps2::Collision::CollisionManager::ResetContactPoints
void ResetContactPoints()
clears the list of contact points
Definition: CollisionManager.cpp:149
skr::fps2::Collision::OverlapCallback
implements rp3d::OverlapCallback from ReactPhysics3D Library Used in detection of overlaps between co...
Definition: OverlapCallback.h:18