5 #include "entityManager.h"
8 #include "Entities/Entity.h"
9 #include "Entities/Particle.h"
10 #include "Entities/PhysicsEntity.h"
12 /// ***** Private Method Headers *****
13 void updateParticles(float);
14 void updatePhysics(float);
16 /// ***** Private Variables *****
17 typedef std::set<Particle*> setPart;
18 setPart particles_To_Add;
19 setPart active_Particles;
20 setPart particles_To_Remove;
23 typedef std::set<PhysicsEntity*> setPhys;
24 setPhys physics_To_Add;
25 setPhys active_Physics;
26 setPhys physics_To_Remove;
29 /// ***** Public Methods *****
38 void manager::add(Entity* e)
41 Particle* p = dynamic_cast<Particle*>(e);
44 particles_To_Add.insert(p);
50 PhysicsEntity* p = dynamic_cast<PhysicsEntity*>(e);
53 physics_To_Add.insert(p);
58 std::cerr << "ENTITY TYPE NOT SUPPORTED BY addEntity()!!";
59 std::cerr << std::endl;
61 void manager::remove(Entity* e)
64 Particle* p = dynamic_cast<Particle*>(e);
67 particles_To_Remove.insert(p);
73 PhysicsEntity* p = dynamic_cast<PhysicsEntity*>(e);
76 physics_To_Remove.insert(p);
81 std::cerr << "ENTITY TYPE NOT SUPPORTED BY deleteEntity()!!";
82 std::cerr << std::endl;
87 clearParticles = true;
91 void manager::handleInput()
95 void manager::update(float time_step)
97 updateParticles(time_step);
98 updatePhysics(time_step);
102 // update active Particle*s
103 for( setPart::iterator it = active_Particles.begin();
104 it != active_Particles.end();
110 // update active PhysicsEntity*s
111 for( setPhys::iterator it = active_Physics.begin();
112 it != active_Physics.end();
120 /// ***** Private Methods *****
121 void updateParticles(float time_step)
123 // add new Particle*s to Active
124 for( setPart::iterator it = particles_To_Add.begin();
125 it != particles_To_Add.end();
128 active_Particles.insert(*it);
130 particles_To_Add.clear();
132 // remove dead Particle*s from Active
133 for( setPart::iterator it = particles_To_Remove.begin();
134 it != particles_To_Remove.end();
137 active_Particles.erase(*it);
139 particles_To_Remove.clear();
141 // update active Particle*s
142 for( setPart::iterator it = active_Particles.begin();
143 it != active_Particles.end();
146 (*it)->update(time_step);
149 void updatePhysics(float time_step)
151 // add new PhysicsEntity*s to Active
152 for( setPhys::iterator it = physics_To_Add.begin();
153 it != physics_To_Add.end();
156 active_Physics.insert(*it);
158 physics_To_Add.clear();
160 // remove dead PhysicsEntity*s from Active
161 for( setPhys::iterator it = physics_To_Remove.begin();
162 it != physics_To_Remove.end();
165 active_Physics.erase(*it);
167 physics_To_Remove.clear();
169 // update active PhysicsEntity*s
170 for( setPhys::iterator it = active_Physics.begin();
171 it != active_Physics.end();
174 (*it)->update(time_step);