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_