1 #include "entityManager.h"
7 #include "Entities/Entity.h"
8 #include "Entities/Particle.h"
9 #include "Entities/PhysicsEntity.h"
11 /// ***** Private Method Headers *****
12 void updateParticles(float);
13 void updatePhysics(float);
15 /// ***** Private Variables *****
16 typedef std::set<Particle*> setPart;
17 setPart particles_To_Add;
18 setPart active_Particles;
19 setPart particles_To_Remove;
22 typedef std::set<PhysicsEntity*> setPhys;
23 setPhys physics_To_Add;
24 setPhys active_Physics;
25 setPhys physics_To_Remove;
28 /// ***** Public Methods *****
37 void manager::add(Entity* e)
40 Particle* p = dynamic_cast<Particle*>(e);
43 particles_To_Add.insert(p);
49 PhysicsEntity* p = dynamic_cast<PhysicsEntity*>(e);
52 physics_To_Add.insert(p);
57 std::cerr << "ENTITY TYPE NOT SUPPORTED BY addEntity()!!";
58 std::cerr << std::endl;
60 void manager::remove(Entity* e)
63 Particle* p = dynamic_cast<Particle*>(e);
66 particles_To_Remove.insert(p);
72 PhysicsEntity* p = dynamic_cast<PhysicsEntity*>(e);
75 physics_To_Remove.insert(p);
80 std::cerr << "ENTITY TYPE NOT SUPPORTED BY deleteEntity()!!";
81 std::cerr << std::endl;
86 clearParticles = true;
90 void manager::handleInput()
94 void manager::update(float time_step)
96 updateParticles(time_step);
97 updatePhysics(time_step);
101 // update active Particle*s
102 for( setPart::iterator it = active_Particles.begin();
103 it != active_Particles.end();
109 // update active PhysicsEntity*s
110 for( setPhys::iterator it = active_Physics.begin();
111 it != active_Physics.end();
119 /// ***** Private Methods *****
120 void updateParticles(float time_step)
122 // add new Particle*s to Active
123 for( setPart::iterator it = particles_To_Add.begin();
124 it != particles_To_Add.end();
127 active_Particles.insert(*it);
129 particles_To_Add.clear();
131 // remove dead Particle*s from Active
132 for( setPart::iterator it = particles_To_Remove.begin();
133 it != particles_To_Remove.end();
136 active_Particles.erase(*it);
138 particles_To_Remove.clear();
140 // update active Particle*s
141 for( setPart::iterator it = active_Particles.begin();
142 it != active_Particles.end();
145 (*it)->update(time_step);
148 void updatePhysics(float time_step)
150 // add new PhysicsEntity*s to Active
151 for( setPhys::iterator it = physics_To_Add.begin();
152 it != physics_To_Add.end();
155 active_Physics.insert(*it);
157 physics_To_Add.clear();
159 // remove dead PhysicsEntity*s from Active
160 for( setPhys::iterator it = physics_To_Remove.begin();
161 it != physics_To_Remove.end();
164 active_Physics.erase(*it);
166 physics_To_Remove.clear();
168 // update active PhysicsEntity*s
169 for( setPhys::iterator it = active_Physics.begin();
170 it != active_Physics.end();
173 (*it)->update(time_step);