CommonLibSSE NG
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 
15  enum class EMITTER_TYPE
16  {
17  kGeometry = 0,
18  kCollision = 1,
19  kRay = 2,
20  kSnow = 3,
21  kRain = 4
22  };
23 
25  {
26  public:
27  // members
28  float currentFrame; // 00
29  std::uint32_t totalFrames; // 04
30  };
31  static_assert(sizeof(TextureAnimInfo) == 0x08);
32 
33  struct ParticleData
34  {
35  public:
36  // members
37  float XPos; // 00
38  float YPos; // 04
39  float ZPos; // 08
40  float age; // 0C
41  float XVel; // 10
42  float YVel; // 14
43  float ZVel; // 18
44  float lifeAdjust; // 1C
45  float rotationStart; // 20
46  float rotationSpeed; // 24
47  float speedMult; // 28
48  std::uint8_t texCoordU; // 29
49  std::uint8_t texCoordV; // 2A
50  std::uint8_t vertexX; // 2B
51  std::uint8_t vertexY; // 2C
52  };
53  static_assert(sizeof(ParticleData) == 0x30);
54 
55  virtual ~BSParticleShaderEmitter(); // 00
56 
57  // add
58  virtual NiAVObject* GetBoundsObject(); // 02
59  virtual bool Generate(bool a_arg1, NiPoint3& a_arg2, NiPoint3& a_arg3) = 0; // 03
60 
61  // members
64  std::uint16_t particleCount; // 1A
65  float alpha; // 1C
66  float generateReminder; // 20
67  float maxParticleRatio; // 24
70  };
71  static_assert(sizeof(BSParticleShaderEmitter) == 0xED0);
72 }
Definition: BSParticleShaderEmitter.h:25
std::uint32_t totalFrames
Definition: BSParticleShaderEmitter.h:29
float currentFrame
Definition: BSParticleShaderEmitter.h:28
Definition: BSParticleShaderEmitter.h:11
std::uint16_t particleCount
Definition: BSParticleShaderEmitter.h:64
float generateReminder
Definition: BSParticleShaderEmitter.h:66
TextureAnimInfo * textureAnims
Definition: BSParticleShaderEmitter.h:68
virtual NiAVObject * GetBoundsObject()
stl::enumeration< EMITTER_TYPE, std::uint16_t > emitterType
Definition: BSParticleShaderEmitter.h:63
float alpha
Definition: BSParticleShaderEmitter.h:65
float maxParticleRatio
Definition: BSParticleShaderEmitter.h:67
EMITTER_TYPE
Definition: BSParticleShaderEmitter.h:16
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:62
ParticleData instanceData[78]
Definition: BSParticleShaderEmitter.h:69
Definition: BSParticleShaderProperty.h:15
Definition: NiAVObject.h:50
Definition: NiPoint3.h:6
Definition: NiRefObject.h:8
Definition: AbsorbEffect.h:6
constexpr REL::VariantID RTTI_BSParticleShaderEmitter(685109, 392871, 0x1edfb80)
Definition: BSParticleShaderEmitter.h:34
std::uint8_t vertexX
Definition: BSParticleShaderEmitter.h:50
float YPos
Definition: BSParticleShaderEmitter.h:38
float rotationStart
Definition: BSParticleShaderEmitter.h:45
float rotationSpeed
Definition: BSParticleShaderEmitter.h:46
float lifeAdjust
Definition: BSParticleShaderEmitter.h:44
float ZVel
Definition: BSParticleShaderEmitter.h:43
float YVel
Definition: BSParticleShaderEmitter.h:42
float ZPos
Definition: BSParticleShaderEmitter.h:39
float speedMult
Definition: BSParticleShaderEmitter.h:47
float age
Definition: BSParticleShaderEmitter.h:40
float XVel
Definition: BSParticleShaderEmitter.h:41
std::uint8_t texCoordV
Definition: BSParticleShaderEmitter.h:49
float XPos
Definition: BSParticleShaderEmitter.h:37
std::uint8_t texCoordU
Definition: BSParticleShaderEmitter.h:48
std::uint8_t vertexY
Definition: BSParticleShaderEmitter.h:51