summaryrefslogtreecommitdiff
path: root/engine-ocean/Game/Components/CollisionComponents/CollisionComponent.cpp
blob: bea3f9e88433d531db84365bb19aa11157794b9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "collisioncomponent.h"
#include "Game/Components/CollisionComponents/BoundingTriangle.h"
#include "Game/Components/CollisionComponents/CylinderCollider.h"
#include "Game/Components/CollisionComponents/BoundingDynamicMesh.h"
#include "Graphics/shape.h"
#include <memory>

// for dynamic objects
CollisionComponent::CollisionComponent(std::string shapeType, std::shared_ptr<ModelTransform> mt, const glm::vec3 &initial_pos)
{
    if (shapeType == "dynamic_mesh"){
        //addCollisionShape<CylinderCollider>(std::make_shared<CylinderCollider>(initial_pos, initial_scale));
        addCollisionShape<BoundingDynamicMesh>(std::make_shared<BoundingDynamicMesh>(mt, initial_pos));
    }
}

CollisionComponent::CollisionComponent(std::string shapeType, std::shared_ptr<ModelTransform> mt, const glm::vec3 &initial_pos, std::vector<glm::vec3> &obj_data)
{
    if (shapeType == "dynamic_mesh"){
        addCollisionShape<BoundingDynamicMesh>(std::make_shared<BoundingDynamicMesh>(mt, initial_pos, obj_data));
    }
}

// for rigid meshes / environment
CollisionComponent::CollisionComponent(std::string shapeType,
                                       const std::vector<glm::vec3> &obj_data,
                                       const std::shared_ptr<ModelTransform> &mt,
                                       bool isGround){
    if (shapeType == "obj"){
        addCollisionShape<BoundingTriangle>(std::make_shared<BoundingTriangle>(obj_data, mt, isGround));
    }

}



bool CollisionComponent::isRigidBody(){
    return m_isRigid;
}

float CollisionComponent::getReboundVel(){
    return m_rebound_vel;
}

float CollisionComponent::getAcceleration(){
    return m_acceleration;
}