Mercurial > mm7
comparison Engine/Graphics/ParticleEngine.h @ 2496:5abd8fc8f1c6
for ITEM_ARTIFACT_LADYS_ESCORT
author | Ritor1 |
---|---|
date | Thu, 18 Sep 2014 17:38:54 +0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2495:7b076fe64f23 | 2496:5abd8fc8f1c6 |
---|---|
1 #pragma once | |
2 #include "Render.h" | |
3 | |
4 | |
5 | |
6 enum ParticleType: unsigned __int32 | |
7 { | |
8 ParticleType_Invalid = 0, | |
9 ParticleType_1 = 0x0001, | |
10 ParticleType_Rotating = 0x0004, | |
11 ParticleType_8 = 0x0008, | |
12 ParticleType_Diffuse = 0x0100, // colored plane | |
13 ParticleType_Line = 0x0200, // line | |
14 ParticleType_Bitmap = 0x0400, // textured planed | |
15 ParticleType_Sprite = 0x0800 | |
16 }; | |
17 | |
18 /* 305 */ | |
19 #pragma pack(push, 1) | |
20 struct Particle_sw | |
21 { | |
22 unsigned int type; | |
23 float x; | |
24 float y; | |
25 float z; | |
26 float r; | |
27 float g; | |
28 float b; | |
29 unsigned int uDiffuse; | |
30 int timeToLive; | |
31 unsigned int uTextureID; | |
32 float flt_28; | |
33 int field_2C; | |
34 int field_30; | |
35 int field_34; | |
36 int field_38[12]; | |
37 }; | |
38 #pragma pack(pop) | |
39 | |
40 | |
41 | |
42 /* 109 */ | |
43 #pragma pack(push, 1) | |
44 struct Particle | |
45 { | |
46 unsigned int type; | |
47 float x; | |
48 float y; | |
49 float z; | |
50 float flt_10; | |
51 float flt_14; | |
52 float flt_18; | |
53 union | |
54 { | |
55 struct | |
56 { | |
57 unsigned char r, g, b, a; | |
58 }; | |
59 unsigned int uParticleColor; | |
60 }; | |
61 int timeToLive; | |
62 unsigned int uTextureID; | |
63 float flt_28; | |
64 float _x; | |
65 float _y; | |
66 float _z; | |
67 int rotation_speed; | |
68 int angle; | |
69 int uScreenSpaceX; | |
70 int uScreenSpaceY; | |
71 int uScreenSpaceZ; // line end x | |
72 int uScreenSpaceW; // line end y | |
73 union | |
74 { | |
75 int sZValue; | |
76 struct | |
77 { | |
78 unsigned short object_pid; | |
79 short zbuffer_depth; | |
80 }; | |
81 }; | |
82 int sZValue2; // line end z | |
83 int _screenspace_scale; | |
84 float flt_5C; | |
85 float flt_60; | |
86 int uLightColor_bgr; | |
87 }; | |
88 #pragma pack(pop) | |
89 | |
90 | |
91 | |
92 /* 111 */ | |
93 #pragma pack(push, 1) | |
94 struct stru2_LineList | |
95 { | |
96 unsigned int uNumLines; | |
97 RenderVertexD3D3 pLineVertices[48]; | |
98 char field_604[60]; | |
99 }; | |
100 #pragma pack(pop) | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 /* 110 */ | |
107 #pragma pack(push, 1) | |
108 class ParticleEngine | |
109 { | |
110 public: | |
111 ParticleEngine(); | |
112 | |
113 void ResetParticles(); | |
114 void AddParticle(Particle_sw *a2); | |
115 void Draw(); | |
116 void UpdateParticles(); | |
117 bool ViewProject_TrueIfStillVisible_BLV(unsigned int uParticleID); | |
118 bool ViewProject_TrueIfStillVisible_ODM(unsigned int uID); | |
119 void DrawParticles_BLV(); | |
120 void DrawParticles_ODM(); | |
121 | |
122 Particle pParticles[500]; | |
123 stru2_LineList pLines; | |
124 char field_D160[4800]; | |
125 float field_E420; | |
126 int uStartParticle; | |
127 int uEndParticle; | |
128 int uTimeElapsed; | |
129 }; | |
130 #pragma pack(pop) | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 /* 160 */ | |
143 #pragma pack(push, 1) | |
144 struct TrailParticle // stru167 | |
145 { | |
146 inline TrailParticle() | |
147 { | |
148 x = 0; | |
149 y = 0; | |
150 z = 0; | |
151 time_left = 0; | |
152 time_to_live = 0; | |
153 bgr16 = 0; | |
154 } | |
155 | |
156 char field_0; | |
157 char field_1; | |
158 char field_2; | |
159 char field_3; | |
160 char field_4; | |
161 char field_5; | |
162 __int16 x; | |
163 __int16 y; | |
164 __int16 z; | |
165 __int16 time_left; | |
166 __int16 time_to_live; | |
167 char field_10; | |
168 char field_11; | |
169 char field_12; | |
170 char field_13; | |
171 __int16 bgr16; | |
172 char field_16; | |
173 char field_17; | |
174 }; | |
175 #pragma pack(pop) | |
176 | |
177 | |
178 /* 363 */ | |
179 #pragma pack(push, 1) | |
180 struct TrailParticleGenerator // stru167_wrap | |
181 { | |
182 public: | |
183 inline TrailParticleGenerator() | |
184 { | |
185 num_particles = 0; | |
186 } | |
187 | |
188 void GenerateTrailParticles(int x, int y, int z, int bgr16); | |
189 void UpdateParticles(); | |
190 | |
191 protected: | |
192 void AddParticle(int x, int y, int z, int bgr16); | |
193 | |
194 TrailParticle particles[100]; | |
195 int num_particles; | |
196 int field_964; | |
197 }; | |
198 #pragma pack(pop) | |
199 extern TrailParticleGenerator trail_particle_generator; // 005118E8 |