Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/weapons/projectile.h @ 6056

Last change on this file since 6056 was 6056, checked in by bensch, 18 years ago

orxonox/trunk: more small optimisations, and a convenience inline-tick-life-cycle functions for projectiles

File size: 2.3 KB
RevLine 
[4597]1/*!
[5039]2 * @file projectile.h
[5498]3 * a projectile, that is been shooted by a weapon
4 *
5 * You can use this class to make some Projectiles/Bullets/Lasers/Rockets/etc.
6 *
7 */
[3710]8
[3573]9#ifndef _PROJECTILE_H
10#define _PROJECTILE_H
11
12#include "world_entity.h"
13
[4597]14class Projectile : public WorldEntity
[3573]15{
[4890]16  public:
[4932]17    Projectile ();
[4890]18    virtual ~Projectile ();
[3573]19
[4927]20    void setFlightDirection(const Quaternion& flightDirection);
[4890]21    void setVelocity(const Vector &velocity);
22    void setLifeSpan(float lifeSpan);
[3573]23
[3632]24
[4948]25    void setEnergies(float energyMin, float energyMax);
26    /** @returns the minimal charched energy */
27    inline float getEnergyMin() { return this->energyMin; };
28    /** @returns the maximal charched energy */
29    inline float getEnergyMax() { return this->energyMax; };
30    /** @returns if the Projectile can be charged */
31    inline bool isChageable() { return this->bChargeable; };
[3578]32
[5766]33    void setTarget(PNode* target);
[3573]34
[5443]35    /** @brief This is called, when the Projectile is Emitted */
36    virtual void activate() = 0;
37    /** @brief This is called, when the Projectile is being destroyed, or deleted */
38    virtual void deactivate() = 0;
[4948]39
[4890]40    virtual void destroy ();
[4597]41
[6056]42    virtual void tick (float dt);
43    /** @brief convenience function
44     * @param dt the Time passed
45     * @returns true if the Projectile is past its lifeTime, false if it shall still live */
46    inline bool tickLifeCycle(float dt ) { this->lifeCycle += dt/this->lifeSpan;  return(unlikely(this->lifeCycle >= 1)); }
[4890]47
[6056]48
[4890]49  protected:
50    // energy
[5498]51    float                 energyMin;                 //!< The minimal Energy a Projectile needs to be emitted.
52    float                 energyMax;                 //!< The maximal Energy a Projectile can take, before being emitted.
[4948]53    bool                  bChargeable;               //!< if the Projectile is Charegeable
[4890]54
55    float                 lifeCycle;                 //!< The percentage of the Lifetime done [0-1]
[4927]56    float                 lifeSpan;                  //!< The entire lifespan of the Shoot. in seconds
[4890]57
[4948]58    Vector                flightDirection;           //!< DOF direction in which the shoot flighs
[4890]59
60    Vector                velocity;                  //!< velocity of the projectile.
[5766]61
[6054]62    PNode                 target;                    //!< A target for guided Weapons.
[3573]63};
64
65#endif /* _PROJECTILE_H */
Note: See TracBrowser for help on using the repository browser.