Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2014-12-24 21:11:43 +0000
committerStijn Buys <ingar@osirion.org>2014-12-24 21:11:43 +0000
commit0c6499e6789db9686bcea3bb3b7f782c2f659eb7 (patch)
tree3ffe09ff82fa1f8ffd27c9b6c522993d854cd649 /src/game
parentf330ae5ed3bd73c7b5b582cccde6cdd91d3c6e5b (diff)
Prevent projectiles from hitting the enity that fired it, prevent projectiles from hitting each other.
Diffstat (limited to 'src/game')
-rw-r--r--src/game/base/npc.cc2
-rw-r--r--src/game/base/platform.cc8
-rw-r--r--src/game/base/ship.cc4
3 files changed, 4 insertions, 10 deletions
diff --git a/src/game/base/npc.cc b/src/game/base/npc.cc
index f9a600e..d52c612 100644
--- a/src/game/base/npc.cc
+++ b/src/game/base/npc.cc
@@ -307,7 +307,7 @@ void NPC::frame(const unsigned long elapsed)
if (zone() != carrier->zone())
{
set_zone(carrier->zone());
- }
+ }
if (carrier->state() == core::Entity::Destroyed)
{
explode();
diff --git a/src/game/base/platform.cc b/src/game/base/platform.cc
index 1f81591..de7f987 100644
--- a/src/game/base/platform.cc
+++ b/src/game/base/platform.cc
@@ -109,18 +109,14 @@ void Platform::frame(const unsigned long elapsed)
continue;
}
- // location of the slot in world coordinates
- const math::Vector3f slot_location(location() + (axis() * slot->location()));
-
// find a target for this slot
Ship *current_enemy = 0;
float current_distance = 0.0f;
- const float projectile_radius = core::PROJECTILE_RADIUS;
+ math::Vector3f projectile_location(location() + (axis() * slot->location()));
+ math::Vector3f projectile_direction;
math::Axis projectile_axis(axis() * slot->axis());
- const math::Vector3f projectile_location(slot_location + projectile_axis.forward() * projectile_radius);
- math::Vector3f projectile_direction;
math::Vector3f aim_location;
// we only need half the cone angle for the cosine calculation
diff --git a/src/game/base/ship.cc b/src/game/base/ship.cc
index dbf8b19..9b78dfa 100644
--- a/src/game/base/ship.cc
+++ b/src/game/base/ship.cc
@@ -1205,10 +1205,8 @@ void Ship::frame(const unsigned long elapsed)
} else if ((weapon->projectile_interval() > 0) && (slot->last_fired() + weapon->projectile_interval() <= core::server()->timestamp())) {
// aim
- const float projectile_radius = core::PROJECTILE_RADIUS; // FIXME this should be defined somewhere
-
math::Axis projectile_axis(axis() * slot->axis());
- math::Vector3f projectile_location(location() + axis() * slot->location() + projectile_axis.forward() * projectile_radius);
+ math::Vector3f projectile_location(location() + axis() * slot->location());
math::Vector3f projectile_direction(target_aim - projectile_location);
projectile_direction.normalize();
float cosa = math::dotproduct(projectile_direction, projectile_axis.forward());