diff --git a/lib/hkStubs/CMakeLists.txt b/lib/hkStubs/CMakeLists.txt index d60f9d99..20207f3b 100644 --- a/lib/hkStubs/CMakeLists.txt +++ b/lib/hkStubs/CMakeLists.txt @@ -104,6 +104,7 @@ add_library(hkStubs OBJECT Havok/Physics2012/Collide/Shape/Query/hkpShapeRayCastInput.h Havok/Physics2012/Collide/Util/Welding/hkpWeldingUtility.h + Havok/Physics2012/Dynamics/Action/hkpAction.h Havok/Physics2012/Dynamics/Collide/hkpResponseModifier.h Havok/Physics2012/Dynamics/Common/hkpMaterial.h Havok/Physics2012/Dynamics/Common/hkpProperty.h diff --git a/lib/hkStubs/Havok/Physics2012/Dynamics/Action/hkpAction.h b/lib/hkStubs/Havok/Physics2012/Dynamics/Action/hkpAction.h new file mode 100644 index 00000000..c0411c9c --- /dev/null +++ b/lib/hkStubs/Havok/Physics2012/Dynamics/Action/hkpAction.h @@ -0,0 +1,89 @@ +#pragma once + +#include + +class hkStepInfo; +class hkpEntity; +class hkpSimulationIsland; +class hkpPhantom; +class hkpWorld; + +class hkpAction : public hkReferencedObject { +public: + HK_DECLARE_CLASS_ALLOCATOR(hkpAction) + HK_DECLARE_REFLECTION() + + inline explicit hkpAction(hkUlong userData); + explicit hkpAction(hkFinishLoadedObjectFlag flag) : hkReferencedObject(flag), m_name(flag) {} + + ~hkpAction() override = default; + + virtual void applyAction(const hkStepInfo& stepInfo) = 0; + virtual void getEntities(hkArray& entitiesOut) = 0; + virtual void getPhantoms(hkArray& phantomsOut) {} + + inline hkpWorld* getWorld(); + + virtual void entityRemovedCallback(hkpEntity* entity) = 0; + + inline hkUlong getUserData() const; + inline void setUserData(hkUlong data); + + inline const char* getName() const; + inline void setName(const char* name); + + virtual hkpAction* clone(const hkArray& newEntities, + const hkArray& newPhantoms) const = 0; + + // For internal use. + inline hkpSimulationIsland* getSimulationIsland(); + inline void setSimulationIsland(hkpSimulationIsland* island); + inline void setWorld(hkpWorld* owner); + +private: + hkpWorld* m_world; + hkpSimulationIsland* m_island; + +protected: + friend class hkpWorld; + friend class hkpWorldOperationUtil; + friend class hkpSimulationIsland; + + hkUlong m_userData; + hkStringPtr m_name; +}; + +inline hkpAction::hkpAction(hkUlong userData) + : m_world(nullptr), m_island(nullptr), m_userData(userData) {} + +inline hkpWorld* hkpAction::getWorld() { + return m_world; +} + +inline hkUlong hkpAction::getUserData() const { + return m_userData; +} + +inline void hkpAction::setUserData(hkUlong data) { + m_userData = data; +} + +inline const char* hkpAction::getName() const { + return m_name; +} + +inline void hkpAction::setName(const char* name) { + m_name = name; +} + +inline hkpSimulationIsland* hkpAction::getSimulationIsland() { + return m_island; +} + +inline void hkpAction::setSimulationIsland(hkpSimulationIsland* isl) { + m_island = isl; +} + +inline void hkpAction::setWorld(hkpWorld* owner) { + m_world = owner; +}