From d6e7f6b93e42353147a6619d039b600d5c916ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Tue, 8 Mar 2022 00:22:30 +0100 Subject: [PATCH] Havok: Add hkpCdPointCollector --- lib/hkStubs/CMakeLists.txt | 1 + .../Base/Math/Header/hkMathHeaderConstants.h | 28 +++++++++++++++ .../Collide/Agent/Query/hkpCdPointCollector.h | 34 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 lib/hkStubs/Havok/Physics2012/Collide/Agent/Query/hkpCdPointCollector.h diff --git a/lib/hkStubs/CMakeLists.txt b/lib/hkStubs/CMakeLists.txt index 41685a64..c579c6ca 100644 --- a/lib/hkStubs/CMakeLists.txt +++ b/lib/hkStubs/CMakeLists.txt @@ -93,6 +93,7 @@ add_library(hkStubs OBJECT Havok/Physics2012/Collide/Agent/Collidable/hkpCollidable.h Havok/Physics2012/Collide/Agent/Collidable/hkpCollidableQualityType.h Havok/Physics2012/Collide/Agent/ContactMgr/hkpContactMgr.h + Havok/Physics2012/Collide/Agent/Query/hkpCdPointCollector.h Havok/Physics2012/Collide/Agent3/BvTree3/hkpBvTreeAgent3.h Havok/Physics2012/Collide/Agent3/Machine/Nn/hkpAgentNnTrack.h Havok/Physics2012/Collide/Agent3/Machine/Nn/hkpLinkedCollidable.h diff --git a/lib/hkStubs/Havok/Common/Base/Math/Header/hkMathHeaderConstants.h b/lib/hkStubs/Havok/Common/Base/Math/Header/hkMathHeaderConstants.h index 18c7b2f5..b4e9a352 100644 --- a/lib/hkStubs/Havok/Common/Base/Math/Header/hkMathHeaderConstants.h +++ b/lib/hkStubs/Havok/Common/Base/Math/Header/hkMathHeaderConstants.h @@ -1,5 +1,33 @@ #pragma once +#include + +#define HK_FLOAT_PI 3.14159265358979f +#define HK_FLOAT_DEG_TO_RAD (HK_FLOAT_PI / 180.0f) +#define HK_FLOAT_RAD_TO_DEG (180.0f / HK_FLOAT_PI) +#define HK_FLOAT_EPSILON FLT_EPSILON +#define HK_FLOAT_MIN FLT_MIN +#define HK_FLOAT_MAX 3.40282e+38f +#define HK_FLOAT_HIGH 1.8446726e+019f + +#if defined(HK_REAL_IS_DOUBLE) +#define HK_REAL_PI HK_DOUBLE_PI +#define HK_REAL_DEG_TO_RAD HK_DOUBLE_DEG_TO_RAD +#define HK_REAL_RAD_TO_DEG HK_DOUBLE_RAD_TO_DEG +#define HK_REAL_EPSILON HK_DOUBLE_EPSILON +#define HK_REAL_MIN HK_DOUBLE_MIN +#define HK_REAL_MAX HK_DOUBLE_MAX +#define HK_REAL_HIGH HK_DOUBLE_HIGH +#else +#define HK_REAL_PI HK_FLOAT_PI +#define HK_REAL_DEG_TO_RAD HK_FLOAT_DEG_TO_RAD +#define HK_REAL_RAD_TO_DEG HK_FLOAT_RAD_TO_DEG +#define HK_REAL_EPSILON HK_FLOAT_EPSILON +#define HK_REAL_MIN HK_FLOAT_MIN +#define HK_REAL_MAX HK_FLOAT_MAX +#define HK_REAL_HIGH HK_FLOAT_HIGH +#endif + enum hkVectorConstant { HK_QUADREAL_BEGIN, diff --git a/lib/hkStubs/Havok/Physics2012/Collide/Agent/Query/hkpCdPointCollector.h b/lib/hkStubs/Havok/Physics2012/Collide/Agent/Query/hkpCdPointCollector.h new file mode 100644 index 00000000..d42c195d --- /dev/null +++ b/lib/hkStubs/Havok/Physics2012/Collide/Agent/Query/hkpCdPointCollector.h @@ -0,0 +1,34 @@ +#pragma once + +#include + +struct hkpCdPoint; + +class hkpCdPointCollector { +public: + HK_DECLARE_CLASS_ALLOCATOR(hkpCdPointCollector) + + inline hkpCdPointCollector(); + inline virtual ~hkpCdPointCollector() = default; + + virtual void addCdPoint(const hkpCdPoint& point) = 0; + + inline virtual void reset(); + + inline hkReal getEarlyOutDistance() const; + +protected: + hkReal m_earlyOutDistance; +}; + +inline hkpCdPointCollector::hkpCdPointCollector() { + reset(); +} + +inline void hkpCdPointCollector::reset() { + m_earlyOutDistance = HK_REAL_MAX; +} + +inline hkReal hkpCdPointCollector::getEarlyOutDistance() const { + return m_earlyOutDistance; +}