summaryrefslogtreecommitdiff
path: root/engine-ocean/Game/Components/CollisionComponents/CylinderCollider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engine-ocean/Game/Components/CollisionComponents/CylinderCollider.cpp')
-rw-r--r--engine-ocean/Game/Components/CollisionComponents/CylinderCollider.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/engine-ocean/Game/Components/CollisionComponents/CylinderCollider.cpp b/engine-ocean/Game/Components/CollisionComponents/CylinderCollider.cpp
new file mode 100644
index 0000000..3dfded9
--- /dev/null
+++ b/engine-ocean/Game/Components/CollisionComponents/CylinderCollider.cpp
@@ -0,0 +1,47 @@
+#include "cylindercollider.h"
+#include "Game/Components/CollisionComponents/BoundingTriangle.h"
+#include "Graphics/modeltransform.h"
+
+CylinderCollider::CylinderCollider(glm::vec3 initial_pos, glm::vec3 initial_scale){
+ m_scale = initial_scale;
+
+ m_cyl.point = glm::vec2(initial_pos.x, initial_pos.z);
+ m_cyl.radius = .5f * glm::max(initial_scale.x, initial_scale.z);
+ m_cyl.height = 1.f * abs(initial_scale.y);
+ m_cyl.min = initial_pos.y - (initial_scale.y/2.f);
+ m_cyl.max = initial_pos.y + (initial_scale.y/2.f);
+
+ m_cyl.aabbDimensions = abs(glm::vec3(2*m_cyl.radius, m_cyl.height, 2*m_cyl.radius));
+ m_cyl.aabbCenterPos = initial_pos;
+
+ updateBounds();
+}
+
+void CylinderCollider::updateCollisionPos(glm::vec3 new_pos){
+ m_cyl.point = glm::vec2(new_pos.x, new_pos.z); // x and z loc
+ m_cyl.radius = .5f * m_scale.x; // x and z dim
+ m_cyl.height = 1.f * m_scale.y; // y dimensions
+ m_cyl.min = new_pos.y - (m_scale.y/2.f); // y coord
+ m_cyl.max = new_pos.y + (m_scale.y/2.f); // y coord
+ m_cyl.aabbCenterPos = new_pos;
+
+ updateBounds();
+}
+
+
+void CylinderCollider::updateBounds(){
+ Bounds3f bounds;
+ bounds.min = glm::vec3(m_cyl.aabbCenterPos-glm::vec3(m_cyl.aabbDimensions/2.f));
+ bounds.max = glm::vec3(m_cyl.aabbCenterPos+glm::vec3(m_cyl.aabbDimensions/2.f));
+
+ m_cyl.bounds = bounds;
+}
+
+
+Cylinder CylinderCollider::getCylinder(){
+ return m_cyl;
+}
+
+
+
+