CommonLibVR
BSParticleShaderEmitter.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiRefObject.h"
4 
5 namespace RE
6 {
7  class BSParticleShaderProperty;
8  class NiAVObject;
9 
11  {
12  public:
13  inline static constexpr auto RTTI = RTTI_BSParticleShaderEmitter;
14  inline static constexpr auto VTABLE = VTABLE_BSParticleShaderEmitter;
15 
16  enum class EMITTER_TYPE
17  {
18  kGeometry = 0,
19  kCollision = 1,
20  kRay = 2,
21  kSnow = 3,
22  kRain = 4
23  };
24 
26  {
27  public:
28  // members
29  float currentFrame; // 00
30  std::uint32_t totalFrames; // 04
31  };
32  static_assert(sizeof(TextureAnimInfo) == 0x08);
33 
34  struct ParticleData
35  {
36  public:
37  // members
38  float XPos; // 00
39  float YPos; // 04
40  float ZPos; // 08
41  float age; // 0C
42  float XVel; // 10
43  float YVel; // 14
44  float ZVel; // 18
45  float lifeAdjust; // 1C
46  float rotationStart; // 20
47  float rotationSpeed; // 24
48  float speedMult; // 28
49  std::uint8_t texCoordU; // 29
50  std::uint8_t texCoordV; // 2A
51  std::uint8_t vertexX; // 2B
52  std::uint8_t vertexY; // 2C
53  };
54  static_assert(sizeof(ParticleData) == 0x30);
55 
56  virtual ~BSParticleShaderEmitter(); // 00
57 
58  // add
59  virtual NiAVObject* GetBoundsObject(); // 02
60  virtual bool Generate(bool a_arg1, NiPoint3& a_arg2, NiPoint3& a_arg3) = 0; // 03
61 
62  // members
65  std::uint16_t particleCount; // 1A
66  float alpha; // 1C
67  float generateReminder; // 20
68  float maxParticleRatio; // 24
71  private:
72  KEEP_FOR_RE()
73  };
74  static_assert(sizeof(BSParticleShaderEmitter) == 0xED0);
75 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BSParticleShaderEmitter.h:26
std::uint32_t totalFrames
Definition: BSParticleShaderEmitter.h:30
float currentFrame
Definition: BSParticleShaderEmitter.h:29
Definition: BSParticleShaderEmitter.h:11
std::uint16_t particleCount
Definition: BSParticleShaderEmitter.h:65
float generateReminder
Definition: BSParticleShaderEmitter.h:67
TextureAnimInfo * textureAnims
Definition: BSParticleShaderEmitter.h:69
virtual NiAVObject * GetBoundsObject()
stl::enumeration< EMITTER_TYPE, std::uint16_t > emitterType
Definition: BSParticleShaderEmitter.h:64
float alpha
Definition: BSParticleShaderEmitter.h:66
float maxParticleRatio
Definition: BSParticleShaderEmitter.h:68
EMITTER_TYPE
Definition: BSParticleShaderEmitter.h:17
static constexpr auto RTTI
Definition: BSParticleShaderEmitter.h:13
virtual bool Generate(bool a_arg1, NiPoint3 &a_arg2, NiPoint3 &a_arg3)=0
BSParticleShaderProperty * property
Definition: BSParticleShaderEmitter.h:63
static constexpr auto VTABLE
Definition: BSParticleShaderEmitter.h:14
ParticleData instanceData[78]
Definition: BSParticleShaderEmitter.h:70
Definition: BSParticleShaderProperty.h:15
Definition: NiAVObject.h:57
Definition: NiPoint3.h:6
Definition: NiRefObject.h:8
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_BSParticleShaderEmitter(static_cast< std::uint64_t >(685109))
constexpr std::array< REL::ID, 1 > VTABLE_BSParticleShaderEmitter
Definition: Offsets_VTABLE.h:9309
Definition: BSParticleShaderEmitter.h:35
std::uint8_t vertexX
Definition: BSParticleShaderEmitter.h:51
float YPos
Definition: BSParticleShaderEmitter.h:39
float rotationStart
Definition: BSParticleShaderEmitter.h:46
float rotationSpeed
Definition: BSParticleShaderEmitter.h:47
float lifeAdjust
Definition: BSParticleShaderEmitter.h:45
float ZVel
Definition: BSParticleShaderEmitter.h:44
float YVel
Definition: BSParticleShaderEmitter.h:43
float ZPos
Definition: BSParticleShaderEmitter.h:40
float speedMult
Definition: BSParticleShaderEmitter.h:48
float age
Definition: BSParticleShaderEmitter.h:41
float XVel
Definition: BSParticleShaderEmitter.h:42
std::uint8_t texCoordV
Definition: BSParticleShaderEmitter.h:50
float XPos
Definition: BSParticleShaderEmitter.h:38
std::uint8_t texCoordU
Definition: BSParticleShaderEmitter.h:49
std::uint8_t vertexY
Definition: BSParticleShaderEmitter.h:52