CommonLibVR
ShadowSceneNode.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSAtomic.h"
4 #include "RE/B/BSTArray.h"
5 #include "RE/N/NiNode.h"
6 
7 namespace RE
8 {
9  class BSLight;
10  class BSFogProperty;
11  class BSLensFlareRenderData;
12  class BSPortalGraph;
13  class BSShadowLight;
14  class BSShadowDirectionalLight;
15  class NiLight;
16 
17  class ShadowSceneNode : public NiNode
18  {
19  public:
20  inline static constexpr auto RTTI = RTTI_ShadowSceneNode;
21  inline static constexpr auto Ni_RTTI = NiRTTI_ShadowSceneNode;
22  inline static constexpr auto VTABLE = VTABLE_ShadowSceneNode;
23 
25  {
26  public:
27  // members
28  bool dynamic; // 00
29  bool shadowLight; // 01
30  bool portalStrict; // 02
31  bool affectLand; // 03
32  bool affectWater; // 04
33  bool neverFades; // 05
34  float fov; // 08
35  float falloff; // 0C
36  float nearDistance; // 10
37  float depthBias; // 14
38  std::uint32_t sceneGraphIndex; // 18
41  };
42 
43  ~ShadowSceneNode() override; // 00
44 
45  // override (NiNode)
46  const NiRTTI* GetRTTI() const override; // 02
47  void OnVisible(NiCullingProcess& a_process) override; // 34
48 
49  BSLight* AddLight(NiLight* a_light, const LIGHT_CREATE_PARAMS& a_params);
50  BSLight* GetLight(NiLight* a_light);
53  void RemoveLight(NiLight* a_light);
54 
55  // members
56  std::uint64_t unk128; // 128
62  mutable BSSpinLock lightQueueLock; // 1A8
66  mutable BSSpinLock objectListLock; // 1F8
67  BSLight* sunLight; // 200
69  BSShadowDirectionalLight* shadowDirLight; // 210
70  std::uint8_t sceneGraphIndex; // 218
71  bool disableLightUpdate; // 219
72  bool wireframe; // 21A
73  bool opaqueWireframe; // 21B
74  std::uint32_t pad21C; // 21C
78  std::uint32_t firstPersonShadowMask; // 248
79  std::uint32_t unk24C; // 24C
80  std::uint64_t unk250; // 250
81  std::uint64_t unk258; // 258
82  std::uint64_t unk260; // 260
83  std::uint64_t unk268; // 268
84  std::uint64_t unk270; // 270
85  std::uint64_t unk278; // 278
86  std::uint64_t unk280; // 280
87  std::uint64_t unk288; // 288
88  std::uint64_t unk290; // 290
89  std::uint64_t unk298; // 298
90  std::uint64_t unk2A0; // 2A0
91  std::uint64_t unk2A8; // 2A8
92  std::uint64_t unk2B0; // 2B0
93  std::uint64_t unk2B8; // 2B8
94  std::uint64_t unk2C0; // 2C0
95  std::uint64_t unk2C8; // 2C8
96  std::uint64_t unk2D0; // 2D0
97  std::uint64_t unk2D8; // 2D8
98  std::uint64_t unk2E0; // 2E0
101 #ifdef SKYRIMVR
102  NiPoint3 unk328; // 328
103 #endif
105  std::uint8_t pad301; // 301
106  std::uint16_t pad302; // 302
107  float windMagnitude; // 304
108  private:
109  KEEP_FOR_RE()
110  };
111 #ifndef SKYRIMVR
112  static_assert(sizeof(ShadowSceneNode) == 0x308);
113 #else
114  static_assert(sizeof(ShadowSceneNode) == 0x340);
115 #endif
116 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BSLensFlareRenderData.h:11
Definition: BSLight.h:18
Definition: BSPortalGraph.h:13
Definition: BSAtomic.h:92
Definition: BSTArray.h:378
Definition: NiAVObject.h:57
Definition: NiCullingProcess.h:34
Definition: NiLight.h:10
Definition: NiNode.h:12
Definition: NiPoint3.h:6
Definition: NiRTTI.h:6
Definition: ShadowSceneNode.h:18
BSLight * GetShadowLight(NiLight *a_light)
BSLight * GetLight(NiLight *a_light)
std::uint64_t unk250
Definition: ShadowSceneNode.h:80
std::uint8_t pad301
Definition: ShadowSceneNode.h:105
std::uint64_t unk2A0
Definition: ShadowSceneNode.h:90
BSTArray< NiPointer< BSLight > > activeLights
Definition: ShadowSceneNode.h:57
std::uint64_t unk268
Definition: ShadowSceneNode.h:83
BSSpinLock objectListLock
Definition: ShadowSceneNode.h:66
const NiRTTI * GetRTTI() const override
bool wireframe
Definition: ShadowSceneNode.h:72
static constexpr auto VTABLE
Definition: ShadowSceneNode.h:22
float windMagnitude
Definition: ShadowSceneNode.h:107
BSTArray< BSShadowLight * > shadowLightsAccum
Definition: ShadowSceneNode.h:77
bool allowLightRemoveQueues
Definition: ShadowSceneNode.h:104
BSShadowDirectionalLight * shadowDirLight
Definition: ShadowSceneNode.h:69
std::uint32_t pad21C
Definition: ShadowSceneNode.h:74
std::uint64_t unk288
Definition: ShadowSceneNode.h:87
BSLight * cloudLight
Definition: ShadowSceneNode.h:68
std::uint64_t unk2D0
Definition: ShadowSceneNode.h:96
std::uint64_t unk128
Definition: ShadowSceneNode.h:56
BSLight * AddLight(NiLight *a_light, const LIGHT_CREATE_PARAMS &a_params)
BSLight * GetPointLight(NiLight *a_light)
BSPortalGraph * portalGraph
Definition: ShadowSceneNode.h:76
std::uint64_t unk2B8
Definition: ShadowSceneNode.h:93
BSTArray< NiPointer< NiAVObject > > objectList1
Definition: ShadowSceneNode.h:64
std::uint64_t unk270
Definition: ShadowSceneNode.h:84
std::uint64_t unk260
Definition: ShadowSceneNode.h:82
bool disableLightUpdate
Definition: ShadowSceneNode.h:71
std::uint16_t pad302
Definition: ShadowSceneNode.h:106
BSSpinLock lightQueueLock
Definition: ShadowSceneNode.h:62
std::uint32_t unk24C
Definition: ShadowSceneNode.h:79
std::uint64_t unk2E0
Definition: ShadowSceneNode.h:98
bool opaqueWireframe
Definition: ShadowSceneNode.h:73
std::uint64_t unk2A8
Definition: ShadowSceneNode.h:91
std::uint64_t unk2C0
Definition: ShadowSceneNode.h:94
std::uint64_t unk278
Definition: ShadowSceneNode.h:85
static constexpr auto Ni_RTTI
Definition: ShadowSceneNode.h:21
BSLight * sunLight
Definition: ShadowSceneNode.h:67
std::uint64_t unk298
Definition: ShadowSceneNode.h:89
BSTArray< NiPointer< BSLight > > lightQueueAdd
Definition: ShadowSceneNode.h:59
std::uint8_t sceneGraphIndex
Definition: ShadowSceneNode.h:70
std::uint64_t unk258
Definition: ShadowSceneNode.h:81
BSTArray< NiPointer< BSLight > > unk190
Definition: ShadowSceneNode.h:61
void OnVisible(NiCullingProcess &a_process) override
NiPointer< BSFogProperty > fogProperty
Definition: ShadowSceneNode.h:75
BSTArray< NiPointer< BSLight > > activeShadowLights
Definition: ShadowSceneNode.h:58
std::uint32_t firstPersonShadowMask
Definition: ShadowSceneNode.h:78
std::uint64_t unk290
Definition: ShadowSceneNode.h:88
~ShadowSceneNode() override
std::uint64_t unk2D8
Definition: ShadowSceneNode.h:97
void RemoveLight(NiLight *a_light)
BSTArray< NiPointer< NiAVObject > > litGeometry
Definition: ShadowSceneNode.h:63
BSTArray< NiPointer< BSLight > > lightQueueRemove
Definition: ShadowSceneNode.h:60
NiPoint3 cameraPos
Definition: ShadowSceneNode.h:100
BSTArray< NiPointer< NiAVObject > > objectList2
Definition: ShadowSceneNode.h:65
NiPoint3 lightingOffset
Definition: ShadowSceneNode.h:99
static constexpr auto RTTI
Definition: ShadowSceneNode.h:20
std::uint64_t unk2C8
Definition: ShadowSceneNode.h:95
std::uint64_t unk2B0
Definition: ShadowSceneNode.h:92
std::uint64_t unk280
Definition: ShadowSceneNode.h:86
Definition: AbsorbEffect.h:6
constexpr REL::ID NiRTTI_ShadowSceneNode(static_cast< std::uint64_t >(527735))
constexpr std::array< REL::ID, 1 > VTABLE_ShadowSceneNode
Definition: Offsets_VTABLE.h:12643
constexpr REL::ID RTTI_ShadowSceneNode(static_cast< std::uint64_t >(692005))
Definition: ShadowSceneNode.h:25
NiAVObject * restrictedNode
Definition: ShadowSceneNode.h:39
float nearDistance
Definition: ShadowSceneNode.h:36
bool shadowLight
Definition: ShadowSceneNode.h:29
float falloff
Definition: ShadowSceneNode.h:35
float depthBias
Definition: ShadowSceneNode.h:37
BSLensFlareRenderData * lensFlareData
Definition: ShadowSceneNode.h:40
bool portalStrict
Definition: ShadowSceneNode.h:30
bool dynamic
Definition: ShadowSceneNode.h:28
bool affectLand
Definition: ShadowSceneNode.h:31
bool neverFades
Definition: ShadowSceneNode.h:33
bool affectWater
Definition: ShadowSceneNode.h:32
float fov
Definition: ShadowSceneNode.h:34
std::uint32_t sceneGraphIndex
Definition: ShadowSceneNode.h:38