Skip to content

Commit 3960bd3

Browse files
authored
Merge pull request #5 from powerof3/boundobject
feat: `TESBoundObject`
2 parents fc11c0e + acbd75d commit 3960bd3

File tree

4 files changed

+100
-0
lines changed

4 files changed

+100
-0
lines changed

include/RE/T/TESBoundAnimObject.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include "RE/T/TESBoundObject.h"
4+
5+
namespace RE
6+
{
7+
class TESBoundAnimObject : public TESBoundObject
8+
{
9+
public:
10+
inline static constexpr auto RTTI = RTTI::TESBoundAnimObject;
11+
inline static constexpr auto VTABLE = VTABLE::TESBoundAnimObject;
12+
13+
~TESBoundAnimObject() override; // 04
14+
};
15+
static_assert(sizeof(TESBoundAnimObject) == 0x48);
16+
}

include/RE/T/TESBoundObject.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#pragma once
2+
3+
#include "RE/T/TESObject.h"
4+
#include "RE/T/TESObjectList.h"
5+
6+
namespace RE
7+
{
8+
class NiNode;
9+
class NiPoint3;
10+
11+
class TESBoundObject : public TESObject
12+
{
13+
public:
14+
inline static constexpr auto RTTI = RTTI::TESBoundObject;
15+
inline static constexpr auto VTABLE = VTABLE::TESBoundObject;
16+
17+
~TESBoundObject() override; // 04
18+
19+
// add
20+
virtual NiAVObject** Clone3D(TESObjectREFR* a_ref); // 4A
21+
virtual bool* ReplaceModel(const char* a_str); // 4B
22+
virtual void* CreateDistant3D(NiPoint3* a_loc, NiPoint3* a_rot, float* a_colors, std::uint32_t a_arraySize, std::uint32_t a_cellChunk, std::uint32_t a_cellKey, NiNode* a_instancedNode, NiNode* a_fullNode); // 4C
23+
};
24+
static_assert(sizeof(TESBoundObject) == 0x48);
25+
}

include/RE/T/TESObject.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#pragma once
2+
3+
#include "RE/T/TESForm.h"
4+
5+
namespace RE
6+
{
7+
class BipedAnim;
8+
class NiAVObject;
9+
class TESObjectList;
10+
11+
class TESObject : public TESForm
12+
{
13+
public:
14+
inline static constexpr auto RTTI = RTTI::TESObject;
15+
inline static constexpr auto VTABLE = VTABLE::TESObject;
16+
17+
~TESObject() override; // 04
18+
19+
// add
20+
virtual NiAVObject* Load3D(); // 3C
21+
virtual bool IsBoundAnimObject(); // 3D
22+
virtual bool IsAutoCalc(); // 3E
23+
virtual void SetAutoCalc(bool a_autoCalc); // 3F
24+
virtual NiAVObject* Clone3D(TESObjectREFR* a_ref, bool a_deepCopy); // 40
25+
virtual void UnClone3D(TESObjectREFR* a_ref); // 41
26+
virtual bool IsMarker(); // 42
27+
virtual void InitDefaultWorn(); // 43
28+
virtual bool ReplaceModel(); // 44
29+
virtual bool ReplaceModel(BipedAnim* a_bipedAnim); // 45
30+
virtual void Set3D(NiAVObject* a_obj); // 46
31+
virtual unsigned int IncRef(); // 47
32+
virtual unsigned int DecRef(); // 48
33+
virtual NiAVObject* LoadGraphics(TESObjectREFR* a_ref); // 49
34+
35+
// members
36+
TESObjectList* parentList; // 30
37+
TESObject* prev; // 38
38+
TESObject* next; // 40
39+
};
40+
static_assert(sizeof(TESObject) == 0x48);
41+
}

include/RE/T/TESObjectList.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
class TESObject;
6+
class TESObjectCELL;
7+
8+
class TESObjectList
9+
{
10+
public:
11+
// members
12+
std::uint32_t count; // 00
13+
TESObject* head; // 08
14+
TESObject* tail; // 10
15+
TESObjectCELL* owner; // 18
16+
};
17+
static_assert(sizeof(TESObjectList) == 0x20);
18+
}

0 commit comments

Comments
 (0)