CommonLibSSE (Parapets fork)
Loading...
Searching...
No Matches
BSGeometry.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/N/NiAVObject.h"
5
6namespace RE
7{
8 class BSMultiIndexTriShape;
9 class BSSkinnedDecalTriShape;
10 class NiProperty;
11 class NiSkinInstance;
12
13 class BSGeometry : public NiAVObject
14 {
15 public:
16 inline static constexpr auto RTTI = RTTI_BSGeometry;
17 inline static constexpr auto Ni_RTTI = NiRTTI_BSGeometry;
18
19 enum class Type
20 {
21 kGeometry = 0,
22 kParticles = 1,
24 kTriShape = 3,
33 kLines = 12,
34 kDynamicLines = 13,
36 };
37
38 struct States
39 {
40 enum State
41 {
44 kTotal
45 };
46 };
47
48 ~BSGeometry() override; // 00
49
50 // override (NiAVObject)
51 const NiRTTI* GetRTTI() const override; // 02
52 BSGeometry* AsGeometry() override; // 07 - { return this; }
53 void LoadBinary(NiStream& a_stream) override; // 18
54 void LinkObject(NiStream& a_stream) override; // 19
55 bool RegisterStreamables(NiStream& a_stream) override; // 1A
56 void SaveBinary(NiStream& a_stream) override; // 1B
57 bool IsEqual(NiObject* a_object) override; // 1C - { return false; }
58 void ProcessClone(NiCloningProcess& a_cloning) override; // 1D
59 void PostLinkObject(NiStream& a_stream) override; // 1E
60 void AttachProperty(NiAlphaProperty* a_property) override; // 27
61 void SetSelectiveUpdateFlags(bool& a_selectiveUpdate, bool a_selectiveUpdateTransforms, bool& a_rigid) override; // 2B
62 void UpdateDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2C
63 void UpdateSelectedDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2D
64 void UpdateRigidDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2E
65 void UpdateWorldBound() override; // 2F
66 void OnVisible(NiCullingProcess& a_process) override; // 34
67
68 // add
69 virtual BSMultiIndexTriShape* AsMultiIndexTriShape(); // 35 - { return 0; }
70 virtual BSSkinnedDecalTriShape* AsSkinnedDecalTriShape(); // 36 - { return 0; }
71 virtual void Unk_37(void); // 37 - { return 0; }
72
73 // members
75#ifdef SKYRIMVR
76 NiPoint3 unkVR09; // VR offset moved by 0x18
77 NiPoint3 unkVR10;
78#endif
81 void* rendererData; // 138
82 void* unk140; // 140 - smart ptr
83 std::uint64_t vertexDesc; // 148
85 std::uint8_t pad151; // 151
86 std::uint16_t pad152; // 152
87 std::uint32_t pad154; // 154
88 };
89#ifndef SKYRIMVR
90 static_assert(sizeof(BSGeometry) == 0x158);
91#else
92 static_assert(sizeof(BSGeometry) == 0x198);
93#endif
94}
Definition: BSGeometry.h:14
Type
Definition: BSGeometry.h:20
void SetSelectiveUpdateFlags(bool &a_selectiveUpdate, bool a_selectiveUpdateTransforms, bool &a_rigid) override
void UpdateRigidDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
NiBound modelBound
Definition: BSGeometry.h:74
virtual BSSkinnedDecalTriShape * AsSkinnedDecalTriShape()
void SaveBinary(NiStream &a_stream) override
std::uint64_t vertexDesc
Definition: BSGeometry.h:83
void OnVisible(NiCullingProcess &a_process) override
bool IsEqual(NiObject *a_object) override
NiPointer< NiSkinInstance > skinInstance
Definition: BSGeometry.h:80
static constexpr auto RTTI
Definition: BSGeometry.h:16
void ProcessClone(NiCloningProcess &a_cloning) override
BSGeometry * AsGeometry() override
bool RegisterStreamables(NiStream &a_stream) override
std::uint8_t pad151
Definition: BSGeometry.h:85
NiPointer< NiProperty > properties[States::kTotal]
Definition: BSGeometry.h:79
const NiRTTI * GetRTTI() const override
virtual void Unk_37(void)
~BSGeometry() override
void LinkObject(NiStream &a_stream) override
void UpdateWorldBound() override
void UpdateSelectedDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
void PostLinkObject(NiStream &a_stream) override
stl::enumeration< Type, std::uint8_t > type
Definition: BSGeometry.h:84
virtual BSMultiIndexTriShape * AsMultiIndexTriShape()
void UpdateDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
std::uint16_t pad152
Definition: BSGeometry.h:86
void LoadBinary(NiStream &a_stream) override
void AttachProperty(NiAlphaProperty *a_property) override
void * rendererData
Definition: BSGeometry.h:81
void * unk140
Definition: BSGeometry.h:82
static constexpr auto Ni_RTTI
Definition: BSGeometry.h:17
std::uint32_t pad154
Definition: BSGeometry.h:87
Definition: BSMultiIndexTriShape.h:17
Definition: NiAVObject.h:45
Definition: NiAlphaProperty.h:8
Definition: NiBound.h:8
Definition: NiCullingProcess.h:34
Definition: NiObject.h:37
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: NiStream.h:6
Definition: NiAVObject.h:22
Definition: PCH.h:216
Definition: AbsorbEffect.h:6
constexpr REL::ID NiRTTI_BSGeometry
Definition: Offsets_NiRTTI.h:49
constexpr REL::ID RTTI_BSGeometry
Definition: Offsets_RTTI.h:1720
Definition: BSGeometry.h:39
State
Definition: BSGeometry.h:41
@ kProperty
Definition: BSGeometry.h:42
@ kEffect
Definition: BSGeometry.h:43
@ kTotal
Definition: BSGeometry.h:44