PGR Copakond OpenGL Engine - Bowling
Loading...
Searching...
No Matches
collisionShape.h
Go to the documentation of this file.
1#ifndef PGR_SEM_COPAKOND_COLLISIONSHAPE_H
2#define PGR_SEM_COPAKOND_COLLISIONSHAPE_H
3
4#define DELTA_TIME_FIXED (1.0f / 20.0f)
5#include "../mesh.h"
6#include "collisionDetector.h"
7
8namespace copakond {
9 enum class ShapeType { BOX, SPHERE };
10
13 float bounciness = 0.05f;
14 float friction = 0.95f;
15 };
16
18 class CollisionShape : public Mesh {
19 protected:
20 bool _enabled = true;
21
22 void _generateGeometry(GLuint shader, const std::vector<float>& vertices, const std::vector<float>& normals);
23
24 public:
27
28 CollisionShape(const glm::vec3 &position = glm::vec3(0.0f), const glm::vec3 &rotation = glm::vec3(0.0f),
29 const glm::vec3 &scale = glm::vec3(1.0f), bool visible = false);
30
31 void draw(float deltaTime) override;
32
33 void enable() { _enabled = true; }
34 void disable() { _enabled = false; }
35 bool isEnabled() const { return _enabled; }
36
38 virtual bool collisionCheck(const CollisionShape &mesh, glm::vec3 velocity) = 0;
39
41 virtual CollisionResult collisionCheckDetailed(const CollisionShape &mesh, glm::vec3 velocity, bool calculateNormal = false) = 0;
42 };
43}
44
45#endif //PGR_SEM_COPAKOND_COLLISIONSHAPE_H
CollisionShape(const glm::vec3 &position=glm::vec3(0.0f), const glm::vec3 &rotation=glm::vec3(0.0f), const glm::vec3 &scale=glm::vec3(1.0f), bool visible=false)
Definition collisionShape.cpp:4
bool isEnabled() const
Definition collisionShape.h:35
ShapeType shapeType
Definition collisionShape.h:25
PhysicsMaterial physicsMaterial
Definition collisionShape.h:26
virtual CollisionResult collisionCheckDetailed(const CollisionShape &mesh, glm::vec3 velocity, bool calculateNormal=false)=0
Detailed collision check returning overlap status, normal, and reflection vectors.
bool _enabled
Definition collisionShape.h:20
void disable()
Definition collisionShape.h:34
virtual bool collisionCheck(const CollisionShape &mesh, glm::vec3 velocity)=0
Fast boolean check if this shape intersects with another.
void _generateGeometry(GLuint shader, const std::vector< float > &vertices, const std::vector< float > &normals)
Definition collisionShape.cpp:26
void enable()
Definition collisionShape.h:33
glm::vec3 & rotation()
Definition geometry.h:61
glm::vec3 & scale()
Definition geometry.h:62
glm::vec3 & position()
Definition geometry.h:60
Mesh()
Definition mesh.cpp:12
PGR Semestral work with sample scenes and bowling. doxygen was generated with a help of LLM.
Definition bezier.cpp:3
Shader * shader
Definition main.cpp:37
ShapeType
Definition collisionShape.h:9
@ SPHERE
Definition collisionShape.h:9
@ BOX
Definition collisionShape.h:9
void draw()
Main render loop. Handles updates, physics, and rendering of all scene elements.
Definition main.cpp:97
Container for collision response data.
Definition collisionDetector.h:12
Physical properties affecting collision resolution.
Definition collisionShape.h:12
float friction
Definition collisionShape.h:14
float bounciness
Definition collisionShape.h:13