Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 23, 2015, 7:33:37 PM (10 years ago)
Author:
meggiman
Message:
 
Location:
code/branches/weaponFS15/src/modules/weapons
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • code/branches/weaponFS15/src/modules/weapons/munitions/GravityBombMunition.cc

    r10369 r10455  
    33 *
    44 *  Created on: Apr 16, 2015
    5  *      Author: meggiman
     5 *      Author: Manuel Eggimann
    66 */
    77#include "GravityBombMunition.h"
     
    1717                this->maxMunitionPerMagazine_ = 1;
    1818                this->maxMagazines_ = 30;
    19                 this->magazines_ = 10;
     19                this->magazines_ = 15;
    2020
    2121                this->bUseSeparateMagazines_ = false;
  • code/branches/weaponFS15/src/modules/weapons/munitions/GravityBombMunition.h

    r10369 r10455  
    1414namespace orxonox
    1515{
    16 
     16        /**
     17         * @class       GravityBombMunition
     18         *
     19         * @brief       This class is used to set the behaviour of various
     20         *                      munition specific attributes of the GravityBomb like max count of munition per magazine.
     21         *
     22         * @author      Manuel
     23         * @date        23.05.2015
     24         */
    1725        class _WeaponsExport GravityBombMunition : public Munition
    1826    {
  • code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBomb.cc

    r10436 r10455  
    33 *
    44 *  Created on: Mar 26, 2015
    5  *      Author: meggiman
     5 *      Author: Manuel Eggimann
    66 */
    77#include "GravityBomb.h"
     
    1212        RegisterClass(GravityBomb);
    1313
    14         const float GravityBomb::LIFETIME = 5;
     14        const float GravityBomb::LIFETIME = 5;  ///< The gravity bomb lifetime in seconds.
    1515
    1616        GravityBomb::GravityBomb(Context* context):
     
    4141                    rocketModel->scale(3.0f);
    4242                    this->attach(rocketModel);
    43 
     43                                //Add second model because the bomb consists of the bomb and attached rockets (2 separate models)
    4444                    Model* bombModel =  new Model(this->getContext());
    4545                    bombModel->setMeshSource("GravityBomb.mesh"); //Demo Model from SimpleRocket
     
    4747                                this->attach(bombModel);
    4848
     49                                //Add particle effect to the flying rockets.
     50                                ParticleEmitter* fire = new ParticleEmitter(this->getContext());
     51                                fire->setOrientation(this->getOrientation());
     52                                fire->setSource("Orxonox/simplerocketfire");
     53                                this->attach(fire);
     54
     55                                //Add sound effect while the bomb is flying.
     56                                WorldSound* bombSound = new WorldSound(context);
     57                                bombSound->setSource("sounds/GravityBombFlight.ogg");
     58                                bombSound->setLooping(true);
     59                                bombSound->setVolume(1.0);
     60                                this->attach(bombSound);
     61                                bombSound->play();
    4962                        }
    5063                }
     
    5770                        if(timeToLife_ < 0)
    5871                        {
    59                                 orxout(debug_output) << "bomb has stoped moving" <<endl;
    60                                 setVelocity(Vector3::ZERO);
    61                                 setAcceleration(Vector3::ZERO);
     72                                //orxout(debug_output) << "bomb has stoped moving" <<endl;
     73                                setVelocity(Vector3::ZERO); //Stop the bomb.
    6274                                isDetonated_ = true;
    6375                        }
    6476                        else
    6577                        {
    66                                 orxout(debug_output)<< "Time to live:" << timeToLife_ <<endl;
    67                                 destroyCheck();
     78                                //orxout(debug_output)<< "Time to live:" << timeToLife_ <<endl;
     79                                destroyCheck(); //Every BasicProjectil has to call this method in each tick.
    6880                        }
    6981                        if(isDetonated_) detonate();
     
    7385        bool GravityBomb::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint)
    7486        {
    75                 if(otherObject != getShooter())
     87                if(otherObject != getShooter()) //Ensure that the bomb cannot collide with its shooter.
    7688                {
    7789                        orxout(debug_output) << "collides" << endl;
     
    8193                }
    8294                else{
    83                         orxout(debug_output) << "collided with shooter. Has no effect..." << endl;
     95                        //orxout(debug_output) << "collided with shooter. Has no effect..." << endl;
    8496                        return false;
    8597                }
     
    88100        void GravityBomb::detonate()
    89101        {
     102                //Create the GravityBombField and destroy the Projectil.
    90103                GravityBombField* field = new GravityBombField(this->getContext());
    91104                field->setShooter(this->getShooter());
    92105                field->setPosition(getPosition());
    93                 orxout(debug_output) << "detonating. Creating GravityBombField." <<endl;
    94                 orxout(debug_output) << "Field is at Position: " << getPosition() << endl;
     106                //orxout(debug_output) << "detonating. Creating GravityBombField." <<endl;
     107                //orxout(debug_output) << "Field is at Position: " << getPosition() << endl;
    95108                this->destroy();
    96109        }
  • code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBomb.h

    r10435 r10455  
    1 /*
    2  *   ORXONOX - the hottest 3D action shooter ever to exist
    3  *                    > www.orxonox.net <
    4  *
    5  *
    6  *   License notice:
    7  *
    8  *   This program is free software; you can redistribute it and/or
    9  *   modify it under the terms of the GNU General Public License
    10  *   as published by the Free Software Foundation; either version 2
    11  *   of the License, or (at your option) any later version.
    12  *
    13  *   This program is distributed in the hope that it will be useful,
    14  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
    15  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16  *   GNU General Public License for more details.
    17  *
    18  *   You should have received a copy of the GNU General Public License
    19  *   along with this program; if not, write to the Free Software
    20  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    21  *
    22  *   Author:
    23  *      Gabriel Nadler
    24  *   Co-authors:
    25  *      simonmie
    26  *
    27  */
    28 
    29 
    301/*
    312 * GravityBomb.h
     
    5122#include "../../../orxonox/worldentities/WorldEntity.h"
    5223#include "GravityBombField.h"
     24#include "sound\WorldSound.h"
    5325
    5426namespace orxonox
    5527{
    56 
     28        /**
     29         * @class       GravityBomb
     30         *
     31         * @brief       This class implements how long the bomb flies before it places the GravityField at it's last possition.
     32         *                      The field will be created either because the timelimit of the bomb expired or it hit something. After creation of the field,
     33         *                      the projectile (this object) is destroyed.
     34         *
     35         * @author      Manuel Eggimann
     36         * @date        23.05.2015
     37         */
    5738        class _WeaponsExport GravityBomb : public BasicProjectile , public MovableEntity, public RadarViewable
    5839        {
     
    6950                bool isDetonated_; //Used to check whether the Bomb has to be destroyed during next tick.
    7051                float timeToLife_; //Time the bomb flies before it explodes.
    71 
     52                WorldSound* bombSound_;
    7253        };
    7354}
  • code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.cc

    r10435 r10455  
    33 *
    44 *  Created on: Apr 2, 2015
    5  *      Author: meggiman
     5 *      Author: Manuel Eggimann
    66 */
    77
     
    1212        RegisterClass(GravityBombField);
    1313
    14         const float GravityBombField::FORCE_FIELD_LIFETIME = 20;
     14        //Change these constants to alter the behaviour of the field.
     15       
     16        const float GravityBombField::FORCE_FIELD_LIFETIME = 15;
    1517        const float GravityBombField::FORCE_SPHERE_START_RADIUS = 250;
    1618        const float GravityBombField::FORCE_SPHERE_START_STRENGTH = -500;
    17         const float GravityBombField::PEAK_EXPLOSION_FORCE = 1e6;
     19        const float GravityBombField::PEAK_EXPLOSION_FORCE = 5e4;
    1820        const float GravityBombField::FORCE_FIELD_EXPLOSION_DAMMAGE = 100;
    1921        const float GravityBombField::EXPLOSION_DURATION = 1;
    20         const float GravityBombField::EXPLOSION_RADIUS = 400;
     22        const float GravityBombField::EXPLOSION_RADIUS = 600;
    2123        const float GravityBombField::PEAK_ANGULAR_VELOCITY = 20;
     24        const float GravityBombField::CENTRE_MODEL_END_SIZE = 1.5;
    2225
    2326        GravityBombField::GravityBombField(Context* context) : ForceField(context),RadarViewable(this, static_cast<WorldEntity*>(this))
    2427        {
    2528                RegisterObject(GravityBombField);
     29                //Initialize variable with their initial values.
    2630                lifetime_=FORCE_FIELD_LIFETIME;
    2731                forceStrength_ = FORCE_SPHERE_START_STRENGTH;
    2832                forceSphereRadius_ = FORCE_SPHERE_START_RADIUS;
     33                modelScaling_ = 1;
    2934                fieldExploded_ = false;
    3035
     
    3439                setCollisionResponse(false);
    3540
     41                //Make the Field visible on Radar and minimap.
    3642                this->setRadarObjectColour(ColourValue(0.2, 0.2, 1.0,1)); // Blue
    3743                this->setRadarObjectShape(RadarViewable::Dot);
    3844                this->setRadarObjectScale(0.5f);
     45               
    3946
    4047                //Attach Model
    4148                Model* model = new Model(this->getContext());
    4249                model->setMeshSource("GravityBomb.mesh"); //Demo Model from SimpleRocket
    43                 model->scale(3.0f);
     50                model->scale(2.5f);
    4451                bombModel_ = new MovableEntity(context);
    4552                bombModel_->attach(model);
    4653                this->attach(bombModel_);
    4754
    48                 Backlight* centreLight = new Backlight(context);
    49                 centreLight->setColour(ColourValue(0.9,0.5,0.5,1));
    50                 centreLight->setScale(1.0);
    51                 centreLight->setTrailMaterial("Trail/backlighttrail");
    52                 centreLight->setMaterial("Examples/Flare");
    53                 centreLight->setLifetime(20);
    54                 bombModel_->attach(centreLight);
     55                //Add a Backlight to the centre.
     56                centreLight_ = new Backlight(context);
     57                centreLight_->setColour(ColourValue(0.2,0.9,0.2,1));
     58                centreLight_->setScale(0.3);
     59                centreLight_->setTrailMaterial("Trail/backlighttrail");
     60                centreLight_->setMaterial("Examples/Flare");
     61                centreLight_->setLifetime(20);
     62                bombModel_->attach(centreLight_);
    5563
     64                //Let the Bomb Modell in the centre rotate in a random direction.
    5665                Vector3 randomRotation;
    5766                srand(time(NULL));
     
    6473                //Add Collision Shape
    6574                SphereCollisionShape* collisionShape = new SphereCollisionShape(context);
    66                 collisionShape->setRadius(3.0);
     75                collisionShape->setRadius(10.0);
    6776                this->attachCollisionShape(collisionShape);
    6877
     78                //Add particle effect to visualize the force field.
    6979                this->particleSphere_ = new ParticleEmitter(this->getContext());
    7080                this->attach(this->particleSphere_);
    7181                particleSphere_->setSource("Orxonox/GravityBombField");
     82
     83                //Add a sound effect to the field.
     84                WorldSound* fieldSound = new WorldSound(context);
     85                fieldSound->setSource("sounds/GravityField.ogg");
     86                fieldSound->setLooping(true);
     87                fieldSound->setVolume(1.0);
     88                this->attach(fieldSound);
     89                fieldSound->play();
    7290        }
    7391
    7492        GravityBombField::~GravityBombField(){}
    7593
     94       
    7695        void GravityBombField::tick(float dt)
    7796        {
     
    7998                lifetime_-=dt;
    8099
    81                 if(lifetime_ > EXPLOSION_DURATION)
     100                if(lifetime_ > EXPLOSION_DURATION)//If field is still alive, make it smaller and stronger.
    82101                {
     102                        modelScaling_ += ((CENTRE_MODEL_END_SIZE-1) / FORCE_FIELD_LIFETIME)*dt;
    83103                        forceStrength_ *= (1+dt/10);
    84104                        forceSphereRadius_ = FORCE_SPHERE_START_RADIUS*(1-((FORCE_FIELD_LIFETIME-lifetime_)/FORCE_FIELD_LIFETIME)*((FORCE_FIELD_LIFETIME-lifetime_)/FORCE_FIELD_LIFETIME)*((FORCE_FIELD_LIFETIME-lifetime_)/FORCE_FIELD_LIFETIME));
     
    86106                else if(lifetime_ > 0)
    87107                {
    88                         if (!fieldExploded_)
     108                        if (!fieldExploded_) // Start the field explosion if it has not been started yet.
    89109                        {
    90                                 forceStrength_ = PEAK_EXPLOSION_FORCE;
     110                                forceStrength_ = pow((EXPLOSION_DURATION + lifetime_),4)/EXPLOSION_DURATION * PEAK_EXPLOSION_FORCE;
    91111                                fieldExploded_ = true;
    92112
     113                                //Add particle effect to visualize explosion
    93114                                explosionCross_ = new ParticleEmitter(this->getContext());
     115                                explosionCross_->setSource("Orxonox/FieldExplosion");
     116                                explosionCross_->setOrientation(rand(), rand(), rand(), rand());
     117                                explosionCross_->setScale(0.7);
    94118                                this->attach(explosionCross_);
    95                                 explosionCross_->setSource("Orxonox/FieldExplosion");
     119
     120                                //Add explosion sound effect.
     121                                explosionSound_ = new WorldSound(getContext());
     122                                explosionSound_->setSource("sounds/GravityFieldExplosion.ogg");
     123                                explosionSound_->setVolume(1.0);
     124                                explosionSound_->play();
    96125                        }
    97126
     127                        //Check if any pawn is inside the shockwave and hit it with dammage proportional to the distance between explosion centre and pawn. Make sure, the same pawn is damaged only once.
    98128                        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); ++it)
    99129                        {
    100130                                Vector3 distanceVector = it->getWorldPosition()-this->getWorldPosition();
    101                                  orxout(debug_output) << "Found Pawn:" << it->getWorldPosition() << endl;
     131                                 //orxout(debug_output) << "Found Pawn:" << it->getWorldPosition() << endl;
    102132                                if(distanceVector.length()< forceSphereRadius_)
    103133                                 {
    104                                          orxout(debug_output) << "Force sphere radius is: " << forceSphereRadius_ << " Distance to Pawn is: " << distanceVector.length();
     134                                         //orxout(debug_output) << "Force sphere radius is: " << forceSphereRadius_ << " Distance to Pawn is: " << distanceVector.length();
    105135                                         if (std::find(victimsAlreadyDamaged_.begin(),victimsAlreadyDamaged_.end(),*it) == victimsAlreadyDamaged_.end())
    106136                                         {
    107                                                  orxout(debug_output) << "Found Pawn to damage: " << it->getWorldPosition() << endl;
     137                                                 //orxout(debug_output) << "Found Pawn to damage: " << it->getWorldPosition() << endl;
    108138                                                 float damage = FORCE_FIELD_EXPLOSION_DAMMAGE*(1-distanceVector.length()/EXPLOSION_RADIUS);
    109                                                  orxout(debug_output) << "Damage: " << damage << endl;
     139                                                 //orxout(debug_output) << "Damage: " << damage << endl;
    110140                                                 it->hit(shooter_, it->getWorldPosition(), NULL, damage, 0,0);
    111 //                                               it->removeHealth(damage);
    112141                                                 victimsAlreadyDamaged_.push_back(*it);
    113142                                         }
     
    118147                        explosionCross_->setScale(forceSphereRadius_/FORCE_SPHERE_START_RADIUS);
    119148                }
    120                 else if (lifetime_ > -4)
     149                else if (lifetime_ > -6) //The field has to exist for 6 more seconds for the particles of the particle effect to vanish smoothly.
    121150                {
     151                        //Make the bomb model invisible, let the strength of the field be zero and remove all particle emitters so the particle effect will slowly vanish.
    122152                        bombModel_->setVisible(false);
    123153                        this->setRadarVisibility(false);
     
    127157                        explosionCross_->getParticleInterface()->removeAllEmitters();
    128158                }
    129 
     159               
    130160                setDiameter(forceSphereRadius_*2);
    131161                setVelocity(forceStrength_);
    132                 particleSphere_->setScale(forceSphereRadius_/FORCE_SPHERE_START_RADIUS);
     162                if(lifetime_>0) particleSphere_->setScale(forceSphereRadius_/FORCE_SPHERE_START_RADIUS);
     163                bombModel_->setScale(modelScaling_);
    133164
    134165                if (lifetime_ <= -4)
     
    141172        void GravityBombField::destroy()
    142173        {
    143                 //Animation
    144174                ForceField::destroy();
    145175        }
  • code/branches/weaponFS15/src/modules/weapons/projectiles/GravityBombField.h

    r10435 r10455  
    2020#include <stdlib.h>
    2121#include <time.h>
     22#include <math.h>
    2223#include "graphics/Backlight.h"
     24#include "sound\WorldSound.h"
    2325
    2426namespace orxonox {
     27
     28/**
     29 * @class       GravityBombField
     30 *
     31 * @brief       This class is used by GravityBomb to place the ForceField and Visual effect to the environment.
     32 *                      The field has a maximum lifetime and gets smaller and stronger the more time passes. In the end, the field explodes and damages all pawns nearby.
     33 *
     34 * @author      Manuel Eggimann
     35 * @date        23.05.2015
     36 */
    2537class GravityBombField: public ForceField, public RadarViewable {
    2638public:
     
    3042        virtual void destroy();
    3143
     44        /**
     45         * @fn  void GravityBombField::setShooter(Pawn* shooter)
     46         *
     47         * @brief       This function is used to determine save the pawn who created the field and is used inside the GravityBomb class.
     48         *
     49         * @author      Manuel Eggimann
     50         * @date        23.05.2015
     51         *
     52         * @param [in,out]      the Pawn that created the field.
     53         */
    3254        void setShooter(Pawn* shooter)
    3355        { this->shooter_ = shooter; }
     
    3759
    3860private:
    39         static const float FORCE_FIELD_LIFETIME;
    40         static const float FORCE_SPHERE_START_RADIUS;
    41         static const float FORCE_SPHERE_START_STRENGTH;
    42         static const float FORCE_FIELD_EXPLOSION_DAMMAGE;
    43         static const float EXPLOSION_DURATION;
    44         static const float EXPLOSION_RADIUS;
    45         static const float PEAK_ANGULAR_VELOCITY;
    46         static const float PEAK_EXPLOSION_FORCE;
     61        //Set these constants inside GravityBombField.cc to alter the behaviour of the field.
     62       
     63        static const float FORCE_FIELD_LIFETIME;        ///< The lifetime of the ForceField in seconds. After lifetime seconds, has already exploded and the particle effects will start to vanish.
     64        static const float FORCE_SPHERE_START_RADIUS;   ///< The initial sphere radius of the Force Field. The forcefield gets smaller by time.
     65        static const float FORCE_SPHERE_START_STRENGTH; ///< The initial Force the Field exerts on every object with non-zero mass.
     66        static const float FORCE_FIELD_EXPLOSION_DAMMAGE;   ///< The maximum dammage a pawn gets nearby an exploding field. The farer away from explosion center the smaller the dammage.
     67        static const float EXPLOSION_DURATION;  ///< Determines how fast the shockwave of the Explosion expands. It takes GravityBombField::EXPLOSION_DURATION seconds for the field to expand from 0 radius to GravityBombField::EXPLOSION_RADIUS.
     68        static const float EXPLOSION_RADIUS;    ///< How far does the shockwave reach. All pawns which outside of a sphere witch this radius rest unharmed by the explosion.
     69        static const float PEAK_ANGULAR_VELOCITY;   ///< The model of the bomb in the center of the Field does rotate faster and faster as time passes until it reaches PEAK_ANGULAR_VELOCITY at the fields end of life.
     70        static const float PEAK_EXPLOSION_FORCE;        ///< The peak force the explosion exerts on the pawns nearby.
     71        static const float CENTRE_MODEL_END_SIZE;   ///< Size of the 3d-model of the bomb in the fields centre.
    4772
    4873        float forceSphereRadius_;
    4974        float forceStrength_;
    5075        float lifetime_;
     76        float modelScaling_;
    5177        Vector3 rotationVector_;
    5278        bool fieldExploded_;
     
    5682        MovableEntity * bombModel_;
    5783        Pawn* shooter_;
     84        Backlight* centreLight_;
     85        WorldSound* explosionSound_;
    5886};
    5987
  • code/branches/weaponFS15/src/modules/weapons/weaponmodes/GravityBombFire.cc

    r10438 r10455  
    33 *
    44 *  Created on: Apr 16, 2015
    5  *      Author: meggiman
     5 *      Author: Manuel Eggimann
    66 */
    77#include "GravityBombFire.h"
     
    1919        RegisterClass(GravityBombFire);
    2020
    21         const float GravityBombFire::BOMB_VELOCITY = 400.0;
     21        const float GravityBombFire::BOMB_VELOCITY = 400.0; ///< The velocity of the bomb after launch
    2222
    2323        GravityBombFire::GravityBombFire(Context* context) : WeaponMode(context)
     
    2525                RegisterObject(GravityBombFire);
    2626
    27                 this->reloadTime_ = 0.50f;
     27                this->reloadTime_ = 0.50f; 
    2828                this->bParallelReload_ = false;
    29                 this->damage_ = 0.0f;
    30                 this->speed_ = BOMB_VELOCITY;
     29                this->damage_ = 20.0f;  ///< The damage of the Bomb if it hits a pawn.
    3130
    3231                this->setMunitionName("GravityBombMunition");
    33                 this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.8);
     32                this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.8);        ///< sets sound of the bomb as it is fired.
    3433        }
    3534
     
    3938        {
    4039                GravityBomb* bomb = new GravityBomb(this->getContext());
    41         this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
     40        //Create a new Bomb in 3D-Space and set the right direction speed and orientation.
     41                this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
    4242        bomb->setOrientation(this->getMuzzleOrientation());
    4343        bomb->setPosition(this->getMuzzlePosition());
    44         bomb->setVelocity(this->getMuzzleDirection() * (this->speed_+this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity().length()));
     44        bomb->setVelocity(this->getMuzzleDirection() * (this->BOMB_VELOCITY+this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity().length()));
    4545
     46                //Set the shooter of the bomb so it is possible to determine the pawn that killed another one and define damage to shield and healt the bomb does.
    4647        bomb->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
    4748                bomb->setDamage(this->getDamage());
  • code/branches/weaponFS15/src/modules/weapons/weaponmodes/GravityBombFire.h

    r10435 r10455  
    1 /**
    2  *   ORXONOX - the hottest 3D action shooter ever to exist
    3  *                    > www.orxonox.net <
    4  *
    5  *
    6  *   License notice:
    7  *
    8  *   This program is free software; you can redistribute it and/or
    9  *   modify it under the terms of the GNU General Public License
    10  *   as published by the Free Software Foundation; either version 2
    11  *   of the License, or (at your option) any later version.
    12  *
    13  *   This program is distributed in the hope that it will be useful,
    14  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
    15  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16  *   GNU General Public License for more details.
    17  *
    18  *   You should have received a copy of the GNU General Public License
    19  *   along with this program; if not, write to the Free Software
    20  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    21  *
    22  *   Author:
    23  *      Oliver Scheuss
    24  *   Co-authors:
    25  *      ...
    26  *
    27  */
     1/*
     2* GravityBombFire.h
     3*
     4*  Created on: Apr 16, 2015
     5*      Author: Manuel Eggimann
     6*/
    287
    298/**
     
    4221
    4322    /**
    44     @brief
    45         Fires the GravityBomb
    46     @author
    47         Manuel Eggimann
    48     @ingroup WeaponsWeaponModes
     23    *@brief
     24    *   Fires the GravityBomb. This class implements everything needed to fire the BasicProjectile GravityBomb.
     25    *   Everything that has to do with the bombs behaviour after launching it is implemented in GravityBomb and GravityBombField.
     26    *@author
     27    *    Manuel Eggimann
     28    *@ingroup WeaponsWeaponModes
    4929    */
    5030    class _WeaponsExport GravityBombFire : public WeaponMode
     
    5737
    5838        private:
    59             float speed_; //!< The initial speed of the bomb when it is launched.
    60             static const float BOMB_VELOCITY;
     39            static const float BOMB_VELOCITY; //!< The initial speed of the bomb when it is launched.
    6140    };
    6241}
Note: See TracChangeset for help on using the changeset viewer.