CommonLibSSE NG
BSWaterShaderProperty.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "RE/B/BSTArray.h"
5 #include "RE/N/NiPlane.h"
6 
7 namespace RE
8 {
10  {
11  public:
12  inline static constexpr auto RTTI = RTTI_BSWaterShaderProperty;
13  inline static constexpr auto Ni_RTTI = NiRTTI_BSWaterShaderProperty;
14 
15  enum class WaterFlag
16  {
17  kNone = 0,
18  kUnderwater = 1 << 5,
19  kUseReflections = 1 << 6,
20  kUseCubemapReflections = 1 << 14,
21  kEnableFlowmap = 1 << 15,
22  kBlendNormals = 1 << 16
23  };
24 
25  ~BSWaterShaderProperty() override; // 00
26 
27  // override (BSShaderProperty)
28  const NiRTTI* GetRTTI() const override; // 02
29  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
30  void LoadBinary(NiStream& a_stream) override; // 18
31  void LinkObject(NiStream& a_stream) override; // 19
32  bool RegisterStreamables(NiStream& a_stream) override; // 1A
33  void SaveBinary(NiStream& a_stream) override; // 1B
34  bool IsEqual(NiObject* a_object) override; // 1C - { return false; }
35  void PostLinkObject(NiStream& a_stream) override; // 1E
36  RenderPassArray* GetRenderPasses(BSGeometry* a_geometry, std::uint32_t a_arg2, BSShaderAccumulator* a_accumulator) override; // 2A
37  void Unk_2C(void) override; // 2C // 2C
38  void Unk_2D(void) override; // 2D
39  void Unk_2F(void) override; // 2F
40  std::int32_t ForEachTexture(ForEachVisitor& a_visitor) override; // 33
41  void DoClearRenderPasses() override; // 34
42  std::int32_t QShader() override; // 35 - { return 17; }
43  BSShaderMaterial::Type GetMaterialType() override; // 3E - { return 3; }
44 
45  // members
47  std::uint32_t unk8C; // 8C
48  std::uint64_t unk90; // 90
49  std::uint64_t unk98; // 98
50  NiPlane plane; // A0
51  std::uint64_t unkB0; // B0
52  std::uint8_t unkB8; // B8
53  std::uint8_t padB9; // B9
54  std::uint16_t padBA; // BA
55  std::uint16_t padBC; // BC
58  std::uint64_t unkD0; // D0
60  std::int32_t unkF0; // F0
61  std::uint32_t unkF4; // F4
62  std::uint8_t unkF8; // F8
63  std::uint8_t padF9; // F9
64  std::uint16_t padFA; // FA
65  std::uint16_t padFC; // FC
66  };
67  static_assert(sizeof(BSWaterShaderProperty) == 0x100);
68 }
Definition: BSGeometry.h:15
Definition: BSRenderPass.h:11
Type
Definition: BSShaderMaterial.h:38
Definition: BSShaderProperty.h:26
Definition: BSShaderProperty.h:17
Definition: BSWaterShaderProperty.h:10
void Unk_2D(void) override
std::uint8_t unkF8
Definition: BSWaterShaderProperty.h:62
~BSWaterShaderProperty() override
std::uint32_t unkF4
Definition: BSWaterShaderProperty.h:61
BSShaderMaterial::Type GetMaterialType() override
std::uint64_t unk90
Definition: BSWaterShaderProperty.h:48
NiPlane plane
Definition: BSWaterShaderProperty.h:50
void DoClearRenderPasses() override
std::uint32_t unk8C
Definition: BSWaterShaderProperty.h:47
void Unk_2F(void) override
void Unk_2C(void) override
static constexpr auto Ni_RTTI
Definition: BSWaterShaderProperty.h:13
std::uint64_t unkB0
Definition: BSWaterShaderProperty.h:51
stl::enumeration< WaterFlag, std::uint32_t > waterFlags
Definition: BSWaterShaderProperty.h:46
std::int32_t QShader() override
RenderPassArray * GetRenderPasses(BSGeometry *a_geometry, std::uint32_t a_arg2, BSShaderAccumulator *a_accumulator) override
std::uint64_t unk98
Definition: BSWaterShaderProperty.h:49
RenderPassArray simpleRenderPassList
Definition: BSWaterShaderProperty.h:57
WaterFlag
Definition: BSWaterShaderProperty.h:16
NiObject * CreateClone(NiCloningProcess &a_cloning) override
BSTArray< void * > unkD8
Definition: BSWaterShaderProperty.h:59
std::int32_t unkF0
Definition: BSWaterShaderProperty.h:60
std::uint8_t padB9
Definition: BSWaterShaderProperty.h:53
bool RegisterStreamables(NiStream &a_stream) override
static constexpr auto RTTI
Definition: BSWaterShaderProperty.h:12
std::uint8_t unkB8
Definition: BSWaterShaderProperty.h:52
void PostLinkObject(NiStream &a_stream) override
void SaveBinary(NiStream &a_stream) override
std::uint16_t padBA
Definition: BSWaterShaderProperty.h:54
bool IsEqual(NiObject *a_object) override
std::uint8_t padF9
Definition: BSWaterShaderProperty.h:63
BSRenderPass * unkC0
Definition: BSWaterShaderProperty.h:56
void LinkObject(NiStream &a_stream) override
std::uint16_t padFC
Definition: BSWaterShaderProperty.h:65
std::uint16_t padFA
Definition: BSWaterShaderProperty.h:64
std::uint64_t unkD0
Definition: BSWaterShaderProperty.h:58
std::uint16_t padBC
Definition: BSWaterShaderProperty.h:55
void LoadBinary(NiStream &a_stream) override
const NiRTTI * GetRTTI() const override
std::int32_t ForEachTexture(ForEachVisitor &a_visitor) override
Definition: NiCloningProcess.h:10
Definition: NiObject.h:37
Definition: NiPlane.h:8
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: AbsorbEffect.h:6
constexpr REL::VariantID NiRTTI_BSWaterShaderProperty(527905, 414852, 0x3485190)
constexpr REL::VariantID RTTI_BSWaterShaderProperty(692031, 400075, 0x1f800a0)
Definition: BSShaderProperty.h:37