Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/B/bhkPhysicsSystem.h
T
2026-05-30 18:33:24 +12:00

62 lines
1.9 KiB
C++

#pragma once
#include "RE/B/BSTArray.h"
#include "RE/H/hkArray.h"
#include "RE/H/hkLocalArray.h"
#include "RE/H/hkRefPtr.h"
#include "RE/N/NiObject.h"
namespace RE
{
class bhkWorld;
class hknpBodyId;
class hknpPhysicsSystem;
class hknpPhysicsSystemData;
class hkTransformf;
class __declspec(novtable) bhkPhysicsSystem :
public NiObject
{
public:
inline static constexpr auto RTTI{ RTTI::bhkPhysicsSystem };
inline static constexpr auto VTABLE{ VTABLE::bhkPhysicsSystem };
inline static constexpr auto Ni_RTTI{ Ni_RTTI::bhkPhysicsSystem };
bhkPhysicsSystem(hknpPhysicsSystemData* a_data)
{
using func_t = void (*)(bhkPhysicsSystem*, hknpPhysicsSystemData*);
static REL::Relocation<func_t> func{ ID::bhkPhysicsSystem::ctor };
func(this, a_data);
}
virtual ~bhkPhysicsSystem() = default; // 00
// add
virtual bhkPhysicsSystem* CreateUniqueSystem(const BSScrapArray<std::uint32_t>* a_bodyIdxA); // 28
virtual bool RemoveSubSystemFromWorld(const hkLocalArray<hknpBodyId>* a_bodyIdA); // 29
virtual bhkPhysicsSystem* CreateInstanceImpl(bhkWorld* a_world, const hkTransformf* a_initialTransform); // 2A
void AddToWorld()
{
using func_t = decltype(&bhkPhysicsSystem::AddToWorld);
static REL::Relocation<func_t> func{ ID::bhkPhysicsSystem::AddToWorld };
func(this);
}
void CopyMembers(bhkPhysicsSystem* a_dest, NiCloningProcess& a_cloningProcess)
{
using func_t = decltype(&bhkPhysicsSystem::CopyMembers);
static REL::Relocation<func_t> func{ ID::bhkPhysicsSystem::CopyMembers };
func(this, a_dest, a_cloningProcess);
}
F4_HEAP_REDEFINE_NEW(bhkPhysicsSystem);
// members
hkRefPtr<hknpPhysicsSystemData> systemData;
hkRefPtr<hknpPhysicsSystem> systemInstance;
bool activateOnAdd{ false };
};
static_assert(sizeof(bhkPhysicsSystem) == 0x28);
}