#pragma once #include "RE/B/BSFixedString.h" #include "RE/B/BSTArray.h" #include "RE/T/TESForm.h" namespace RE { class __declspec(novtable) BGSDefaultObject : public TESForm // 00 { public: static constexpr auto RTTI{ RTTI::BGSDefaultObject }; static constexpr auto VTABLE{ VTABLE::BGSDefaultObject }; static constexpr auto FORM_ID{ ENUM_FORM_ID::kDFOB }; BGSDefaultObject(const char* a_name, ENUM_FORM_ID a_formType, const char* a_description) { ctor(a_name, a_formType, a_description); } [[nodiscard]] static BSTArray* GetSingleton() { static REL::Relocation**> singleton{ ID::BGSDefaultObject::Singleton }; return *singleton; } template [[nodiscard]] T* GetForm() { return form ? form->As() : nullptr; } // members TESForm* form; // 20 ENUM_FORM_ID type; // 28 BSFixedString formEditorID; // 30 private: BGSDefaultObject* ctor(const char* a_name, ENUM_FORM_ID a_formType, const char* a_description) { using func_t = decltype(&BGSDefaultObject::ctor); static REL::Relocation func{ ID::BGSDefaultObject::ctor }; return func(this, a_name, a_formType, a_description); } }; static_assert(sizeof(BGSDefaultObject) == 0x38); }