From a556b45abf18f1bd509daaf63b66b7d55e9fd291 Mon Sep 17 00:00:00 2001 From: jjesswan Date: Mon, 22 Apr 2024 21:56:26 -0400 Subject: add engine version --- .../CollisionComponents/collisioncomponent.h | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 engine-ocean/Game/Components/CollisionComponents/collisioncomponent.h (limited to 'engine-ocean/Game/Components/CollisionComponents/collisioncomponent.h') diff --git a/engine-ocean/Game/Components/CollisionComponents/collisioncomponent.h b/engine-ocean/Game/Components/CollisionComponents/collisioncomponent.h new file mode 100644 index 0000000..daef723 --- /dev/null +++ b/engine-ocean/Game/Components/CollisionComponents/collisioncomponent.h @@ -0,0 +1,49 @@ +#ifndef COLLISIONCOMPONENT_H +#define COLLISIONCOMPONENT_H + +#include "Game/Components/CollisionComponents/BoundingShape.h" +#include +#include +#include "Game/TypeMap.h" +#include "Graphics/modeltransform.h" +#include "glm/glm.hpp" +#include "Game/Components/Component.h" + + +class CollisionComponent : public Component +{ +public: + template + void addCollisionShape(std::shared_ptr &&component){ + m_collision_shapes.put(std::forward>(component)); + } + + template + bool hasCollisionShape(){ + return m_collision_shapes.contains(); + } + + template + T* getCollisionShape(){ + auto comp = m_collision_shapes.find(); + assert(comp != m_collision_shapes.end()); + return static_cast(comp->second.get()); + } + + CollisionComponent(std::string shapeType, std::shared_ptr mt, const glm::vec3 &initial_pos, std::vector &obj_data); + CollisionComponent(std::string shapeType, std::shared_ptr mt, const glm::vec3 &initial_pos); + CollisionComponent(std::string shapeType, const std::vector &obj_data, const std::shared_ptr &mt, + bool isGround = false); + + bool isRigidBody(); + float getReboundVel(); + float getAcceleration(); + +private: + TypeMap> m_collision_shapes; + bool m_isRigid = true; + float m_rebound_vel = 0.f; + float m_acceleration = 0.f; +}; + +#endif // COLLISIONCOMPONENT_H -- cgit v1.2.3-70-g09d2