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