summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2022-01-20 23:53:13 +0100
committerLéo Lam <leo@leolam.fr>2022-01-20 23:53:23 +0100
commit3379577a1e2fe0afd83ae65c529bb6ac8cd2a850 (patch)
tree797d9e003e8ba6cd100c29843f6c03b7ea4416eb /lib
parent7c3bf4a382e7eb55830397f9d2c10d9e2c2b53b2 (diff)
Havok: Add hkpBroadPhaseBorder
Diffstat (limited to 'lib')
-rw-r--r--lib/hkStubs/CMakeLists.txt2
-rw-r--r--lib/hkStubs/Havok/Physics2012/Dynamics/Phantom/hkpPhantomOverlapListener.h38
-rw-r--r--lib/hkStubs/Havok/Physics2012/Dynamics/World/BroadPhaseBorder/hkpBroadPhaseBorder.h41
3 files changed, 81 insertions, 0 deletions
diff --git a/lib/hkStubs/CMakeLists.txt b/lib/hkStubs/CMakeLists.txt
index 158ce5d6..29183b98 100644
--- a/lib/hkStubs/CMakeLists.txt
+++ b/lib/hkStubs/CMakeLists.txt
@@ -128,12 +128,14 @@ add_library(hkStubs OBJECT
Havok/Physics2012/Dynamics/Motion/Rigid/hkpFixedRigidMotion.h
Havok/Physics2012/Dynamics/Motion/Rigid/hkpKeyframedRigidMotion.h
Havok/Physics2012/Dynamics/Motion/Rigid/hkpSphereMotion.h
+ Havok/Physics2012/Dynamics/Phantom/hkpPhantomOverlapListener.h
Havok/Physics2012/Dynamics/World/hkpPhysicsSystem.h
Havok/Physics2012/Dynamics/World/hkpSimulationIsland.h
Havok/Physics2012/Dynamics/World/hkpWorld.h
Havok/Physics2012/Dynamics/World/hkpWorldCinfo.cpp
Havok/Physics2012/Dynamics/World/hkpWorldCinfo.h
Havok/Physics2012/Dynamics/World/hkpWorldObject.h
+ Havok/Physics2012/Dynamics/World/BroadPhaseBorder/hkpBroadPhaseBorder.h
Havok/Physics2012/Dynamics/World/Listener/hkpIslandActivationListener.h
Havok/Physics2012/Dynamics/World/Listener/hkpIslandPostCollideListener.h
Havok/Physics2012/Dynamics/World/Listener/hkpIslandPostIntegrateListener.h
diff --git a/lib/hkStubs/Havok/Physics2012/Dynamics/Phantom/hkpPhantomOverlapListener.h b/lib/hkStubs/Havok/Physics2012/Dynamics/Phantom/hkpPhantomOverlapListener.h
new file mode 100644
index 00000000..a41235e9
--- /dev/null
+++ b/lib/hkStubs/Havok/Physics2012/Dynamics/Phantom/hkpPhantomOverlapListener.h
@@ -0,0 +1,38 @@
+#pragma once
+
+#include <Havok/Common/Base/hkBase.h>
+
+class hkpPhantom;
+class hkpCollidable;
+
+enum hkpCollidableAccept {
+ HK_COLLIDABLE_ACCEPT = 0,
+ HK_COLLIDABLE_REJECT = 1,
+};
+
+struct hkpCollidableAddedEvent {
+ HK_DECLARE_CLASS_ALLOCATOR(hkpCollidableAddedEvent)
+
+ const hkpPhantom* m_phantom;
+ const hkpCollidable* m_collidable;
+ mutable hkpCollidableAccept m_collidableAccept;
+};
+
+struct hkpCollidableRemovedEvent {
+ HK_DECLARE_CLASS_ALLOCATOR(hkpCollidableRemovedEvent)
+
+ const hkpPhantom* m_phantom;
+ const hkpCollidable* m_collidable;
+ hkBool m_collidableWasAdded;
+};
+
+class hkpPhantomOverlapListener {
+public:
+ HK_DECLARE_CLASS_ALLOCATOR(hkpPhantomOverlapListener)
+
+ virtual void collidableAddedCallback(const hkpCollidableAddedEvent& event) = 0;
+
+ virtual void collidableRemovedCallback(const hkpCollidableRemovedEvent& event) = 0;
+
+ virtual ~hkpPhantomOverlapListener() = default;
+};
diff --git a/lib/hkStubs/Havok/Physics2012/Dynamics/World/BroadPhaseBorder/hkpBroadPhaseBorder.h b/lib/hkStubs/Havok/Physics2012/Dynamics/World/BroadPhaseBorder/hkpBroadPhaseBorder.h
new file mode 100644
index 00000000..38d6db3d
--- /dev/null
+++ b/lib/hkStubs/Havok/Physics2012/Dynamics/World/BroadPhaseBorder/hkpBroadPhaseBorder.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#include <Havok/Common/Base/hkBase.h>
+#include <Havok/Physics2012/Dynamics/Phantom/hkpPhantomOverlapListener.h>
+#include <Havok/Physics2012/Dynamics/World/Listener/hkpWorldDeletionListener.h>
+#include <Havok/Physics2012/Dynamics/World/Listener/hkpWorldPostSimulationListener.h>
+#include <Havok/Physics2012/Dynamics/World/hkpWorldCinfo.h>
+
+class hkpEntity;
+class hkpPhantom;
+class hkpWorld;
+
+class hkpBroadPhaseBorder : public hkReferencedObject,
+ protected hkpWorldDeletionListener,
+ protected hkpPhantomOverlapListener,
+ protected hkpWorldPostSimulationListener {
+public:
+ HK_DECLARE_CLASS_ALLOCATOR(hkpBroadPhaseBorder)
+
+ hkpBroadPhaseBorder(
+ hkpWorld* world,
+ hkpWorldCinfo::BroadPhaseBorderBehaviour type = hkpWorldCinfo::BROADPHASE_BORDER_ASSERT,
+ hkBool postponeAndSortCallbacks = false);
+
+ ~hkpBroadPhaseBorder() override;
+
+ virtual void maxPositionExceededCallback(hkpEntity* body);
+
+ virtual void deactivate();
+
+ void collidableAddedCallback(const hkpCollidableAddedEvent& event) override;
+ void collidableRemovedCallback(const hkpCollidableRemovedEvent& event) override;
+ void postSimulationCallback(hkpWorld* world) override;
+ void worldDeletedCallback(hkpWorld* world) override;
+
+ hkpWorld* m_world;
+ hkpPhantom* m_phantoms[6];
+ hkpWorldCinfo::BroadPhaseBorderBehaviour m_type;
+ hkBool m_postponeAndSortCallbacks;
+ hkArray<hkpEntity*> m_entitiesExitingBroadPhase;
+};