diff options
Diffstat (limited to 'src/game/base/collision.cc')
-rw-r--r-- | src/game/base/collision.cc | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/game/base/collision.cc b/src/game/base/collision.cc index 728ad14..215764c 100644 --- a/src/game/base/collision.cc +++ b/src/game/base/collision.cc @@ -8,26 +8,27 @@ #include "base/game.h" #include "core/zone.h" #include "math/functions.h" -#include "math/vector3f.h" +#include "math/vector3f.h" -namespace game { +namespace game +{ void Collision::distance_test(core::EntityControlable *first, core::Entity *second) { if (!first->owner()) return; - + if (first->state() == core::Entity::Docked) return; - + // FIXME - use distancesquared const float d = math::distance(first->location(), second->location()); const float r = first->radius() + second->radius(); - + if (second->type() == core::Entity::Globe) { // collision with a star or a planet - - if ( (d-r) < 0.0f) { + + if ((d-r) < 0.0f) { // crash zone if ((first->moduletype() == ship_enttype) && (first->state() != core::Entity::Destroyed)) { first->owner()->send_warning("^RBOOM!^N"); @@ -36,9 +37,9 @@ void Collision::distance_test(core::EntityControlable *first, core::Entity *seco } } else if (first->owner()->last_warning() + 5.0f < core::application()->time()) { // warning zone: star corona or planet atmosphere - if ((second->moduletype() == star_enttype) && (d-r < 50.0f)) { + if ((second->moduletype() == star_enttype) && (d-r < 50.0f)) { first->owner()->send_warning("^3Warning: entering star corona!^N"); - } else if ((second->moduletype() == planet_enttype) && (d-r < 15.0f)) { + } else if ((second->moduletype() == planet_enttype) && (d-r < 15.0f)) { first->owner()->send_warning("^3Warning: entering planet gravity well!^N"); } } @@ -49,14 +50,14 @@ void Collision::frame_zone(core::Zone *zone) { core::Zone::Content::iterator first; core::Zone::Content::iterator second; - + for (first = zone->content().begin(); first != zone->content().end(); first ++) { second = first; for (second++; second != zone->content().end(); second++) { - if ( (*first)->type() == core::Entity::Controlable) { + if ((*first)->type() == core::Entity::Controlable) { distance_test(static_cast<core::EntityControlable *>((*first)), (*second)); } else if ((*second)->type() == core::Entity::Controlable) { - distance_test(static_cast<core::EntityControlable *> ((*second)), (*first)); + distance_test(static_cast<core::EntityControlable *>((*second)), (*first)); } } } |