fysxasteroids/asteroids/Physics.cc

59 lines
1.2 KiB
C++
Raw Permalink Normal View History

2010-04-05 23:38:59 +02:00
#include <iostream>
#include <fstream>
#include "Model.h"
#include "Physics.h"
#include "EntityFactory.h"
#include <assert.h>
namespace asteroids {
static Physics* PhysicsInstance = NULL;
/*
* Inherited Module functions
*/
int Physics::OnInit (int argc, char* argv[]) {
Engine::PhysicsBase::OnInit (argc, argv);
Engine::LogMessage ("Physics Initialization!");
PhysicsInstance = this;
mWorldWidth = 16;
mWorldHeight = 16;
return 0;
}
int Physics::Simulate (float msec, Engine::ModelBase *model) {
int result = Engine::PhysicsBase::Simulate (msec, model);
Engine::EntityPhysicState* entity = NULL;
std::map<unsigned int, Engine::EntityPhysicState*>::iterator entity_iter;
for (entity_iter = mEntities.begin ();
entity_iter != mEntities.end();
entity_iter++) {
entity = entity_iter->second;
if (entity->mPosition[0] > mWorldWidth * 0.5)
entity->mPosition[0] -= mWorldWidth;
if (entity->mPosition[0] < - mWorldWidth * 0.5)
entity->mPosition[0] += mWorldWidth;
if (entity->mPosition[2] > mWorldHeight * 0.5)
entity->mPosition[2] -= mWorldHeight;
if (entity->mPosition[2] < - mWorldHeight * 0.5)
entity->mPosition[2] += mWorldHeight;
}
return result;
}
}