summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2022-01-30 19:36:08 +0100
committerLéo Lam <leo@leolam.fr>2022-01-30 19:36:17 +0100
commit3a2ba7a23af481e471eb0dc49f4bb02e7b879bf2 (patch)
tree57a88b4753c0b127733ebf827dac8b834250b931 /lib
parentff2e2f9ff7a8b52b2f098bcda36f353ab9faa595 (diff)
Havok: Add hkpBoxShape
Diffstat (limited to 'lib')
-rw-r--r--lib/hkStubs/CMakeLists.txt1
-rw-r--r--lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/Box/hkpBoxShape.h44
-rw-r--r--lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/hkpConvexShape.h2
3 files changed, 47 insertions, 0 deletions
diff --git a/lib/hkStubs/CMakeLists.txt b/lib/hkStubs/CMakeLists.txt
index bf9397ba..fe6295dc 100644
--- a/lib/hkStubs/CMakeLists.txt
+++ b/lib/hkStubs/CMakeLists.txt
@@ -109,6 +109,7 @@ add_library(hkStubs OBJECT
Havok/Physics2012/Collide/Shape/Compound/Tree/hkpBvTreeShape.h
Havok/Physics2012/Collide/Shape/Compound/Tree/Mopp/hkpMoppBvTreeShape.h
Havok/Physics2012/Collide/Shape/Convex/hkpConvexShape.h
+ Havok/Physics2012/Collide/Shape/Convex/Box/hkpBoxShape.h
Havok/Physics2012/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h
Havok/Physics2012/Collide/Shape/HeightField/hkpSphereRepShape.h
Havok/Physics2012/Collide/Shape/Query/hkpRayShapeCollectionFilter.h
diff --git a/lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/Box/hkpBoxShape.h b/lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/Box/hkpBoxShape.h
new file mode 100644
index 00000000..6f1bc5e6
--- /dev/null
+++ b/lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/Box/hkpBoxShape.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include <Havok/Physics2012/Collide/Shape/Convex/hkpConvexShape.h>
+
+/// A simple box shape centered around the origin.
+class hkpBoxShape : public hkpConvexShape {
+public:
+ HK_DECLARE_CLASS_ALLOCATOR(hkpBoxShape)
+ HK_DECLARE_REFLECTION()
+ HKCD_DECLARE_SHAPE_TYPE(hkcdShapeType::BOX)
+
+public:
+ hkpBoxShape() {}
+ explicit hkpBoxShape(const hkVector4& halfExtents, hkReal radius = hkConvexShapeDefaultRadius);
+ explicit hkpBoxShape(hkFinishLoadedObjectFlag flag);
+
+ ~hkpBoxShape() override;
+
+ void getSupportingVertex(hkVector4Parameter direction,
+ hkcdVertex& supportingVertexOut) const override;
+ void convertVertexIdsToVertices(const hkpVertexId* ids, int numIds,
+ hkcdVertex* verticesOut) const override;
+ void getCentre(hkVector4& centreOut) const override;
+ int getNumCollisionSpheres() const override;
+ const hkSphere* getCollisionSpheres(hkSphere* sphereBuffer) const override;
+ void getAabb(const hkTransform& localToWorld, hkReal tolerance, hkAabb& out) const override;
+ hkBool castRay(const hkpShapeRayCastInput& input,
+ hkpShapeRayCastOutput& results) const override;
+ void getFirstVertex(hkVector4& v) const override;
+
+ inline const hkVector4& getHalfExtents() const;
+ void setHalfExtents(const hkVector4& halfExtents);
+
+protected:
+ hkVector4 m_halfExtents;
+};
+
+inline int hkpBoxShape::getNumCollisionSpheres() const {
+ return 0;
+}
+
+inline const hkVector4& hkpBoxShape::getHalfExtents() const {
+ return m_halfExtents;
+}
diff --git a/lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/hkpConvexShape.h b/lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/hkpConvexShape.h
index a9dfa55a..c53c92c3 100644
--- a/lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/hkpConvexShape.h
+++ b/lib/hkStubs/Havok/Physics2012/Collide/Shape/Convex/hkpConvexShape.h
@@ -4,6 +4,8 @@
#include <Havok/Physics2012/Collide/Shape/HeightField/hkpSphereRepShape.h>
#include <Havok/Physics2012/Collide/Shape/hkpShape.h>
+extern hkReal hkConvexShapeDefaultRadius;
+
class hkpConvexShape : public hkpSphereRepShape {
public:
HK_DECLARE_CLASS_ALLOCATOR(hkpConvexShape)