CommonLibSSE NG
Loading...
Searching...
No Matches
BSFaceGenNiNode.h
Go to the documentation of this file.
1#pragma once
2
4#include "RE/N/NiMatrix3.h"
5#include "RE/N/NiNode.h"
7
8namespace RE
9{
10 class BSFaceGenAnimationData;
11 class NiNode;
12
13 class BSFaceGenNiNode : public NiNode
14 {
15 public:
16 inline static constexpr auto RTTI = RTTI_BSFaceGenNiNode;
17 inline static auto Ni_RTTI = NiRTTI_BSFaceGenNiNode;
18
20 {
21#define RUNTIME_DATA_CONTENT \
22 NiMatrix3 baseRotation; /* 00 */ \
23 std::uint32_t pad14C; /* 24 */ \
24 NiPointer<BSFaceGenAnimationData> animationData; /* 28 */ \
25 float lastTime; /* 30 */ \
26 ActorHandle unk15C; /* 34 */ \
27 std::uint16_t flags; /* 38 */ \
28 std::uint16_t pad162; /* 3A */ \
29 std::uint32_t pad164; /* 3C */
30
32 };
33 static_assert(sizeof(RUNTIME_DATA) == 0x40);
34
35 ~BSFaceGenNiNode() override; // 00
36
37 // override (NiNode)
38 const NiRTTI* GetRTTI() const override; // 02
39 NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
40#ifndef SKYRIM_CROSS_VR
41 // The following are virtual functions past the point where VR compatibility breaks.
42 void UpdateDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2C
43#endif
44
45 // add
46 SKYRIM_REL_VR_VIRTUAL void FixSkinInstances(NiNode* a_skeleton, bool a_arg2); // 3E
47
48 [[nodiscard]] inline RUNTIME_DATA& GetRuntimeData() noexcept
49 {
50 return REL::RelocateMember<RUNTIME_DATA>(this, 0x128, 0x150);
51 }
52
53 [[nodiscard]] inline const RUNTIME_DATA& GetRuntimeData() const noexcept
54 {
55 return REL::RelocateMember<RUNTIME_DATA>(this, 0x128, 0x150);
56 }
57
58 // members
59#ifndef SKYRIM_CROSS_VR
60 RUNTIME_DATA_CONTENT // 128, 150
61#endif
62 };
63#ifndef ENABLE_SKYRIM_VR
64 static_assert(sizeof(BSFaceGenNiNode) == 0x168);
65#elif !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
66 static_assert(sizeof(BSFaceGenNiNode) == 0x190);
67#endif
68}
69#undef RUNTIME_DATA_CONTENT
#define RUNTIME_DATA_CONTENT
Definition Actor.h:633
#define SKYRIM_REL_VR_VIRTUAL
Definition Relocation.h:152
Definition BSFaceGenNiNode.h:14
static auto Ni_RTTI
Definition BSFaceGenNiNode.h:17
static constexpr auto RTTI
Definition BSFaceGenNiNode.h:16
NiObject * CreateClone(NiCloningProcess &a_cloning) override
SKYRIM_REL_VR_VIRTUAL void FixSkinInstances(NiNode *a_skeleton, bool a_arg2)
~BSFaceGenNiNode() override
const RUNTIME_DATA & GetRuntimeData() const noexcept
Definition BSFaceGenNiNode.h:53
void UpdateDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
const NiRTTI * GetRTTI() const override
RUNTIME_DATA & GetRuntimeData() noexcept
Definition BSFaceGenNiNode.h:48
Definition NiCloningProcess.h:10
Definition NiNode.h:12
Definition NiObject.h:37
Definition NiRTTI.h:6
Definition NiAVObject.h:25
Definition AbsorbEffect.h:6
constexpr REL::VariantID RTTI_BSFaceGenNiNode(685584, 393369, 0x1ee87a8)
constexpr REL::VariantID NiRTTI_BSFaceGenNiNode(515572, 401747, 0x2fccc28)
Definition BSFaceGenNiNode.h:20