diff options
Diffstat (limited to 'src/game/base/ship.cc')
-rw-r--r-- | src/game/base/ship.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/game/base/ship.cc b/src/game/base/ship.cc index 219cb0c..4c3885a 100644 --- a/src/game/base/ship.cc +++ b/src/game/base/ship.cc @@ -925,10 +925,15 @@ void Ship::frame(const unsigned long elapsed) math::Vector3f projectile_direction(target_aim - projectile_location); projectile_direction.normalize(); float cosa = math::dotproduct(projectile_direction, projectile_axis.forward()); + + // fire a projectile if the angle between the aim direction and the slot's forward direction is small enough - // TODO configurable aim cone - if (cosa > 0.5f) { + + // we only need half the cone angle for the cosine calculation + float conecos = cosf( slot->cone() / 360.0f * M_PI); + + if (cosa >= conecos) { // aim math::Vector3f normal(math::crossproduct(projectile_direction, projectile_axis.forward())); if (normal.length() > MIN_DELTA) { |