diff options
| author | Léo Lam <leo@leolam.fr> | 2022-01-20 23:53:13 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2022-01-20 23:53:23 +0100 |
| commit | 3379577a1e2fe0afd83ae65c529bb6ac8cd2a850 (patch) | |
| tree | 797d9e003e8ba6cd100c29843f6c03b7ea4416eb /lib | |
| parent | 7c3bf4a382e7eb55830397f9d2c10d9e2c2b53b2 (diff) | |
Havok: Add hkpBroadPhaseBorder
Diffstat (limited to 'lib')
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; +}; |
