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

90 lines
5.7 KiB
C++

#pragma once
#include "RE/N/NiRefObject.h"
namespace RE
{
class bhkBlendCollisionObject;
class bhkLimitedHingeConstraint;
class bhkNiCollisionObject;
class bhkNPCollisionObject;
class bhkRigidBody;
class BSDynamicTriShape;
class BSFadeNode;
class BSGeometry;
class BSLines;
class BSMultiBoundNode;
class BSSegmentedTriShape;
class BSSubIndexTriShape;
class BSTriShape;
class NiCloningProcess;
class NiControllerManager;
class NiGeometry;
class NiLight;
class NiNode;
class NiObjectGroup;
class NiParticles;
class NiParticleSystem;
class NiRTTI;
class NiStream;
class NiSwitchNode;
class NiTriBasedGeom;
class NiTriShape;
class NiTriStrips;
class __declspec(novtable) NiObject :
public NiRefObject // 00
{
public:
static constexpr auto RTTI{ RTTI::NiObject };
static constexpr auto VTABLE{ VTABLE::NiObject };
static constexpr auto Ni_RTTI{ Ni_RTTI::NiObject };
NiObject() { REX::EMPLACE_VTABLE(this); }
virtual ~NiObject() = default; // NOLINT(modernize-use-override) 00
// add
virtual const NiRTTI* GetRTTI() const { return nullptr; } // 02
virtual NiNode* IsNode() { return nullptr; } // 04
virtual const NiNode* IsNode() const { return nullptr; } // 03
virtual NiSwitchNode* IsSwitchNode() { return nullptr; } // 05
virtual BSFadeNode* IsFadeNode() { return nullptr; } // 06
virtual BSMultiBoundNode* IsMultiBoundNode() { return nullptr; } // 07
virtual BSGeometry* IsGeometry() { return nullptr; } // 08
virtual NiTriStrips* IsTriStrips() { return nullptr; } // 09
virtual BSTriShape* IsTriShape() { return nullptr; } // 0A
virtual BSDynamicTriShape* IsDynamicTriShape() { return nullptr; } // 0B
virtual BSSegmentedTriShape* IsSegmentedTriShape() { return nullptr; } // 0C
virtual BSSubIndexTriShape* IsSubIndexTriShape() { return nullptr; } // 0D
virtual NiGeometry* IsNiGeometry() { return nullptr; } // 0E
virtual NiTriBasedGeom* IsNiTriBasedGeom() { return nullptr; } // 0F
virtual NiTriShape* IsNiTriShape() { return nullptr; } // 10
virtual NiParticles* IsParticlesGeom() { return nullptr; } // 11
virtual NiParticleSystem* IsParticleSystem() { return nullptr; } // 12
virtual BSLines* IsLinesGeom() { return nullptr; } // 13
virtual NiLight* IsLight() { return nullptr; } // 14
virtual bhkNiCollisionObject* IsBhkNiCollisionObject() { return nullptr; } // 15
virtual bhkBlendCollisionObject* IsBhkBlendCollisionObject() { return nullptr; } // 16
virtual bhkRigidBody* IsBhkRigidBody() { return nullptr; } // 17
virtual bhkLimitedHingeConstraint* IsBhkLimitedHingeConstraint() { return nullptr; } // 18
virtual bhkNPCollisionObject* IsbhkNPCollisionObject() { return nullptr; } // 19
virtual NiObject* CreateClone([[maybe_unused]] NiCloningProcess& a_cloneData) { return nullptr; } // 1A
virtual void LoadBinary([[maybe_unused]] NiStream& a_stream) { return; } // 1B
virtual void LinkObject([[maybe_unused]] NiStream& a_stream) { return; } // 1C
virtual bool RegisterStreamables([[maybe_unused]] NiStream& a_stream) { return false; } // 1D
virtual void SaveBinary([[maybe_unused]] NiStream& a_stream) { return; } // 1E
virtual bool IsEqual([[maybe_unused]] NiObject* a_object) { return false; } // 1F
virtual void ProcessClone([[maybe_unused]] NiCloningProcess& a_cloning) {} // 20
virtual void PostLinkObject([[maybe_unused]] NiStream& a_stream) { return; } // 21
virtual bool StreamCanSkip() { return false; } // 22
virtual const NiRTTI* GetStreamableRTTI() { return GetRTTI(); } // 23
virtual std::uint32_t GetBlockAllocationSize() const { return 0; } // 24
virtual NiObjectGroup* GetGroup() const { return nullptr; } // 25
virtual void SetGroup([[maybe_unused]] NiObjectGroup*) { return; } // 26
virtual NiControllerManager* IsNiControllerManager() { return nullptr; } // 27
F4_HEAP_REDEFINE_NEW(NiObject);
};
static_assert(sizeof(NiObject) == 0x10);
}