CommonLibVR
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 TESWaterForm;
21 class TESWaterNormals;
22 class TESWaterObject;
23 class TESWaterReflections;
24 class WadingWaterData;
25
26 class TESWaterSystem : public BSTSingletonSDM<TESWaterSystem>
27 {
28 public:
29 [[nodiscard]] static TESWaterSystem* GetSingleton()
30 {
31 static REL::Relocation<TESWaterSystem**> singleton{ RELOCATION_ID(514290, 400450) };
32 return *singleton;
33 }
34
35 void AddRipple(const NiPoint3& a_pos, float a_scale)
36 {
37 using func_t = decltype(&TESWaterSystem::AddRipple);
38 static REL::Relocation<func_t> func{ RELOCATION_ID(31410, 32217) };
39 return func(this, a_pos, a_scale);
40 }
41
42 // members
43 std::uint32_t pad000; // 000
45 std::uint32_t unk010; // 010
46 std::uint32_t pad014; // 014
47 float unk018; // 018
48 float unk01C; // 01C
53 std::uint32_t unk080; // 080
55 std::uint32_t pad08C; // 08C
58 std::uint32_t reflectionExteriorCount; // 0A0
59 std::uint32_t reflectionInteriorCount; // 0A4
61 bool enabled; // 0B0
62 std::uint8_t pad0B1; // 0B1
63 std::uint16_t pad0B2; // 0B2
64 std::uint32_t unk0B4; // 0B4
65 bool playerUnderwater; // 0B8
66 bool unk0B9; // 0B9
67 bool unk0BA; // 0BA
68 std::uint8_t pad0BB; // 0BB
69 std::uint32_t unk0BC; // 0BC
70 float underwaterHeight; // 0C0
71 bool waterRadiusState; // 0C4
72 std::uint8_t pad0C5; // 0C5
73 std::uint8_t unk0C6; // 0C6
74 bool showProcedualWater; // 0C7
75 std::uint8_t unk0C8; // 0C8
76 std::uint8_t padC9; // 0C9
77 std::uint16_t padCA; // 0CA
78 std::uint32_t unk0CC; // 0CC
79 std::uint32_t unk0D0; // 0D0
82 std::uint64_t unk0F8; // 0F8
83 std::uint64_t unk100; // 108
84 std::uint32_t unk108; // 108
85 std::uint32_t pad10C; // 10C
86 std::uint8_t unk110; // 110
87 std::uint8_t pad111; // 111
88 std::uint16_t pad112; // 112
89 std::uint32_t pad114; // 114
91 mutable BSSpinLock lock; // 120
93 private:
95 };
96 static_assert(sizeof(TESWaterSystem) == 0x130);
97};
#define KEEP_FOR_RE()
Definition PCH.h:517
#define RELOCATION_ID(SE, AE)
Definition PCH.h:506
Definition Relocation.h:210
Definition BSAtomic.h:92
Definition BSTArray.h:378
Definition NiPoint2.h:6
Definition NiPoint3.h:6
Definition NiSmartPointer.h:9
Definition NiTPointerMap.h:10
Definition TESObjectCELL.h:119
Definition TESWaterForm.h:83
Definition TESWaterSystem.h:27
std::uint32_t unk0BC
Definition TESWaterSystem.h:69
NiTPointerMap< ActorHandle, WadingWaterData * > wadingWaterData
Definition TESWaterSystem.h:81
float timeSinceLastRipplePlaced
Definition TESWaterSystem.h:80
std::uint8_t pad0BB
Definition TESWaterSystem.h:68
NiPointer< NiNode > waterRoot
Definition TESWaterSystem.h:56
bool playerUnderwater
Definition TESWaterSystem.h:65
std::uint32_t pad000
Definition TESWaterSystem.h:43
NiPoint2 unk084
Definition TESWaterSystem.h:54
std::uint8_t unk0C8
Definition TESWaterSystem.h:75
std::uint16_t pad112
Definition TESWaterSystem.h:88
bool unk0BA
Definition TESWaterSystem.h:67
BSTArray< NiPointer< TESWaterNormals > > waterNormals
Definition TESWaterSystem.h:52
std::uint32_t pad014
Definition TESWaterSystem.h:46
std::uint32_t pad08C
Definition TESWaterSystem.h:55
bool waterRadiusState
Definition TESWaterSystem.h:71
std::uint16_t pad0B2
Definition TESWaterSystem.h:63
TESWaterForm * currentWaterType
Definition TESWaterSystem.h:57
BSSpinLock lock
Definition TESWaterSystem.h:91
std::uint32_t unk0D0
Definition TESWaterSystem.h:79
float unk01C
Definition TESWaterSystem.h:48
std::uint32_t pad10C
Definition TESWaterSystem.h:85
std::uint32_t reflectionInteriorCount
Definition TESWaterSystem.h:59
std::uint8_t unk0C6
Definition TESWaterSystem.h:73
std::uint32_t reflectionExteriorCount
Definition TESWaterSystem.h:58
bool unk0B9
Definition TESWaterSystem.h:66
BSTArray< NiPointer< TESWaterObject > > waterObjects
Definition TESWaterSystem.h:49
std::uint8_t pad0C5
Definition TESWaterSystem.h:72
std::uint32_t unk010
Definition TESWaterSystem.h:45
std::uint32_t unk0CC
Definition TESWaterSystem.h:78
std::uint32_t unk080
Definition TESWaterSystem.h:53
bool enabled
Definition TESWaterSystem.h:61
static TESWaterSystem * GetSingleton()
Definition TESWaterSystem.h:29
bool showProcedualWater
Definition TESWaterSystem.h:74
std::uint16_t padCA
Definition TESWaterSystem.h:77
std::uint8_t padC9
Definition TESWaterSystem.h:76
std::uint8_t pad0B1
Definition TESWaterSystem.h:62
BSTArray< NiPointer< TESWaterReflections > > waterReflections
Definition TESWaterSystem.h:50
float underwaterHeight
Definition TESWaterSystem.h:70
float unk018
Definition TESWaterSystem.h:47
std::uint32_t unk108
Definition TESWaterSystem.h:84
std::uint64_t unk0F8
Definition TESWaterSystem.h:82
void AddRipple(const NiPoint3 &a_pos, float a_scale)
Definition TESWaterSystem.h:35
TESWorldSpace * worldSpace
Definition TESWaterSystem.h:60
std::uint8_t pad111
Definition TESWaterSystem.h:87
NiPointer< BSTriShape > autoWater
Definition TESWaterSystem.h:92
BSTArray< NiPointer< TESWaterDisplacement > > waterDisplacement
Definition TESWaterSystem.h:51
BSFixedString * type
Definition TESWaterSystem.h:44
std::uint64_t unk100
Definition TESWaterSystem.h:83
TESObjectCELL * unk118
Definition TESWaterSystem.h:90
std::uint32_t pad114
Definition TESWaterSystem.h:89
std::uint8_t unk110
Definition TESWaterSystem.h:86
std::uint32_t unk0B4
Definition TESWaterSystem.h:64
Definition TESWorldSpace.h:120
Definition AbsorbEffect.h:6
Definition BSTSingleton.h:50