Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 5447 was 5447, checked in by bensch, 19 years ago

orxonox/trunk: Explosions on Collision (—HACK—)
also made the FastFactory faster, not turning through the GarbageCollector, as it is not necessary. FastFactory also implements a Static Memeber subscriptor-Macro now
last but not least: new Functions in The ParticleEngine, and some revisited

File size: 2.5 KB
Line 
1/*!
2 * @file projectile.h
3  *  a projectile, that is been shooted by a weapon
4
5    You can use this class to make some shoots, but this isn't the real idea. If you want to just test, if the
6    shooting funcions work, use the Projectile class. But if you want to implement your own shoots its
7    different:<br>
8    Make a new class and derive it from Projectile. To have a weapon work well, reimplement the functions
9    - void tick()
10    - void draw()
11    - void hit() (only if you have working collision detection)
12    When you have implemented these functions you have just to add the projectiles to your weapon. You ll want
13    to make this by looking into the function
14    - Weapon::fire()
15    there you just change the line:
16    Projectile* pj = new Projectile();    TO     Projectile* pj = new MyOwnProjectileClass();
17    and schwups it works... :)
18*/
19
20#ifndef _PROJECTILE_H
21#define _PROJECTILE_H
22
23#include "world_entity.h"
24
25class FastFactory;
26
27class Projectile : public WorldEntity
28{
29  public:
30    Projectile ();
31    virtual ~Projectile ();
32
33    void setFlightDirection(const Quaternion& flightDirection);
34    void setVelocity(const Vector &velocity);
35    void setLifeSpan(float lifeSpan);
36
37
38    void setEnergies(float energyMin, float energyMax);
39    /** @returns the minimal charched energy */
40    inline float getEnergyMin() { return this->energyMin; };
41    /** @returns the maximal charched energy */
42    inline float getEnergyMax() { return this->energyMax; };
43    /** @returns if the Projectile can be charged */
44    inline bool isChageable() { return this->bChargeable; };
45
46
47    /** @brief This is called, when the Projectile is Emitted */
48    virtual void activate() = 0;
49    /** @brief This is called, when the Projectile is being destroyed, or deleted */
50    virtual void deactivate() = 0;
51
52    virtual void destroy ();
53
54    virtual void tick (float time);
55    virtual void draw ();
56
57  protected:
58    // energy
59    float                 energyMin;
60    float                 energyMax;
61    bool                  bChargeable;               //!< if the Projectile is Charegeable
62
63    float                 lifeCycle;                 //!< The percentage of the Lifetime done [0-1]
64    float                 lifeSpan;                  //!< The entire lifespan of the Shoot. in seconds
65
66    Vector                flightDirection;           //!< DOF direction in which the shoot flighs
67
68    Vector                velocity;                  //!< velocity of the projectile.
69};
70
71#endif /* _PROJECTILE_H */
Note: See TracBrowser for help on using the repository browser.