mirror of https://github.com/zeldaret/botw.git
Havok: Add hkpBroadPhaseBorder
This commit is contained in:
parent
7c3bf4a382
commit
3379577a1e
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
|
@ -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;
|
||||
};
|
Loading…
Reference in New Issue