textpsys
annotate src/psys.h @ 0:a4ffd9e6984c
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 19 Aug 2015 09:13:48 +0300 |
parents | |
children | 4b1360a5d54d |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef PSYS_H_ |
nuclear@0 | 2 #define PSYS_H_ |
nuclear@0 | 3 |
nuclear@0 | 4 #include <vector> |
nuclear@0 | 5 #include "vec3.h" |
nuclear@0 | 6 #include "image.h" |
nuclear@0 | 7 |
nuclear@0 | 8 struct PSysParam { |
nuclear@0 | 9 // emitter parameters |
nuclear@0 | 10 float spawn_rate; |
nuclear@0 | 11 float spawn_range; |
nuclear@0 | 12 float life, life_range; |
nuclear@0 | 13 float size, size_range; |
nuclear@0 | 14 Vector3 gravity; |
nuclear@0 | 15 Image *spawn_map; |
nuclear@0 | 16 float spawn_map_speed; |
nuclear@0 | 17 |
nuclear@0 | 18 // particle parameters |
nuclear@0 | 19 Image *pimg; |
nuclear@0 | 20 Vector3 pcolor_start, pcolor_mid, pcolor_end; |
nuclear@0 | 21 float palpha_start, palpha_mid, palpha_end; |
nuclear@0 | 22 float pscale_start, pscale_mid, pscale_end; |
nuclear@0 | 23 }; |
nuclear@0 | 24 |
nuclear@0 | 25 void psys_default(PSysParam *pp); |
nuclear@0 | 26 |
nuclear@0 | 27 struct Particle { |
nuclear@0 | 28 Vector3 pos, vel; |
nuclear@0 | 29 Vector3 color; |
nuclear@0 | 30 float alpha; |
nuclear@0 | 31 float life, max_life; |
nuclear@0 | 32 float size, scale; |
nuclear@0 | 33 |
nuclear@0 | 34 struct Particle *next; |
nuclear@0 | 35 }; |
nuclear@0 | 36 |
nuclear@0 | 37 class ParticleSystem { |
nuclear@0 | 38 private: |
nuclear@0 | 39 float spawn_pending; |
nuclear@0 | 40 Particle *plist; |
nuclear@0 | 41 int pcount; |
nuclear@0 | 42 |
nuclear@0 | 43 float active_time; |
nuclear@0 | 44 bool expl; |
nuclear@0 | 45 Vector3 expl_cent; |
nuclear@0 | 46 float expl_force, expl_dur; |
nuclear@0 | 47 float expl_life; |
nuclear@0 | 48 |
nuclear@0 | 49 Vector3 *smcache; |
nuclear@0 | 50 int smcache_max[256]; |
nuclear@0 | 51 void gen_spawnmap(int count); |
nuclear@0 | 52 |
nuclear@0 | 53 void spawn_particle(); |
nuclear@0 | 54 |
nuclear@0 | 55 public: |
nuclear@0 | 56 Vector3 pos; |
nuclear@0 | 57 PSysParam pp; |
nuclear@0 | 58 bool active; |
nuclear@0 | 59 |
nuclear@0 | 60 ParticleSystem(); |
nuclear@0 | 61 ~ParticleSystem(); |
nuclear@0 | 62 |
nuclear@0 | 63 void explode(const Vector3 &c, float force, float dur = 1.0, float life = 0.0); |
nuclear@0 | 64 |
nuclear@0 | 65 bool alive() const; |
nuclear@0 | 66 |
nuclear@0 | 67 void update(float dt); |
nuclear@0 | 68 void draw() const; |
nuclear@0 | 69 }; |
nuclear@0 | 70 |
nuclear@0 | 71 #endif // PSYS_H_ |