CommonLibVR
Loading...
Searching...
No Matches
TES.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/B/BSContainer.h"
4#include "RE/B/BSTEvent.h"
5#include "RE/B/BSTList.h"
6#include "RE/B/BSTTuple.h"
8#include "RE/M/MaterialIDs.h"
9#include "RE/N/NiPoint3.h"
10#include "RE/N/NiSmartPointer.h"
11
12namespace RE
13{
14 namespace BSResource
15 {
16 struct ArchiveStreamOpenedEvent;
17 }
18
19 class BSSystemEvent;
20 class BSTempNodeManager;
21 class GridCellArray;
22 class ImageSpaceModifierInstance;
23 class NavMeshInfoMap;
24 class NiAVObject;
25 class NiDirectionalLight;
26 class NiFogProperty;
27 class NiNode;
28 class Sky;
29 class TESLandTexture;
30 class TESNPC;
31 class TESObjectCELL;
32 class TESObjectREFR;
33 class TESWorldSpace;
34
35 struct bhkPickData;
36 struct PositionPlayerEvent;
37
38 class TES :
39 public ICellAttachDetachEventSource, // 000
40 public BSTEventSink<BSResource::ArchiveStreamOpenedEvent>, // 060
41 public BSTEventSink<PositionPlayerEvent> // 068
42 {
43 public:
44 inline static constexpr auto RTTI = RTTI_TES;
45 inline static constexpr auto VTABLE = VTABLE_TES;
46
47 class SystemEventAdapter : public BSTEventSink<BSSystemEvent>
48 {
49 public:
50 inline static constexpr auto RTTI = RTTI_TES;
51 inline static constexpr auto VTABLE = VTABLE_TES;
52
53 ~SystemEventAdapter() override; // 00
54
55 // override (BSTEventSink<BSSystemEvent>)
56 BSEventNotifyControl ProcessEvent(const BSSystemEvent* a_event, BSTEventSource<BSSystemEvent>* a_eventSource) override; // 01
57
58 // members
59 std::uint64_t unk08; // 08
60 };
61 static_assert(sizeof(SystemEventAdapter) == 0x10);
62
63 ~TES() override; // 00
64
65 // override (BSTEventSink<BSResource::ArchiveStreamOpenedEvent>)
66 BSEventNotifyControl ProcessEvent(const BSResource::ArchiveStreamOpenedEvent* a_event, BSTEventSource<BSResource::ArchiveStreamOpenedEvent>* a_eventSource) override; // 01 - { return BSEventNotifyControl::kContinue; }
67
68 // override (BSTEventSink<PositionPlayerEvent>)
70
71 static TES* GetSingleton();
72
73 void ForEachCell(std::function<void(TESObjectCELL*)> a_callback);
74 void ForEachCellInRange(TESObjectREFR* a_origin, float a_radius, std::function<void(TESObjectCELL*)> a_callback);
76 void ForEachReferenceInRange(TESObjectREFR* a_origin, float a_radius, std::function<BSContainer::ForEachResult(TESObjectREFR*)> a_callback);
77
78 TESObjectCELL* GetCell(const NiPoint3& a_position) const;
79 MATERIAL_ID GetLandMaterialType(const NiPoint3& a_position) const;
80 bool GetLandHeight(const NiPoint3& a_positionIn, float& a_heightOut);
81 TESLandTexture* GetLandTexture(const NiPoint3& a_position) const;
82 float GetWaterHeight(const NiPoint3& a_pos, TESObjectCELL* a_cell) const;
85
86 // members
87 std::uint64_t unk070; // 070
89 NiNode* objRoot; // 080
92 BSTempNodeManager* tempNodeManager; // 098
94 NiFogProperty* objFog; // 0A8
95 std::int32_t currentGridX; // 0B0
96 std::int32_t currentGridY; // 0B4
97 std::int32_t currentQueuedX; // 0B8
98 std::int32_t currentQueuedY; // 0BC
102 std::uint64_t unk0D8; // 0D8
103 std::int32_t saveGridX; // 0E0
104 std::int32_t saveGridY; // 0E0
105 std::uint64_t unk0E8; // 0E8
106 std::uint64_t unk0F0; // 0F0
107 std::uint64_t unk0F8; // 0F8
108 Sky* sky; // 100
110 std::uint64_t unk118; // 118
111 std::uint64_t unk120; // 120
112#ifdef SKYRIM_SUPPORT_AE
113 std::uint32_t unk128; // 128
114 std::uint32_t landBorderMode; // 12C
115 std::uint32_t borderColorAGBR; // 130
116#else
117 std::uint8_t unk128; // 128
118 bool showLANDborders; // 129
119 std::uint8_t unk12A; // 12A
120 std::uint8_t unk12B; // 12B
121 std::uint8_t unk12C; // 12C
122 std::uint8_t unk12D; // 12D
123 std::uint8_t unk12E; // 12E
124 std::uint8_t unk12F; // 12F
125 std::uint16_t unk130; // 130
126 std::uint8_t unk132; // 132
127 std::uint8_t unk133; // 133
128#endif
129 std::uint32_t unk134; // 134
130 std::uint64_t unk138; // 138
131#ifdef SKYRIM_SUPPORT_AE
132 std::uint64_t unk140; // 140 - actual offset change is somewhere near showLandBorder
133#endif
136 void* unk158; // 158 - smart ptr
137 void* unk160; // 160 - smart ptr
138 void* unk168; // 168 - smart ptr
139 void* unk170; // 170 - smart ptr
140 std::uint64_t unk178; // 178
141 std::uint64_t unk180; // 180
142 std::uint64_t unk188; // 188
143 std::uint64_t unk190; // 190
144 std::uint64_t unk198; // 198
145 std::uint64_t unk1A0; // 1A0
146 std::uint64_t unk1A8; // 1A8
147 std::uint64_t unk1B0; // 1B0
148 std::uint64_t unk1B8; // 1B8
149 std::uint64_t unk1C0; // 1C0
150 std::uint64_t unk1C8; // 1C8
151 std::uint64_t unk1D0; // 1D0
152 std::uint64_t unk1D8; // 1D8
153 std::uint64_t unk1E0; // 1E0
154 std::uint64_t unk1E8; // 1E8
155 std::uint64_t unk1F0; // 1F0
156 std::uint64_t unk1F8; // 1F8
157 std::uint64_t unk200; // 200
158 std::uint64_t unk208; // 208
159 std::uint64_t unk210; // 210
160 std::uint64_t unk218; // 218
161 std::uint64_t unk220; // 220
162 std::uint64_t unk228; // 228
163 std::uint64_t unk230; // 230
164 std::uint64_t unk238; // 238
165 std::uint64_t unk240; // 240
166 std::uint64_t unk248; // 248
167 std::uint64_t unk250; // 250
168 std::uint64_t unk258; // 258
169 std::uint64_t unk260; // 260
170 std::uint64_t unk268; // 268
171 std::uint64_t unk270; // 270
172 std::uint64_t unk278; // 278
173 std::uint64_t unk280; // 280
174 std::uint64_t unk288; // 288
176 std::uint64_t unk2A0; // 2A0
178 std::uint64_t unk2B0; // 2B0
179 private:
181 };
182#ifndef SKYRIMVR
183# ifndef SKYRIM_SUPPORT_AE
184 static_assert(sizeof(TES) == 0x2B8);
185# else
186 static_assert(sizeof(TES) == 0x2C0);
187# endif
188#else
189 static_assert(sizeof(TES) == 0x2B8);
190#endif
191}
#define KEEP_FOR_RE()
Definition PCH.h:518
Definition BSTList.h:10
Definition BSTEvent.h:185
Definition BSTEvent.h:19
Definition GridCellArray.h:11
Definition ICellAttachDetachEventSource.h:13
Definition NavMeshInfoMap.h:19
Definition NiAVObject.h:57
Definition NiDirectionalLight.h:10
Definition NiNode.h:12
Definition NiPoint3.h:6
Definition Sky.h:32
Definition TESLandTexture.h:17
Definition TESObjectCELL.h:119
Definition TESObjectREFR.h:106
Definition TESWorldSpace.h:120
Definition TES.h:48
static constexpr auto RTTI
Definition TES.h:50
std::uint64_t unk08
Definition TES.h:59
BSEventNotifyControl ProcessEvent(const BSSystemEvent *a_event, BSTEventSource< BSSystemEvent > *a_eventSource) override
static constexpr auto VTABLE
Definition TES.h:51
Definition TES.h:42
void * unk158
Definition TES.h:136
std::int32_t currentQueuedY
Definition TES.h:98
std::uint64_t unk1B8
Definition TES.h:148
std::uint64_t unk208
Definition TES.h:158
std::uint64_t unk118
Definition TES.h:110
SystemEventAdapter unk290
Definition TES.h:175
std::uint8_t unk132
Definition TES.h:126
std::int32_t currentQueuedX
Definition TES.h:97
std::uint8_t unk12B
Definition TES.h:120
BSSimpleList< NiPointer< ImageSpaceModifierInstance > > activeImageSpaceModifiers
Definition TES.h:109
void * unk170
Definition TES.h:139
std::uint64_t unk250
Definition TES.h:167
bool showLANDborders
Definition TES.h:118
BSSimpleList< BSTTuple< TESNPC *, std::uint16_t > * > deadCount
Definition TES.h:135
std::uint64_t unk278
Definition TES.h:172
std::uint64_t unk288
Definition TES.h:174
bool GetLandHeight(const NiPoint3 &a_positionIn, float &a_heightOut)
void * unk160
Definition TES.h:137
std::int32_t currentGridY
Definition TES.h:96
std::uint64_t unk1E0
Definition TES.h:153
std::uint64_t unk0F8
Definition TES.h:107
TESWorldSpace * worldSpace
Definition TES.h:134
NiFogProperty * objFog
Definition TES.h:94
std::uint8_t unk12D
Definition TES.h:122
static constexpr auto RTTI
Definition TES.h:44
std::uint8_t unk133
Definition TES.h:127
void * unk168
Definition TES.h:138
std::uint64_t unk280
Definition TES.h:173
std::uint64_t unk200
Definition TES.h:157
Sky * sky
Definition TES.h:108
std::uint64_t unk1C8
Definition TES.h:150
MATERIAL_ID GetLandMaterialType(const NiPoint3 &a_position) const
std::uint64_t unk260
Definition TES.h:169
void ForEachCellInRange(TESObjectREFR *a_origin, float a_radius, std::function< void(TESObjectCELL *)> a_callback)
NavMeshInfoMap * unk2A8
Definition TES.h:177
std::uint64_t unk240
Definition TES.h:165
std::uint32_t unk134
Definition TES.h:129
std::uint64_t unk210
Definition TES.h:159
std::uint64_t unk188
Definition TES.h:142
std::int32_t saveGridY
Definition TES.h:104
void ForEachReference(std::function< BSContainer::ForEachResult(TESObjectREFR *)> a_callback)
std::uint64_t unk178
Definition TES.h:140
NiNode * objRoot
Definition TES.h:89
std::uint64_t unk180
Definition TES.h:141
std::uint64_t unk218
Definition TES.h:160
std::uint64_t unk270
Definition TES.h:171
void PurgeBufferedCells()
std::uint64_t unk1F8
Definition TES.h:156
std::uint64_t unk2A0
Definition TES.h:176
GridCellArray * gridCells
Definition TES.h:88
std::uint8_t unk12F
Definition TES.h:124
std::uint64_t unk1D0
Definition TES.h:151
std::uint64_t unk1A0
Definition TES.h:145
std::uint64_t unk198
Definition TES.h:144
void ForEachCell(std::function< void(TESObjectCELL *)> a_callback)
std::uint64_t unk0D8
Definition TES.h:102
std::int32_t saveGridX
Definition TES.h:103
BSTempNodeManager * tempNodeManager
Definition TES.h:92
std::uint64_t unk0F0
Definition TES.h:106
std::uint64_t unk1F0
Definition TES.h:155
std::uint64_t unk1D8
Definition TES.h:152
NiNode * objLODWaterRoot
Definition TES.h:91
static TES * GetSingleton()
std::uint64_t unk1A8
Definition TES.h:146
std::uint8_t unk12A
Definition TES.h:119
BSEventNotifyControl ProcessEvent(const BSResource::ArchiveStreamOpenedEvent *a_event, BSTEventSource< BSResource::ArchiveStreamOpenedEvent > *a_eventSource) override
std::uint64_t unk248
Definition TES.h:166
std::uint64_t unk220
Definition TES.h:161
std::uint64_t unk190
Definition TES.h:143
std::uint64_t unk238
Definition TES.h:164
std::uint64_t unk138
Definition TES.h:130
BSEventNotifyControl ProcessEvent(const PositionPlayerEvent *a_event, BSTEventSource< PositionPlayerEvent > *a_eventSource) override
std::uint64_t unk1B0
Definition TES.h:147
static constexpr auto VTABLE
Definition TES.h:45
std::uint64_t unk268
Definition TES.h:170
std::uint64_t unk230
Definition TES.h:163
TESObjectCELL * GetCell(const NiPoint3 &a_position) const
std::uint8_t unk12C
Definition TES.h:121
NiAVObject * Pick(bhkPickData &a_pickData)
float GetWaterHeight(const NiPoint3 &a_pos, TESObjectCELL *a_cell) const
std::uint64_t unk2B0
Definition TES.h:178
TESObjectCELL * interiorCell
Definition TES.h:99
std::uint64_t unk0E8
Definition TES.h:105
std::uint8_t unk12E
Definition TES.h:123
TESObjectCELL ** interiorBuffer
Definition TES.h:100
std::uint64_t unk070
Definition TES.h:87
std::uint64_t unk120
Definition TES.h:111
void ForEachReferenceInRange(TESObjectREFR *a_origin, float a_radius, std::function< BSContainer::ForEachResult(TESObjectREFR *)> a_callback)
TESLandTexture * GetLandTexture(const NiPoint3 &a_position) const
std::uint16_t unk130
Definition TES.h:125
NiNode * lodLandRoot
Definition TES.h:90
NiDirectionalLight * objLight
Definition TES.h:93
~TES() override
TESObjectCELL ** exteriorBuffer
Definition TES.h:101
std::uint64_t unk1E8
Definition TES.h:154
std::uint8_t unk128
Definition TES.h:117
std::uint64_t unk1C0
Definition TES.h:149
std::int32_t currentGridX
Definition TES.h:95
std::uint64_t unk228
Definition TES.h:162
std::uint64_t unk258
Definition TES.h:168
ForEachResult
Definition BSContainer.h:6
Definition AbsorbEffect.h:6
constexpr std::array< REL::ID, 3 > VTABLE_TES
Definition Offsets_VTABLE.h:12796
MATERIAL_ID
Definition MaterialIDs.h:6
constexpr REL::ID RTTI_TES(static_cast< std::uint64_t >(684836))
BSEventNotifyControl
Definition BSTEvent.h:12
Definition PositionPlayerEvent.h:7
Definition bhkPickData.h:11