CommonLibSSE NG
Loading...
Searching...
No Matches
BGSDecalNode.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/B/BSTArray.h"
4#include "RE/N/NiNode.h"
6
7namespace RE
8{
9 class BSTempEffect;
10
11 class BGSDecalNode : public NiNode
12 {
13 public:
14 inline static constexpr auto RTTI = RTTI_BGSDecalNode;
15 inline static auto Ni_RTTI = NiRTTI_BGSDecalNode;
16
18 {
19#define RUNTIME_DATA_CONTENT \
20 BSTArray<NiPointer<BSTempEffect>> decals; /* 00 */ \
21 bool isSkinned; /* 18 */
22
24 };
25 static_assert(sizeof(RUNTIME_DATA) == 0x20);
26
27 ~BGSDecalNode() override; // 00
28
29 // override (NiNode)
30 const NiRTTI* GetRTTI() const override; // 02
31 NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
32 void ProcessClone(NiCloningProcess& a_cloning) override; // 1D
33#ifndef SKYRIM_CROSS_VR
34 // The following are virtual functions past the point where VR compatibility breaks.
35 void OnVisible(NiCullingProcess& a_process) override; // 34
36#endif
37
38 // add
39 SKYRIM_REL_VR_VIRTUAL std::uint8_t Unk_3E(); // 3E - { return 1; }
40 SKYRIM_REL_VR_VIRTUAL void AttachDecal(BSTempEffect* a_decal, bool a_firstAvail); // 3F
41
42 [[nodiscard]] inline RUNTIME_DATA& GetRuntimeData() noexcept
43 {
44 return REL::RelocateMember<RUNTIME_DATA>(this, 0x128, 0x150);
45 }
46
47 [[nodiscard]] inline const RUNTIME_DATA& GetRuntimeData() const noexcept
48 {
49 return REL::RelocateMember<RUNTIME_DATA>(this, 0x128, 0x150);
50 }
51
52 // members
53#ifndef SKYRIM_CROSS_VR
54 RUNTIME_DATA_CONTENT // 128, 150
55#endif
56 };
57#ifndef ENABLE_SKYRIM_VR
58 static_assert(sizeof(BGSDecalNode) == 0x148);
59#elif !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
60 static_assert(sizeof(BGSDecalNode) == 0x170);
61#endif
62}
63#undef RUNTIME_DATA_CONTENT
#define RUNTIME_DATA_CONTENT
Definition Actor.h:633
#define SKYRIM_REL_VR_VIRTUAL
Definition Relocation.h:152
Definition BGSDecalNode.h:12
static auto Ni_RTTI
Definition BGSDecalNode.h:15
void ProcessClone(NiCloningProcess &a_cloning) override
RUNTIME_DATA & GetRuntimeData() noexcept
Definition BGSDecalNode.h:42
void OnVisible(NiCullingProcess &a_process) override
const RUNTIME_DATA & GetRuntimeData() const noexcept
Definition BGSDecalNode.h:47
const NiRTTI * GetRTTI() const override
static constexpr auto RTTI
Definition BGSDecalNode.h:14
NiObject * CreateClone(NiCloningProcess &a_cloning) override
~BGSDecalNode() override
SKYRIM_REL_VR_VIRTUAL void AttachDecal(BSTempEffect *a_decal, bool a_firstAvail)
SKYRIM_REL_VR_VIRTUAL std::uint8_t Unk_3E()
Definition BSTempEffect.h:29
Definition NiCloningProcess.h:10
Definition NiCullingProcess.h:34
Definition NiNode.h:12
Definition NiObject.h:37
Definition NiRTTI.h:6
Definition AbsorbEffect.h:6
constexpr REL::VariantID RTTI_BGSDecalNode(684910, 392644, 0x1edc258)
constexpr REL::VariantID NiRTTI_BGSDecalNode(514417, 400564, 0x1f891a0)
Definition BGSDecalNode.h:18