docs: add plugin setup guide

This commit is contained in:
2026-05-30 18:33:24 +12:00
parent f3db41c402
commit b61043a3fe
1776 changed files with 122386 additions and 2 deletions
@@ -0,0 +1,109 @@
#pragma once
#include "RE/B/bhkNPCollisionObjectBase.h"
#include "RE/H/hknpMotionPropertiesId.h"
#include "RE/N/NiPointer.h"
namespace RE
{
class bhkPhysicsSystem;
class bhkWorld;
class CFilter;
class hknpBody;
class hknpBodyId;
class hknpShape;
class hkTransformf;
class __declspec(novtable) bhkNPCollisionObject :
public bhkNPCollisionObjectBase // 00
{
public:
inline static constexpr auto RTTI{ RTTI::bhkNPCollisionObject };
inline static constexpr auto VTABLE{ VTABLE::bhkNPCollisionObject };
inline static constexpr auto Ni_RTTI{ Ni_RTTI::bhkNPCollisionObject };
// add
virtual void CreateInstance(bhkWorld* a_world); // 2D
virtual void AddToWorld(bhkWorld* a_world); // 2E
virtual void RemoveFromWorld(); // 2F
virtual bool SetCollisionFilterInfo(CFilter a_filterInfo); // 30
static bhkNPCollisionObject* CreateObject()
{
using func_t = decltype(&bhkNPCollisionObject::CreateObject);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::CreateObject };
return func();
}
void CopyMembers(bhkNPCollisionObject* a_dest, NiCloningProcess& a_cloningProcess)
{
using func_t = decltype(&bhkNPCollisionObject::CopyMembers);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::CopyMembers };
func(this, a_dest, a_cloningProcess);
}
const hknpBody* GetBody()
{
using func_t = decltype(&bhkNPCollisionObject::GetBody);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::GetBody };
return func(this);
}
hknpBodyId& GetBodyId(hknpBodyId& a_bodyId)
{
using func_t = decltype(&bhkNPCollisionObject::GetBodyId);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::GetBodyId };
return func(this, a_bodyId);
}
NiPointer<bhkPhysicsSystem> GetPhysicsSystem() const
{
return system;
}
hknpShape* GetShape()
{
using func_t = decltype(&bhkNPCollisionObject::GetShape);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::GetShape };
return func(this);
}
bool GetTransform(hkTransformf& a_transform)
{
using func_t = decltype(&bhkNPCollisionObject::GetTransform);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::GetTransform };
return func(this, a_transform);
}
void SetMotionType(hknpMotionPropertiesId::Preset a_type)
{
using func_t = decltype(&bhkNPCollisionObject::SetMotionType);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::SetMotionType };
func(this, a_type);
}
void SetPhysicsSystem(NiPointer<bhkPhysicsSystem> a_system)
{
system = a_system;
}
bool SetTransform(hkTransformf& a_transform)
{
using func_t = decltype(&bhkNPCollisionObject::SetTransform);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::SetTransform };
return func(this, a_transform);
}
static bhkNPCollisionObject* Getbhk(bhkWorld* a_world, hknpBodyId& a_bodyId)
{
using func_t = decltype(&bhkNPCollisionObject::Getbhk);
static REL::Relocation<func_t> func{ ID::bhkNPCollisionObject::Getbhk };
return func(a_world, a_bodyId);
}
// members
NiPointer<bhkPhysicsSystem> system; // 20
std::uint32_t systemBodyIdx; // 28
};
static_assert(sizeof(bhkNPCollisionObject) == 0x30);
}