X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2FentityManager.cpp;h=0707dfe03eb8e1015882a5502ad03855c69c39c9;hb=9ae1c0798cff2d1ed816bccb0723bd5a4ca97194;hp=5a6249db6c779b0070561402b9286ace06bfbc3a;hpb=d388f0eca9748dc15b8dc9146b75828bb9dcabf0;p=physics.git diff --git a/src/entityManager.cpp b/src/entityManager.cpp index 5a6249d..0707dfe 100644 --- a/src/entityManager.cpp +++ b/src/entityManager.cpp @@ -1,39 +1,62 @@ +/* + * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "entityManager.h" +#include "debug.h" + +#include + #include "Entities/Entity.h" #include "Entities/Particle.h" #include "Entities/PhysicsEntity.h" -#include -using std::set; - -#include +#include "collisionManager.h" +#include "effectManager.h" /// ***** Private Method Headers ***** + void updateParticles(float); void updatePhysics(float); /// ***** Private Variables ***** -typedef set setPart; + +typedef std::set setPart; setPart particles_To_Add; setPart active_Particles; setPart particles_To_Remove; -bool clearParticles; -typedef set setPhys; +typedef std::set setPhys; setPhys physics_To_Add; setPhys active_Physics; setPhys physics_To_Remove; -bool clearPhysics; -/// ***** Public Methods ***** +/// ***** Initializers/Cleaners ***** void manager::init() { + collision::init(); } void manager::clean() { + collision::clean(); } +/// ***** Public Methods ***** + void manager::add(Entity* e) { { @@ -54,8 +77,9 @@ void manager::add(Entity* e) } } - std::cerr << "ENTITY TYPE NOT SUPPORTED BY addEntity()!!"; - std::cerr << std::endl; +#ifdef WARNINGS + cerr << "ENTITY TYPE NOT SUPPORTED BY addEntity()!!" << endl; +#endif } void manager::remove(Entity* e) { @@ -77,22 +101,19 @@ void manager::remove(Entity* e) } } - std::cerr << "ENTITY TYPE NOT SUPPORTED BY deleteEntity()!!"; - std::cerr << std::endl; -} - -void manager::clear() -{ - clearParticles = true; - clearPhysics = true; +#ifdef WARNINGS + cerr << "ENTITY TYPE NOT SUPPORTED BY deleteEntity()!!" << endl; +#endif } void manager::handleInput() { - // TODO + effect::handleInput(); } void manager::update(float time_step) { + effect::update(time_step); + updateParticles(time_step); updatePhysics(time_step); } @@ -116,6 +137,7 @@ void manager::draw() } /// ***** Private Methods ***** + void updateParticles(float time_step) { // add new Particle*s to Active @@ -164,6 +186,9 @@ void updatePhysics(float time_step) } physics_To_Remove.clear(); + // apply collision math + collision::update(active_Physics); + // update active PhysicsEntity*s for( setPhys::iterator it = active_Physics.begin(); it != active_Physics.end();