World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
ParticleEngine.h
См. документацию.
1 #pragma once
3 #include "Engine/OurMath.h"
4 
7  ParticleType_1 = 0x0001,
9  ParticleType_8 = 0x0008,
10  ParticleType_Diffuse = 0x0100, // colored plane
11  ParticleType_Line = 0x0200, // line
12  ParticleType_Bitmap = 0x0400, // textured planed
14 };
15 
16 /* 305 */
17 #pragma pack(push, 1)
18 struct Particle_sw {
19  unsigned int type;
20  float x;
21  float y;
22  float z;
23  float r;
24  float g;
25  float b;
26  unsigned int uDiffuse;
28  Texture *texture; // unsigned int resource_id;// bitmap IDirect3DTexture
29  // idx or sprite idx depending on type
30  float particle_size; // flt_28
31  int field_2C;
32  int field_30;
33  int field_34;
34  int field_38[12];
35 };
36 #pragma pack(pop)
37 
38 /* 109 */
39 #pragma pack(push, 1)
40 struct Particle {
41  unsigned int type;
42  float x;
43  float y;
44  float z;
45  float flt_10;
46  float flt_14;
47  float flt_18;
48  union {
49  struct {
50  unsigned char r, g, b, a;
51  };
52  unsigned int uParticleColor;
53  };
55  Texture *texture; // unsigned int resource_id;// bitmap IDirect3DTexture
56  // idx or sprite idx depending on type
57  float particle_size; // field_28
58  float _x;
59  float _y;
60  float _z;
62  int angle;
65  int uScreenSpaceZ; // line end x
66  int uScreenSpaceW; // line end y
67  union {
68  // int sZValue;
69  struct {
70  unsigned short object_pid;
72  };
73  };
74  int sZValue2; // line end z
75  fixed screenspace_scale; // int _screenspace_scale;
76  float fov_x;
77  float fov_y;
79 };
80 #pragma pack(pop)
81 
82 /* 111 */
83 #pragma pack(push, 1)
85  unsigned int uNumLines;
87  char field_604[60];
88 };
89 #pragma pack(pop)
90 
91 /* 110 */
92 #pragma pack(push, 1)
94  public:
96 
97  void ResetParticles();
98  void AddParticle(Particle_sw *a2);
99  void Draw();
100  void UpdateParticles();
101  bool ViewProject_TrueIfStillVisible_BLV(unsigned int uParticleID);
102  void DrawParticles_BLV();
103 
106  char field_D160[4800];
107  float field_E420;
111 };
112 #pragma pack(pop)
113 
114 /* 160 */
115 #pragma pack(push, 1)
116 struct TrailParticle { // stru167
117  inline TrailParticle() {
118  x = 0;
119  y = 0;
120  z = 0;
121  time_left = 0;
122  time_to_live = 0;
123  bgr16 = 0;
124  }
125 
126  char field_0;
127  char field_1;
128  char field_2;
129  char field_3;
130  char field_4;
131  char field_5;
137  char field_10;
138  char field_11;
139  char field_12;
140  char field_13;
142  char field_16;
143  char field_17;
144 };
145 #pragma pack(pop)
146 
147 /* 363 */
148 #pragma pack(push, 1)
149 struct TrailParticleGenerator { // stru167_wrap
150  public:
152 
153  void GenerateTrailParticles(int x, int y, int z, int bgr16);
154  void UpdateParticles();
155 
156  protected:
157  void AddParticle(int x, int y, int z, int bgr16);
158 
162 };
163 #pragma pack(pop)
Particle_sw::z
float z
Definition: ParticleEngine.h:22
Particle::sZValue2
int sZValue2
Definition: ParticleEngine.h:74
ParticleEngine::Draw
void Draw()
Definition: ParticleEngine.cpp:113
Particle::flt_10
float flt_10
Definition: ParticleEngine.h:45
int16_t
signed __int16 int16_t
Definition: SDL_config.h:36
TrailParticle::field_0
char field_0
Definition: ParticleEngine.h:126
Particle_sw::b
float b
Definition: ParticleEngine.h:25
TrailParticleGenerator::UpdateParticles
void UpdateParticles()
Definition: ParticleEngine.cpp:37
TrailParticle::field_16
char field_16
Definition: ParticleEngine.h:142
Particle::b
unsigned char b
Definition: ParticleEngine.h:50
TrailParticleGenerator::particles
TrailParticle particles[100]
Definition: ParticleEngine.h:159
trail_particle_generator
TrailParticleGenerator trail_particle_generator
Definition: ParticleEngine.cpp:13
TrailParticle::field_3
char field_3
Definition: ParticleEngine.h:129
z
GLdouble GLdouble z
Definition: SDL_opengl_glext.h:407
Particle::uScreenSpaceY
int uScreenSpaceY
Definition: ParticleEngine.h:64
ParticleEngine::field_E420
float field_E420
Definition: ParticleEngine.h:107
ParticleEngine::UpdateParticles
void UpdateParticles()
Definition: ParticleEngine.cpp:134
TrailParticle::field_4
char field_4
Definition: ParticleEngine.h:130
Particle::timeToLive
int timeToLive
Definition: ParticleEngine.h:54
TrailParticle::field_5
char field_5
Definition: ParticleEngine.h:131
Texture
Definition: Texture.h:4
Particle::uLightColor_bgr
int uLightColor_bgr
Definition: ParticleEngine.h:78
RenderVertexD3D3
Definition: IRender.h:129
ParticleEngine::ViewProject_TrueIfStillVisible_BLV
bool ViewProject_TrueIfStillVisible_BLV(unsigned int uParticleID)
Definition: ParticleEngine.cpp:202
Particle::uScreenSpaceZ
int uScreenSpaceZ
Definition: ParticleEngine.h:65
Particle_sw::r
float r
Definition: ParticleEngine.h:23
Particle::uParticleColor
unsigned int uParticleColor
Definition: ParticleEngine.h:52
Particle::g
unsigned char g
Definition: ParticleEngine.h:50
TrailParticle::z
int16_t z
Definition: ParticleEngine.h:134
Particle_sw::field_38
int field_38[12]
Definition: ParticleEngine.h:34
ParticleEngine
Definition: ParticleEngine.h:93
Particle::screenspace_scale
fixed screenspace_scale
Definition: ParticleEngine.h:75
Particle::a
unsigned char a
Definition: ParticleEngine.h:50
TrailParticle::field_13
char field_13
Definition: ParticleEngine.h:140
Particle_sw::type
unsigned int type
Definition: ParticleEngine.h:19
y
EGLSurface EGLint EGLint y
Definition: SDL_egl.h:1596
Particle
Definition: ParticleEngine.h:40
TrailParticle::TrailParticle
TrailParticle()
Definition: ParticleEngine.h:117
ParticleEngine::ResetParticles
void ResetParticles()
Definition: ParticleEngine.cpp:57
TrailParticle::time_left
int16_t time_left
Definition: ParticleEngine.h:135
IRender.h
Particle::fov_x
float fov_x
Definition: ParticleEngine.h:76
ParticleType_1
@ ParticleType_1
Definition: ParticleEngine.h:7
TrailParticle::time_to_live
int16_t time_to_live
Definition: ParticleEngine.h:136
Particle::flt_18
float flt_18
Definition: ParticleEngine.h:47
x
EGLSurface EGLint x
Definition: SDL_egl.h:1596
TrailParticleGenerator::AddParticle
void AddParticle(int x, int y, int z, int bgr16)
Definition: ParticleEngine.cpp:16
TrailParticleGenerator::TrailParticleGenerator
TrailParticleGenerator()
Definition: ParticleEngine.h:151
Particle_sw::timeToLive
int timeToLive
Definition: ParticleEngine.h:27
Particle::x
float x
Definition: ParticleEngine.h:42
ParticleEngine::field_D160
char field_D160[4800]
Definition: ParticleEngine.h:106
TrailParticleGenerator::field_964
int field_964
Definition: ParticleEngine.h:161
ParticleType_Line
@ ParticleType_Line
Definition: ParticleEngine.h:11
TrailParticle::x
int16_t x
Definition: ParticleEngine.h:132
Particle_sw
Definition: ParticleEngine.h:18
ParticleEngine::pParticles
Particle pParticles[500]
Definition: ParticleEngine.h:104
stru2_LineList::field_604
char field_604[60]
Definition: ParticleEngine.h:87
ParticleType_Diffuse
@ ParticleType_Diffuse
Definition: ParticleEngine.h:10
TrailParticleGenerator
Definition: ParticleEngine.h:149
Particle_sw::y
float y
Definition: ParticleEngine.h:21
Particle_sw::g
float g
Definition: ParticleEngine.h:24
ParticleType
ParticleType
Definition: ParticleEngine.h:5
Particle::rotation_speed
int rotation_speed
Definition: ParticleEngine.h:61
Particle::fov_y
float fov_y
Definition: ParticleEngine.h:77
stru2_LineList::pLineVertices
RenderVertexD3D3 pLineVertices[48]
Definition: ParticleEngine.h:86
Particle::r
unsigned char r
Definition: ParticleEngine.h:50
Particle_sw::field_30
int field_30
Definition: ParticleEngine.h:32
ParticleEngine::AddParticle
void AddParticle(Particle_sw *a2)
Definition: ParticleEngine.cpp:65
Particle::_y
float _y
Definition: ParticleEngine.h:59
ParticleType_Sprite
@ ParticleType_Sprite
Definition: ParticleEngine.h:13
TrailParticleGenerator::GenerateTrailParticles
void GenerateTrailParticles(int x, int y, int z, int bgr16)
Definition: ParticleEngine.cpp:29
ParticleEngine::ParticleEngine
ParticleEngine()
Definition: ParticleEngine.cpp:49
stru2_LineList::uNumLines
unsigned int uNumLines
Definition: ParticleEngine.h:85
Particle::z
float z
Definition: ParticleEngine.h:44
ParticleEngine::uStartParticle
int uStartParticle
Definition: ParticleEngine.h:108
Particle::flt_14
float flt_14
Definition: ParticleEngine.h:46
ParticleType_8
@ ParticleType_8
Definition: ParticleEngine.h:9
Particle_sw::texture
Texture * texture
Definition: ParticleEngine.h:28
Particle::uScreenSpaceW
int uScreenSpaceW
Definition: ParticleEngine.h:66
ParticleType_Invalid
@ ParticleType_Invalid
Definition: ParticleEngine.h:6
TrailParticle::field_17
char field_17
Definition: ParticleEngine.h:143
Particle::particle_size
float particle_size
Definition: ParticleEngine.h:57
ParticleEngine::uEndParticle
int uEndParticle
Definition: ParticleEngine.h:109
TrailParticle::field_2
char field_2
Definition: ParticleEngine.h:128
TrailParticle
Definition: ParticleEngine.h:116
Particle::object_pid
unsigned short object_pid
Definition: ParticleEngine.h:70
Particle_sw::particle_size
float particle_size
Definition: ParticleEngine.h:30
ParticleEngine::uTimeElapsed
int uTimeElapsed
Definition: ParticleEngine.h:110
ParticleType_Rotating
@ ParticleType_Rotating
Definition: ParticleEngine.h:8
Particle::type
unsigned int type
Definition: ParticleEngine.h:41
ParticleEngine::DrawParticles_BLV
void DrawParticles_BLV()
Definition: ParticleEngine.cpp:259
Particle_sw::x
float x
Definition: ParticleEngine.h:20
Particle::_x
float _x
Definition: ParticleEngine.h:58
OurMath.h
stru2_LineList
Definition: ParticleEngine.h:84
Particle_sw::field_34
int field_34
Definition: ParticleEngine.h:33
TrailParticle::y
int16_t y
Definition: ParticleEngine.h:133
TrailParticle::field_1
char field_1
Definition: ParticleEngine.h:127
TrailParticle::field_10
char field_10
Definition: ParticleEngine.h:137
TrailParticle::bgr16
int16_t bgr16
Definition: ParticleEngine.h:141
fixed
Definition: OurMath.h:21
ParticleType_Bitmap
@ ParticleType_Bitmap
Definition: ParticleEngine.h:12
Particle::uScreenSpaceX
int uScreenSpaceX
Definition: ParticleEngine.h:63
TrailParticle::field_11
char field_11
Definition: ParticleEngine.h:138
Particle::texture
Texture * texture
Definition: ParticleEngine.h:55
ParticleEngine::pLines
stru2_LineList pLines
Definition: ParticleEngine.h:105
Particle::_z
float _z
Definition: ParticleEngine.h:60
Particle::zbuffer_depth
short zbuffer_depth
Definition: ParticleEngine.h:71
TrailParticleGenerator::num_particles
int num_particles
Definition: ParticleEngine.h:160
Particle::y
float y
Definition: ParticleEngine.h:43
uint32_t
unsigned __int32 uint32_t
Definition: SDL_config.h:39
TrailParticle::field_12
char field_12
Definition: ParticleEngine.h:139
Particle::angle
int angle
Definition: ParticleEngine.h:62
Particle_sw::field_2C
int field_2C
Definition: ParticleEngine.h:31
Particle_sw::uDiffuse
unsigned int uDiffuse
Definition: ParticleEngine.h:26