FTEQW
Documentation of the FTE engine source tree.
particles.h
Go to the documentation of this file.
1#ifndef _PARTICLES_H_
2#define _PARTICLES_H_
3
4extern int
38
41
42 rtqw_railtrail, //common to zquake/fuhquake/fte
45
46
47#ifdef Q2CLIENT
48/*WARNING: must match cl_tent.c*/
49typedef enum
50{
51 /*MUST start with standard q2 te effects*/
52 Q2TE_GUNSHOT = 0, //0
74 Q2TE_BOSSTPORT, // used as '22' in a map, so DON'T RENUMBER!!!
82//ROGUE
109//ROGUE
110
111
112//CODERED
124//CODERED
125
126#define Q2TE_MAX CRTE_SMOKE
127
128 /*splashes are somewhat special, but are dynamically indexed*/
136#define Q2SPLASH_MAX Q2SPLASH_BLOOD
137
138 /*free form*/
139 /*WARNING: must match cl_tent.c*/
146
154
159
163
166extern int pt_q2[];
167#endif
168
169typedef quint32_t trailkey_t;
170#define trailkey_null 0
171
172#define PARTICLE_Z_CLIP 8.0
173
174typedef enum {
175 BM_BLEND/*SRC_ALPHA ONE_MINUS_SRC_ALPHA*/,
176 BM_BLENDCOLOUR/*SRC_COLOR ONE_MINUS_SRC_COLOR*/,
177 BM_ADDA/*SRC_ALPHA ONE*/,
178 BM_ADDC/*GL_SRC_COLOR GL_ONE*/,
179 BM_SUBTRACT/*SRC_ALPHA ONE_MINUS_SRC_COLOR*/,
180 BM_INVMODA/*ZERO ONE_MINUS_SRC_ALPHA*/,
181 BM_INVMODC/*ZERO ONE_MINUS_SRC_COLOR*/,
182 BM_PREMUL/*ONE ONE_MINUS_SRC_ALPHA*/,
183 BM_RTSMOKE /*special shader generation that causes these particles to be lit up by nearby rtlights, instead of just being fullbright junk*/
185#define frandom() (rand()*(1.0f/(float)RAND_MAX))
186#define crandom() (rand()*(2.0f/(float)RAND_MAX)-1.0f)
187#define hrandom() (rand()*(1.0f/(float)RAND_MAX)-0.5f)
188
189#define P_INVALID -1
190
191#define P_RunParticleEffectType(a,b,c,d) P_RunParticleEffectState(a,b,c,d,NULL)
192
193// used for callback
196
197struct model_s;
198struct msurface_s;
199
200void P_InitParticleSystem(void);
201void P_ShutdownParticleSystem(void);
202void P_Shutdown(void);
203void P_LoadedModel(struct model_s *mod); /*checks a model's various effects*/
204void P_DefaultTrail (unsigned int entityeffects, unsigned int modelflags, int *trailid, int *trailpalidx);
205void P_EmitEffect (vec3_t pos, vec3_t orientation[3], unsigned int modeleflags, int type, trailkey_t *tsk);//this is just a wrapper
206int P_FindParticleType(const char *efname);
207#ifdef PSET_SCRIPT
208void PScript_ClearSurfaceParticles(struct model_s *mod);
209#endif
210
211#define P_RunParticleEffectTypeString pe->RunParticleEffectTypeString
212#define P_ParticleTrail pe->ParticleTrail
213#define P_RunParticleEffectState pe->RunParticleEffectState
214#define P_RunParticleWeather pe->RunParticleWeather
215#define P_RunParticleCube pe->RunParticleCube
216#define P_RunParticleEffect pe->RunParticleEffect
217#define P_RunParticleEffect2 pe->RunParticleEffect2
218#define P_RunParticleEffect3 pe->RunParticleEffect3
219#define P_RunParticleEffect4 pe->RunParticleEffect4
220#define P_RunParticleEffectPalette pe->RunParticleEffectPalette
221
222#define P_ParticleTrailIndex pe->ParticleTrailIndex
223#define P_InitParticles pe->InitParticles
224#define P_DelinkTrailstate pe->DelinkTrailstate
225#define P_ClearParticles pe->ClearParticles
226#define P_DrawParticles pe->DrawParticles
227
228typedef struct {
229 char *name1;
230 char *name2;
231
232 int (*FindParticleType) (const char *name);
233 qboolean (*ParticleQuery) (int type, int body, char *outstr, int outstrlen);
234
235 int (*RunParticleEffectTypeString) (vec3_t org, vec3_t dir, float count, char *name);
236 int (*ParticleTrail) (vec3_t startpos, vec3_t end, int type, float timeinterval, int dlkey, vec3_t dlaxis[3], trailkey_t *tk);
237 int (*RunParticleEffectState) (vec3_t org, vec3_t dir, float count, int typenum, trailkey_t *tk);
238 void (*RunParticleWeather) (vec3_t minb, vec3_t maxb, vec3_t dir, float count, int colour, char *efname);
239 void (*RunParticleCube) (int typenum, vec3_t minb, vec3_t maxb, vec3_t dir_min, vec3_t dir_max, float count, int colour, qboolean gravity, float jitter); //typenum may be P_INVALID
240 void (*RunParticleEffect) (vec3_t org, vec3_t dir, int color, int count);
241 void (*RunParticleEffect2) (vec3_t org, vec3_t dmin, vec3_t dmax, int color, int effect, int count);
242 void (*RunParticleEffect3) (vec3_t org, vec3_t box, int color, int effect, int count);
243 void (*RunParticleEffect4) (vec3_t org, float radius, int color, int effect, int count);
244 void (*RunParticleEffectPalette) (const char *nameprefix, vec3_t org, vec3_t dir, int color, int count);
245
246 void (*ParticleTrailIndex) (vec3_t start, vec3_t end, int type, float timeinterval, int color, int crnd, trailkey_t *tk); //P_INVALID is fine for the type here, you'll get a default trail.
247 qboolean (*InitParticles) (void);
248 void (*ShutdownParticles) (void);
249 void (*DelinkTrailstate) (trailkey_t *tk);
250 void (*ClearParticles) (void);
251 void (*DrawParticles) (void);
253extern particleengine_t *pe;
254
255#endif
qboolean
Definition: api_menu.h:34
vec_t vec3_t[3]
Definition: api_menu.h:40
void(QDECL *vgui_frame)(void)
dVector3 gravity
Definition: com_phys_ode.c:306
dBodyID body
Definition: com_phys_ode.c:619
dReal dReal radius
Definition: com_phys_ode.c:289
static CONST PIXELFORMATDESCRIPTOR *static int
Definition: gl_vidnt.c:222
GLsizei count
Definition: glquake.h:149
GLint GLenum type
Definition: glquake.h:157
GLuint GLcharARB * name
Definition: glquake.h:155
static png_size_t start
Definition: image.c:1419
keynum_t pos
Definition: in_sdl.c:105
int rt_knightspike
Definition: particles.h:34
void P_EmitEffect(vec3_t pos, vec3_t orientation[3], unsigned int modeleflags, int type, trailkey_t *tsk)
Definition: r_part.c:985
int pt_gunshot
Definition: cl_tent.c:140
quint32_t trailkey_t
Definition: particles.h:169
q2particleeffects_t
Definition: particles.h:50
@ Q2TE_SHIELD_SPARKS
Definition: particles.h:65
@ Q2TE_RAILTRAIL
Definition: particles.h:55
@ Q2TE_MOREBLOOD
Definition: particles.h:95
@ CRTE_STAIN
Definition: particles.h:120
@ Q2RT_TRAP
Definition: particles.h:147
@ Q2TE_ELECTRIC_SPARKS
Definition: particles.h:99
@ Q2TE_EXPLOSION1_NP
Definition: particles.h:107
@ CRTE_BLASTER_MUZZLEFLASH
Definition: particles.h:114
@ Q2PT_FOOTSTEP
Definition: particles.h:162
@ Q2TE_FORCEWALL
Definition: particles.h:90
@ Q2TE_HEATBEAM_STEAM
Definition: particles.h:97
@ CRTE_LEADERBLASTER
Definition: particles.h:113
@ Q2PT_FLIES
Definition: particles.h:156
@ Q2TE_BLASTER
Definition: particles.h:54
@ CRTE_LEADERFIELD
Definition: particles.h:117
@ Q2RT_ROCKET
Definition: particles.h:144
@ Q2TE_WIDOWBEAMOUT
Definition: particles.h:103
@ Q2TE_GRENADE_EXPLOSION_WATER
Definition: particles.h:70
@ Q2TE_DEBUGTRAIL
Definition: particles.h:87
@ Q2RT_PLASMA
Definition: particles.h:153
@ Q2TE_BFG_EXPLOSION
Definition: particles.h:72
@ Q2TE_CHAINFIST_SMOKE
Definition: particles.h:98
@ Q2TE_RAILTRAIL2
Definition: particles.h:84
@ CRTE_CABLEGUT
Definition: particles.h:122
@ CRTE_SMART_MUZZLEFLASH
Definition: particles.h:116
@ Q2TE_BFG_LASER
Definition: particles.h:75
@ Q2RT_FLAG2
Definition: particles.h:149
@ Q2TE_LASER_SPARKS
Definition: particles.h:67
@ Q2TE_PARASITE_ATTACK
Definition: particles.h:68
@ Q2RT_FLAG1
Definition: particles.h:148
@ Q2TE_GUNSHOT
Definition: particles.h:52
@ Q2RT_TAGTRAIL
Definition: particles.h:150
@ Q2TE_STEAM
Definition: particles.h:93
@ Q2TE_WELDING_SPARKS
Definition: particles.h:77
@ Q2RT_GIB
Definition: particles.h:142
@ Q2RT_TRACKER
Definition: particles.h:151
@ Q2SPLASH_LAVA
Definition: particles.h:134
@ Q2PT_TRACKERSHELL
Definition: particles.h:158
@ Q2SPLASH_SPARKS
Definition: particles.h:130
@ Q2PT_PLAYER_TELEPORT
Definition: particles.h:161
@ Q2TE_EXPLOSION1_BIG
Definition: particles.h:106
@ Q2TE_BULLET_SPARKS
Definition: particles.h:66
@ Q2TE_BLUEHYPERBLASTER
Definition: particles.h:79
@ Q2TE_FLASHLIGHT
Definition: particles.h:89
@ Q2TE_HEATBEAM
Definition: particles.h:91
@ Q2TE_SHOTGUN
Definition: particles.h:56
@ Q2RT_BLASTERTRAIL
Definition: particles.h:140
@ Q2TE_SCREEN_SPARKS
Definition: particles.h:64
@ Q2TE_EXPLOSION2
Definition: particles.h:58
@ CRTE_FIRE
Definition: particles.h:121
@ CRTE_BLUE_MUZZLEFLASH
Definition: particles.h:115
@ Q2TE_PLASMA_EXPLOSION
Definition: particles.h:80
@ Q2TE_HEATBEAM_SPARKS
Definition: particles.h:96
@ Q2TE_GRAPPLE_CABLE
Definition: particles.h:76
@ Q2PT_RESPAWN
Definition: particles.h:160
@ Q2PT_TRAP
Definition: particles.h:157
@ Q2TE_LIGHTNING
Definition: particles.h:86
@ CRTE_BLASTERBEAM
Definition: particles.h:119
@ Q2TE_BFG_BIGEXPLOSION
Definition: particles.h:73
@ Q2TE_ROCKET_EXPLOSION
Definition: particles.h:59
@ Q2SPLASH_BROWN_WATER
Definition: particles.h:132
@ Q2SPLASH_UNKNOWN
Definition: particles.h:129
@ Q2SPLASH_SLIME
Definition: particles.h:133
@ Q2TE_SPARKS
Definition: particles.h:61
@ Q2TE_FLECHETTE
Definition: particles.h:108
@ Q2TE_BUBBLETRAIL
Definition: particles.h:63
@ Q2TE_FLAME
Definition: particles.h:85
@ Q2SPLASH_BLOOD
Definition: particles.h:135
@ Q2TE_GRENADE_EXPLOSION
Definition: particles.h:60
@ Q2TE_NUKEBLAST
Definition: particles.h:104
@ Q2TE_MEDIC_CABLE_ATTACK
Definition: particles.h:71
@ Q2RT_BLASTERTRAIL2
Definition: particles.h:141
@ Q2TE_TELEPORT_EFFECT
Definition: particles.h:101
@ Q2TE_SPLASH
Definition: particles.h:62
@ Q2PT_BFGPARTICLES
Definition: particles.h:155
@ Q2TE_DBALL_GOAL
Definition: particles.h:102
@ Q2TE_MONSTER_HEATBEAM
Definition: particles.h:92
@ Q2TE_BUBBLETRAIL2
Definition: particles.h:94
@ Q2SPLASH_BLUE_WATER
Definition: particles.h:131
@ Q2TE_BOSSTPORT
Definition: particles.h:74
@ Q2TE_WIDOWSPLASH
Definition: particles.h:105
@ Q2TE_PLAIN_EXPLOSION
Definition: particles.h:88
@ Q2TE_ROCKET_EXPLOSION_WATER
Definition: particles.h:69
@ Q2TE_BLASTER2
Definition: particles.h:83
@ Q2TE_TUNNEL_SPARKS
Definition: particles.h:81
@ Q2PT_MAX
Definition: particles.h:164
@ Q2TE_BLOOD
Definition: particles.h:53
@ Q2TE_TRACKER_EXPLOSION
Definition: particles.h:100
@ CRTE_SMOKE
Definition: particles.h:123
@ CRTE_DEATHFIELD
Definition: particles.h:118
@ Q2RT_IONRIPPER
Definition: particles.h:152
@ Q2TE_EXPLOSION1
Definition: particles.h:57
@ Q2RT_GREENGIB
Definition: particles.h:143
@ Q2RT_GRENADE
Definition: particles.h:145
@ Q2TE_GREENBLOOD
Definition: particles.h:78
int rtdp_nexuizplasma
Definition: particles.h:36
int ptdp_superspikequad
Definition: particles.h:10
cvar_t r_particlesystem
Definition: r_part.c:606
int rt_blood
Definition: particles.h:31
int rtqw_railtrail
Definition: particles.h:42
int ptqw_lightningblood
Definition: particles.h:40
void P_DefaultTrail(unsigned int entityeffects, unsigned int modelflags, int *trailid, int *trailpalidx)
Definition: r_part.c:1087
int rt_slightblood
Definition: particles.h:33
int ptdp_tei_g3
Definition: particles.h:24
int ptdp_flamejet
Definition: particles.h:19
int pt_q2[]
Definition: cl_tent.c:135
int ptdp_gunshotquad
Definition: particles.h:6
void P_Shutdown(void)
Definition: r_part.c:772
blendmode_t
Definition: particles.h:174
@ BM_PREMUL
Definition: particles.h:182
@ BM_ADDA
Definition: particles.h:177
@ BM_ADDC
Definition: particles.h:178
@ BM_SUBTRACT
Definition: particles.h:179
@ BM_INVMODA
Definition: particles.h:180
@ BM_BLEND
Definition: particles.h:175
@ BM_BLENDCOLOUR
Definition: particles.h:176
@ BM_RTSMOKE
Definition: particles.h:183
@ BM_INVMODC
Definition: particles.h:181
int pt_tarexplosion
Definition: particles.h:15
cvar_t r_particlesdesc
int ptqw_blood
Definition: particles.h:39
int ptdp_tei_smoke
Definition: particles.h:25
void PScript_ClearSurfaceParticles(struct model_s *mod)
Definition: p_script.c:3901
int ptfte_bullet
Definition: particles.h:43
int rt_grenade
Definition: particles.h:30
int ptdp_plasmaburn
Definition: particles.h:23
int pt_knightspike
Definition: particles.h:12
int ptdp_flame
Definition: particles.h:20
int ptdp_spark
Definition: particles.h:22
int ptdp_spikequad
Definition: particles.h:8
int rtdp_glowtrail
Definition: particles.h:37
int ptdp_blood
Definition: particles.h:21
int pt_teleportsplash
Definition: particles.h:16
int ptdp_smallflash
Definition: particles.h:18
void P_InitParticleSystem(void)
Definition: r_part.c:645
int rt_vorespike
Definition: particles.h:35
int rt_rocket
Definition: particles.h:29
int ptdp_stardust
Definition: particles.h:28
int ptdp_explosionquad
Definition: particles.h:14
int pt_wizspike
Definition: particles.h:11
int pt_lavasplash
Definition: particles.h:17
particleengine_t * pe
Definition: r_part.c:633
int P_FindParticleType(const char *efname)
Definition: r_part.c:748
int rt_wizspike
Definition: particles.h:32
int pt_spike
Definition: particles.h:7
int ptdp_tei_plasmahit
Definition: particles.h:27
void P_ShutdownParticleSystem(void)
Definition: r_part.c:689
int ptfte_superbullet
Definition: particles.h:44
int pt_superspike
Definition: particles.h:9
int pt_explosion
Definition: particles.h:13
int ptdp_tei_bigexplosion
Definition: particles.h:26
void P_LoadedModel(struct model_s *mod)
Definition: cl_tent.c:483
vec3_t end
Definition: r_d3.c:692
Definition: cvar.h:59
Definition: gl_model.h:972
Definition: gl_model.h:459
Definition: particles.h:228
char * name1
Definition: particles.h:229
char * name2
Definition: particles.h:230