CommonLibVR
Precipitation.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiPoint3.h"
4 #include "RE/N/NiSmartPointer.h"
5 
6 #include "REX/W32/D3D.h"
7 
8 namespace RE
9 {
10  class BSCullingProcess;
11  class BSGeometry;
12  class BSParticleShaderRainEmitter;
13  class BSShaderAccumulator;
14  class NiCamera;
15 
17  {
18  public:
19  inline static constexpr auto RTTI = RTTI_Precipitation;
20  inline static constexpr auto VTABLE = VTABLE_Precipitation;
21 
23  {
24  public:
25  // members
26  alignas(0x10) REX::W32::XMFLOAT4X4 projection; // 00
30  std::uint64_t pad58; // 58
31  };
32  static_assert(sizeof(OcclusionMapData) == 0x60);
33 
34  virtual ~Precipitation(); // 00
35 
37  {
38  REL::Relocation<NiPoint3*> precipDirection{ RELOCATION_ID(515509, 401648) };
39  return *precipDirection;
40  }
41 
42  void SetupMask()
43  {
44  using func_t = decltype(&Precipitation::SetupMask);
45  static REL::Relocation<func_t> func{ RELOCATION_ID(25641, 26183) };
46  func(this);
47  }
48 
50  {
51  using func_t = decltype(&Precipitation::RenderMask);
52  static REL::Relocation<func_t> func{ RELOCATION_ID(25642, 26184) };
53  func(this, a_emitter);
54  }
55 
56  // members
60  float lastCubeSize; // 80
62  float lastParticleDensity; // 88
63  std::uint32_t pad8C; // 8C
64  private:
65  KEEP_FOR_RE()
66  };
67  static_assert(sizeof(Precipitation) == 0x90);
68 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
#define RELOCATION_ID(SE, AE)
Definition: PCH.h:702
Definition: Relocation.h:210
Definition: BSCullingProcess.h:17
Definition: BSParticleShaderRainEmitter.h:8
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: Precipitation.h:23
BSCullingProcess * cullingProcess
Definition: Precipitation.h:29
NiPointer< BSShaderAccumulator > accumulator
Definition: Precipitation.h:28
std::uint64_t pad58
Definition: Precipitation.h:30
REX::W32::XMFLOAT4X4 projection
Definition: Precipitation.h:26
NiPointer< NiCamera > camera
Definition: Precipitation.h:27
Definition: Precipitation.h:17
static constexpr auto RTTI
Definition: Precipitation.h:19
static NiPoint3 GetDirection()
Definition: Precipitation.h:36
NiPointer< BSGeometry > currentPrecip
Definition: Precipitation.h:58
std::uint32_t pad8C
Definition: Precipitation.h:63
virtual ~Precipitation()
float lastCubeSize
Definition: Precipitation.h:60
OcclusionMapData occlusionData
Definition: Precipitation.h:57
NiPointer< BSGeometry > lastPrecip
Definition: Precipitation.h:59
float currentParticleDensity
Definition: Precipitation.h:61
void SetupMask()
Definition: Precipitation.h:42
float lastParticleDensity
Definition: Precipitation.h:62
void RenderMask(BSParticleShaderRainEmitter *a_emitter)
Definition: Precipitation.h:49
static constexpr auto VTABLE
Definition: Precipitation.h:20
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_Precipitation
Definition: Offsets_VTABLE.h:12561
constexpr REL::ID RTTI_Precipitation(static_cast< std::uint64_t >(685533))
Definition: D3D.h:697