#pragma once #include "RE/H/hkArray.h" #include "RE/H/hkRefPtr.h" #include "RE/H/hkReferencedObject.h" #include "RE/H/hknpActivation.h" #include "RE/H/hknpBodyId.h" #include "RE/H/hknpConstraintId.h" #include "RE/H/hknpWorld.h" namespace RE { class hknpPhysicsSystemData; class __declspec(novtable) hknpPhysicsSystem : public hkReferencedObject { public: static constexpr auto RTTI{ RTTI::hknpPhysicsSystem }; static constexpr auto VTABLE{ VTABLE::hknpPhysicsSystem }; enum class Flags : std::int32_t { CLONE_POWERABLE_CONSTRAINT_DATAS = 0x1, FORCE_EXPORTABLE_CONSTRAINTS = 0x2, CREATE_CONSTRAINTS = 0x4, DEFAULT_FLAGS = 0x5, }; virtual ~hknpPhysicsSystem(); // 00 void AddToWorld(hknpWorld::AdditionMode a_additionMode, hkFlags a_additionFlags, hknpActivationMode::Enum a_constraintActivationMode) { using func_t = decltype(&hknpPhysicsSystem::AddToWorld); static REL::Relocation func{ ID::hknpPhysicsSystem::AddToWorld }; func(this, a_additionMode, a_additionFlags, a_constraintActivationMode); } void RemoveFromWorld() { using func_t = decltype(&hknpPhysicsSystem::RemoveFromWorld); static REL::Relocation func{ ID::hknpPhysicsSystem::RemoveFromWorld }; func(this); } // members hkRefPtr m_data; // 0x10 hkRefPtr m_world; // 0x18 hkArray m_bodyIds; // 0x20 hkArray m_constraintIds; // 0x30 }; static_assert(sizeof(hknpPhysicsSystem) == 0x40); }