Mercurial > hg > opencollidoscope
comparison CollidoscopeApp/include/ParticleController.h @ 3:7fb593d53361
added comments
author | Fiore Martin <f.martin@qmul.ac.uk> |
---|---|
date | Tue, 12 Jul 2016 18:29:38 +0200 |
parents | 02467299402e |
children | ab6db404403a |
comparison
equal
deleted
inserted
replaced
2:dd889fff8423 | 3:7fb593d53361 |
---|---|
1 #pragma once | 1 #pragma once |
2 | 2 |
3 #include "cinder/gl/gl.h" | 3 #include "cinder/gl/gl.h" |
4 #include <vector> | 4 #include <vector> |
5 | 5 |
6 | 6 /** |
7 * The ParticleController creates/updates/draws and destroys particles | |
8 */ | |
7 class ParticleController { | 9 class ParticleController { |
8 | 10 |
9 struct Particle { | 11 struct Particle { |
10 | 12 |
11 ci::vec2 mCloudCenter; | 13 ci::vec2 mCloudCenter; |
21 static const int kMaxParticles = 150; | 23 static const int kMaxParticles = 150; |
22 | 24 |
23 std::vector<Particle> mParticles; | 25 std::vector<Particle> mParticles; |
24 std::vector< ci::vec2 > mParticlePositions; | 26 std::vector< ci::vec2 > mParticlePositions; |
25 | 27 |
28 // current number of active particles | |
26 size_t mNumParticles; | 29 size_t mNumParticles; |
27 | 30 |
28 ci::gl::VboRef mParticleVbo; | 31 ci::gl::VboRef mParticleVbo; |
29 ci::gl::BatchRef mParticleBatch; | 32 ci::gl::BatchRef mParticleBatch; |
30 | 33 |
31 public: | 34 public: |
35 /** | |
36 * Every time addParticles is run, up to kMaxParticleAdd are added at once | |
37 */ | |
32 static const int kMaxParticleAdd = 22; | 38 static const int kMaxParticleAdd = 22; |
33 | 39 |
34 ParticleController(); | 40 ParticleController(); |
41 | |
42 /** | |
43 * Adds \a amount particles and places them in \a initialLocation. | |
44 * \cloudSize determines how far the particles can go | |
45 */ | |
35 void addParticles(int amount, const ci::vec2 &initialLocation, const float cloudSize); | 46 void addParticles(int amount, const ci::vec2 &initialLocation, const float cloudSize); |
36 | 47 |
48 /** | |
49 * Updates position and age of the particles | |
50 */ | |
37 void updateParticles(); | 51 void updateParticles(); |
38 | 52 |
53 /** | |
54 * Draws all the particles | |
55 */ | |
39 inline void draw() | 56 inline void draw() |
40 { | 57 { |
41 mParticleBatch->draw(); | 58 mParticleBatch->draw(); |
42 } | 59 } |
43 | 60 |