protected Vector3f findBestGunPosition(Actor ship, Vector3f direction){
        java.util.List<Vector3f> gunPositions = ship.getHotSpotsFor("Weapon");

        // Make sure we have gun positions
        if(gunPositions == null)
            return null;

        Vector3f closestPosition = gunPositions.get(0);
        float maxDotProduct = closestPosition.dotProduct(direction);

        for(Vector3f position : gunPositions){
            float thisDotProduct = position.dotProduct(direction);
            if ( maxDotProduct < thisDotProduct) {
                closestPosition = position;
                maxDotProduct = thisDotProduct;
            }
        }
        return closestPosition;
    }