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

69 lines
4.0 KiB
C++

#pragma once
#include "RE/B/BGSMod.h"
#include "RE/B/BGSPreviewTransform.h"
#include "RE/B/BGSSoundTagComponent.h"
#include "RE/B/BSFixedString.h"
#include "RE/B/BSTSmartPointer.h"
#include "RE/N/NiNPShortPoint3.h"
#include "RE/N/NiPointer.h"
#include "RE/T/TBO_InstanceData.h"
#include "RE/T/TESObject.h"
namespace RE
{
enum class COMMAND_REFUSAL_TYPE;
class BGSObjectInstanceExtra;
class __declspec(novtable) TESBoundObject :
public TESObject // 00
{
public:
static constexpr auto RTTI{ RTTI::TESBoundObject };
static constexpr auto VTABLE{ VTABLE::TESBoundObject };
static constexpr auto FORM_ID{ ENUM_FORM_ID::kNONE };
class BOUND_DATA
{
public:
// members
NiNPShortPoint3 boundMin; // 00
NiNPShortPoint3 boundMax; // 06
};
static_assert(sizeof(BOUND_DATA) == 0xC);
// add
virtual TBO_InstanceData* CreateInstanceData(const TBO_InstanceData*) const { return nullptr; } // 56
virtual const TBO_InstanceData* GetBaseInstanceData() const { return nullptr; } // 57
virtual bool GetAttachedMarkersVisible(NiAVObject*) const { return false; } // 58
virtual void SetAttachedMarkersVisible(NiAVObject*, bool) const { return; } // 59
virtual bool QSupportsCountPerInstance() const { return false; } // 5A
virtual void SetObjectVoiceType(BGSVoiceType*) { return; } // 5B
virtual BGSVoiceType* GetObjectVoiceType() const { return nullptr; } // 5C
virtual BGSSoundDescriptorForm* GetSoundForTag(const BSFixedString& a_tag) const; // 5D
virtual void Clone3D(TESObjectREFR* a_requester, NiPointer<NiAVObject>& a_obj3D) { TESObject::Clone3D(a_requester, a_obj3D, false); } // 5E
virtual bool ReplaceModel(const char* a_filename); // 5F
virtual bool GetActivateText(TESObjectREFR* a_itemActivated, BSString& a_resultString); // 60
virtual COMMAND_REFUSAL_TYPE CalculateDoFavor(Actor* a_actor, bool a_owned, TESObjectREFR*, float a_moralityMult) const; // 61
virtual void HandleRemoveItemFromContainer(TESObjectREFR*) { return; } // 62
virtual void OnRemove3D(NiAVObject*) { return; } // 63
virtual void OnCheckModels() { return; } // 64
virtual void OnCopyReference() { return; } // 65
virtual void OnFinishScale() { return; } // 66
void ApplyMods(BSTSmartPointer<TBO_InstanceData>& a_dest, const BGSObjectInstanceExtra* a_extra) const
{
using func_t = decltype(&TESBoundObject::ApplyMods);
static REL::Relocation<func_t> func{ ID::TESBoundObject::ApplyMods };
return func(this, a_dest, a_extra);
}
// members
BOUND_DATA boundData; // 20
BGSMod::Template::Items objectTemplate; // 30
BGSPreviewTransform previewTransform; // 50
BGSSoundTagComponent soundTagComponent; // 60
};
static_assert(sizeof(TESBoundObject) == 0x68);
}