CommonLibSSE NG
BSOrderedNode.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSNiNode.h"
4 
5 namespace RE
6 {
7  class BSOrderedNode : public BSNiNode
8  {
9  public:
10  inline static constexpr auto RTTI = RTTI_BSOrderedNode;
11  inline static auto Ni_RTTI = NiRTTI_BSOrderedNode;
12 
13  struct RUNTIME_DATA
14  {
15 #define RUNTIME_DATA_CONTENT \
16  NiBound orderedBound; /* 00 */ \
17  bool useStaticBound; /* 10 */ \
18  std::uint32_t pad13C; /* 11 */
19 
21  };
22  static_assert(sizeof(RUNTIME_DATA) == 0x18);
23 
24  ~BSOrderedNode() override; // 00
25 
26  // override (BSNiNode)
27  const NiRTTI* GetRTTI() const override; // 02
28  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
29  void LoadBinary(NiStream& a_stream) override; // 18
30  void LinkObject(NiStream& a_stream) override; // 19
31  bool RegisterStreamables(NiStream& a_stream) override; // 1A
32  void SaveBinary(NiStream& a_stream) override; // 1B
33  bool IsEqual(NiObject* a_object) override; // 1C
34 #if !defined(ENABLE_SKYRIM_VR) || (!defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_VR))
35  // The following are virtual functions past the point where VR compatibility breaks.
36  void UpdateDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2C
37  void UpdateSelectedDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2D
38  void OnVisible(NiCullingProcess& a_process) override; // 34
39 #endif
40 
41  [[nodiscard]] inline RUNTIME_DATA& GetRuntimeData() noexcept
42  {
43  return REL::RelocateMember<RUNTIME_DATA>(this, 0x128, 0x150);
44  }
45 
46  [[nodiscard]] inline const RUNTIME_DATA& GetRuntimeData() const noexcept
47  {
48  return REL::RelocateMember<RUNTIME_DATA>(this, 0x128, 0x150);
49  }
50 
51  // members
52 #ifndef SKYRIM_CROSS_VR
53  RUNTIME_DATA_CONTENT // 128, 150
54 #endif
55  };
56 #ifndef ENABLE_SKYRIM_VR
57  static_assert(sizeof(BSOrderedNode) == 0x140);
58 #elif !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
59  static_assert(sizeof(BSOrderedNode) == 0x168);
60 #endif
61 }
62 #undef RUNTIME_DATA_CONTENT
#define RUNTIME_DATA_CONTENT
Definition: BSOrderedNode.h:15
Definition: BSNiNode.h:8
Definition: BSOrderedNode.h:8
~BSOrderedNode() override
const NiRTTI * GetRTTI() const override
void SaveBinary(NiStream &a_stream) override
void UpdateDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
NiObject * CreateClone(NiCloningProcess &a_cloning) override
void LinkObject(NiStream &a_stream) override
void UpdateSelectedDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
static constexpr auto RTTI
Definition: BSOrderedNode.h:10
void LoadBinary(NiStream &a_stream) override
static auto Ni_RTTI
Definition: BSOrderedNode.h:11
RUNTIME_DATA & GetRuntimeData() noexcept
Definition: BSOrderedNode.h:41
const RUNTIME_DATA & GetRuntimeData() const noexcept
Definition: BSOrderedNode.h:46
bool IsEqual(NiObject *a_object) override
void OnVisible(NiCullingProcess &a_process) override
bool RegisterStreamables(NiStream &a_stream) override
Definition: NiCloningProcess.h:10
Definition: NiCullingProcess.h:34
Definition: NiObject.h:37
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: NiAVObject.h:25
Definition: AbsorbEffect.h:6
constexpr REL::VariantID NiRTTI_BSOrderedNode(528360, 415306, 0x36f1a60)
constexpr REL::VariantID RTTI_BSOrderedNode(692072, 400116, 0x1f809f8)
Definition: BSOrderedNode.h:14