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 + +/// 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 #include +extern hkReal hkConvexShapeDefaultRadius; + class hkpConvexShape : public hkpSphereRepShape { public: HK_DECLARE_CLASS_ALLOCATOR(hkpConvexShape)