summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2022-01-20 12:04:21 +0100
committerLéo Lam <leo@leolam.fr>2022-01-20 12:04:40 +0100
commitfe3839263e05b2f61d3fa46667b079eae0ec8e65 (patch)
treeeb8b4d27fe924ec305d75c6b3cd7a4ee55da3987 /lib
parent4935a8c950eb063795c7cb197e5533c90b0f5453 (diff)
Havok: Add hkpAction
Diffstat (limited to 'lib')
-rw-r--r--lib/hkStubs/CMakeLists.txt1
-rw-r--r--lib/hkStubs/Havok/Physics2012/Dynamics/Action/hkpAction.h89
2 files changed, 90 insertions, 0 deletions
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 <Havok/Common/Base/hkBase.h>
+
+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<hkpEntity*>& entitiesOut) = 0;
+ virtual void getPhantoms(hkArray<hkpPhantom*>& 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<hkpEntity*>& newEntities,
+ const hkArray<hkpPhantom*>& 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;
+}