CommonLibVR
NiBillboardNode.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiNode.h"
4 
5 namespace RE
6 {
7  class NiBillboardNode : public NiNode
8  {
9  public:
10  inline static constexpr auto RTTI = RTTI_NiBillboardNode;
11  inline static constexpr auto Ni_RTTI = NiRTTI_NiBillboardNode;
12  inline static constexpr auto VTABLE = VTABLE_NiBillboardNode;
13 
14  enum
15  {
18  };
19 
20  enum class FaceMode
21  {
28  };
29 
30  ~NiBillboardNode() override; // 00
31 
32  // override (NiNode)
33  const NiRTTI* GetRTTI() const override; // 02
34  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
35  void LoadBinary(NiStream& a_stream) override; // 18
36  void LinkObject(NiStream& a_stream) override; // 19
37  bool RegisterStreamables(NiStream& a_stream) override; // 1A
38  void SaveBinary(NiStream& a_stream) override; // 1B
39  bool IsEqual(NiObject* a_object) override; // 1C
40  void UpdateWorldBound() override; // 2F
41  void UpdateWorldData(NiUpdateData* a_data) override; // 30
42  void OnVisible(NiCullingProcess& a_process) override; // 34
43 
44  [[nodiscard]] FaceMode GetMode() const
45  {
46  return static_cast<FaceMode>(userFlags & FACE_MODE_MASK);
47  }
48 
49  void SetMode(FaceMode a_mode)
50  {
51  userFlags = static_cast<uint16_t>((std::to_underlying(a_mode) << FACE_MODE_POS) | userFlags & ~FACE_MODE_MASK);
52  }
53 
54  // members
55  std::uint16_t userFlags; // 128
56  };
57 #ifndef SKYRIMVR
58  static_assert(sizeof(NiBillboardNode) == 0x130);
59 #else
60  static_assert(sizeof(NiBillboardNode) == 0x158);
61 #endif
62 }
Definition: NiBillboardNode.h:8
void SetMode(FaceMode a_mode)
Definition: NiBillboardNode.h:49
void LoadBinary(NiStream &a_stream) override
std::uint16_t userFlags
Definition: NiBillboardNode.h:55
static constexpr auto RTTI
Definition: NiBillboardNode.h:10
bool IsEqual(NiObject *a_object) override
bool RegisterStreamables(NiStream &a_stream) override
static constexpr auto VTABLE
Definition: NiBillboardNode.h:12
void OnVisible(NiCullingProcess &a_process) override
void UpdateWorldBound() override
static constexpr auto Ni_RTTI
Definition: NiBillboardNode.h:11
FaceMode
Definition: NiBillboardNode.h:21
const NiRTTI * GetRTTI() const override
@ FACE_MODE_POS
Definition: NiBillboardNode.h:16
@ FACE_MODE_MASK
Definition: NiBillboardNode.h:17
void LinkObject(NiStream &a_stream) override
void SaveBinary(NiStream &a_stream) override
void UpdateWorldData(NiUpdateData *a_data) override
~NiBillboardNode() override
NiObject * CreateClone(NiCloningProcess &a_cloning) override
FaceMode GetMode() const
Definition: NiBillboardNode.h:44
Definition: NiCloningProcess.h:10
Definition: NiCullingProcess.h:34
Definition: NiNode.h:12
Definition: NiObject.h:37
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: NiAVObject.h:28
Definition: AbsorbEffect.h:6
constexpr REL::ID NiRTTI_NiBillboardNode(static_cast< std::uint64_t >(523959))
constexpr std::array< REL::ID, 1 > VTABLE_NiBillboardNode
Definition: Offsets_VTABLE.h:12163
constexpr REL::ID RTTI_NiBillboardNode(static_cast< std::uint64_t >(685540))