CommonLibSSE NG
Loading...
Searching...
No Matches
TESWaterSystem.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/B/BSAtomic.h"
6#include "RE/B/BSTArray.h"
7#include "RE/B/BSTSingleton.h"
8#include "RE/N/NiPoint2.h"
9#include "RE/N/NiPoint3.h"
10#include "RE/N/NiSmartPointer.h"
11#include "RE/N/NiTPointerMap.h"
12
13namespace RE
14{
15 class BSTriShape;
16 class NiNode;
17 class TESObjectCELL;
18 class TESWorldSpace;
19 class TESWaterDisplacement;
20 class TESWaterNormals;
21 class TESWaterObject;
22 class TESWaterReflections;
23 class WadingWaterData;
24
25 class TESWaterSystem : public BSTSingletonSDM<TESWaterSystem>
26 {
27 public:
28 [[nodiscard]] static TESWaterSystem* GetSingleton()
29 {
30 REL::Relocation<TESWaterSystem**> singleton{ RELOCATION_ID(514290, 400450) };
31 return *singleton;
32 }
33
34 void AddRipple(const NiPoint3& a_pos, float a_scale)
35 {
36 using func_t = decltype(&TESWaterSystem::AddRipple);
37 REL::Relocation<func_t> func{ RELOCATION_ID(31410, 32217) };
38 return func(this, a_pos, a_scale);
39 }
40
41 // members
42 std::uint32_t pad000; // 000
44 std::uint32_t unk010; // 010
45 std::uint32_t pad014; // 014
46 float unk018; // 018
47 float unk01C; // 01C
52 std::uint32_t unk080; // 080
54 std::uint32_t pad08C; // 08C
56 std::uint64_t unk098; // 098
57 std::uint32_t reflectionExteriorCount; // 0A0
58 std::uint32_t reflectionInteriorCount; // 0A4
60 bool enabled; // 0B0
61 std::uint8_t pad0B1; // 0B1
62 std::uint16_t pad0B2; // 0B2
63 std::uint32_t unk0B4; // 0B4
64 bool playerUnderwater; // 0B8
65 bool unk0B9; // 0B9
66 bool unk0BA; // 0BA
67 std::uint8_t pad0BB; // 0BB
68 std::uint32_t unk0BC; // 0BC
69 float underwaterHeight; // 0C0
70 bool waterRadiusState; // 0C4
71 std::uint8_t pad0C5; // 0C5
72 std::uint8_t unk0C6; // 0C6
73 bool showProcedualWater; // 0C7
74 std::uint8_t unk0C8; // 0C8
75 std::uint8_t padC9; // 0C9
76 std::uint16_t padCA; // 0CA
77 std::uint32_t unk0CC; // 0CC
78 std::uint32_t unk0D0; // 0D0
79 float unk0D4; // 0D4
81 std::uint64_t unk0F8; // 0F8
82 std::uint64_t unk100; // 108
83 std::uint32_t unk108; // 108
84 std::uint32_t pad10C; // 10C
85 std::uint8_t unk110; // 110
86 std::uint8_t pad111; // 111
87 std::uint16_t pad112; // 112
88 std::uint32_t pad114; // 114
90 mutable BSSpinLock lock; // 120
92 };
93 static_assert(sizeof(TESWaterSystem) == 0x130);
94};
#define RELOCATION_ID(a_se, a_ae)
Definition PCH.h:794
Definition BSAtomic.h:49
Definition BSTArray.h:377
Definition NiPoint2.h:6
Definition NiPoint3.h:6
Definition NiSmartPointer.h:9
Definition NiTPointerMap.h:10
Definition TESObjectCELL.h:116
Definition TESWaterSystem.h:26
std::uint32_t unk0BC
Definition TESWaterSystem.h:68
NiTPointerMap< ActorHandle, WadingWaterData * > wadingWaterData
Definition TESWaterSystem.h:80
std::uint8_t pad0BB
Definition TESWaterSystem.h:67
NiPointer< NiNode > waterRoot
Definition TESWaterSystem.h:55
bool playerUnderwater
Definition TESWaterSystem.h:64
std::uint32_t pad000
Definition TESWaterSystem.h:42
NiPoint2 unk084
Definition TESWaterSystem.h:53
std::uint8_t unk0C8
Definition TESWaterSystem.h:74
std::uint16_t pad112
Definition TESWaterSystem.h:87
bool unk0BA
Definition TESWaterSystem.h:66
BSTArray< NiPointer< TESWaterNormals > > waterNormals
Definition TESWaterSystem.h:51
std::uint32_t pad014
Definition TESWaterSystem.h:45
std::uint32_t pad08C
Definition TESWaterSystem.h:54
bool waterRadiusState
Definition TESWaterSystem.h:70
std::uint16_t pad0B2
Definition TESWaterSystem.h:62
BSSpinLock lock
Definition TESWaterSystem.h:90
std::uint32_t unk0D0
Definition TESWaterSystem.h:78
std::uint64_t unk098
Definition TESWaterSystem.h:56
float unk01C
Definition TESWaterSystem.h:47
std::uint32_t pad10C
Definition TESWaterSystem.h:84
std::uint32_t reflectionInteriorCount
Definition TESWaterSystem.h:58
std::uint8_t unk0C6
Definition TESWaterSystem.h:72
std::uint32_t reflectionExteriorCount
Definition TESWaterSystem.h:57
bool unk0B9
Definition TESWaterSystem.h:65
BSTArray< NiPointer< TESWaterObject > > waterObjects
Definition TESWaterSystem.h:48
std::uint8_t pad0C5
Definition TESWaterSystem.h:71
std::uint32_t unk010
Definition TESWaterSystem.h:44
std::uint32_t unk0CC
Definition TESWaterSystem.h:77
std::uint32_t unk080
Definition TESWaterSystem.h:52
bool enabled
Definition TESWaterSystem.h:60
static TESWaterSystem * GetSingleton()
Definition TESWaterSystem.h:28
bool showProcedualWater
Definition TESWaterSystem.h:73
std::uint16_t padCA
Definition TESWaterSystem.h:76
std::uint8_t padC9
Definition TESWaterSystem.h:75
std::uint8_t pad0B1
Definition TESWaterSystem.h:61
BSTArray< NiPointer< TESWaterReflections > > waterReflections
Definition TESWaterSystem.h:49
float underwaterHeight
Definition TESWaterSystem.h:69
float unk018
Definition TESWaterSystem.h:46
std::uint32_t unk108
Definition TESWaterSystem.h:83
std::uint64_t unk0F8
Definition TESWaterSystem.h:81
void AddRipple(const NiPoint3 &a_pos, float a_scale)
Definition TESWaterSystem.h:34
TESWorldSpace * worldSpace
Definition TESWaterSystem.h:59
std::uint8_t pad111
Definition TESWaterSystem.h:86
NiPointer< BSTriShape > autoWater
Definition TESWaterSystem.h:91
BSTArray< NiPointer< TESWaterDisplacement > > waterDisplacement
Definition TESWaterSystem.h:50
BSFixedString * type
Definition TESWaterSystem.h:43
std::uint64_t unk100
Definition TESWaterSystem.h:82
TESObjectCELL * unk118
Definition TESWaterSystem.h:89
float unk0D4
Definition TESWaterSystem.h:79
std::uint32_t pad114
Definition TESWaterSystem.h:88
std::uint8_t unk110
Definition TESWaterSystem.h:85
std::uint32_t unk0B4
Definition TESWaterSystem.h:63
Definition TESWorldSpace.h:118
Definition Relocation.h:1638
Definition AbsorbEffect.h:6
Definition BSTSingleton.h:50