Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/projectiles/projectile.h @ 7090

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

HACK

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
[7084]14#include "sound_source.h"
15#include "sound_buffer.h"
16
[4597]17class Projectile : public WorldEntity
[3573]18{
[4890]19  public:
[4932]20    Projectile ();
[4890]21    virtual ~Projectile ();
[3573]22
[4927]23    void setFlightDirection(const Quaternion& flightDirection);
[4890]24    void setVelocity(const Vector &velocity);
25    void setLifeSpan(float lifeSpan);
[3573]26
[7084]27    void loadExplosionSound(const char* explosionSound);
28    void loadEngineSound(const char* engineSound);
[6431]29    void setMinEnergy(float energyMin);
[4948]30    /** @returns the minimal charched energy */
[6431]31    inline float getMinEnergy() { return this->energyMin; };
[4948]32    /** @returns if the Projectile can be charged */
33    inline bool isChageable() { return this->bChargeable; };
[3578]34
[5766]35    void setTarget(PNode* target);
[3573]36
[5443]37    /** @brief This is called, when the Projectile is Emitted */
38    virtual void activate() = 0;
39    /** @brief This is called, when the Projectile is being destroyed, or deleted */
40    virtual void deactivate() = 0;
[4948]41
[4890]42    virtual void destroy ();
[4597]43
[6056]44    virtual void tick (float dt);
45    /** @brief convenience function
46     * @param dt the Time passed
47     * @returns true if the Projectile is past its lifeTime, false if it shall still live */
48    inline bool tickLifeCycle(float dt ) { this->lifeCycle += dt/this->lifeSpan;  return(unlikely(this->lifeCycle >= 1)); }
[4890]49
[6056]50
[4890]51  protected:
52    // energy
[5498]53    float                 energyMin;                 //!< The minimal Energy a Projectile needs to be emitted.
[4948]54    bool                  bChargeable;               //!< if the Projectile is Charegeable
[4890]55
56    float                 lifeCycle;                 //!< The percentage of the Lifetime done [0-1]
[4927]57    float                 lifeSpan;                  //!< The entire lifespan of the Shoot. in seconds
[4890]58
[4948]59    Vector                flightDirection;           //!< DOF direction in which the shoot flighs
[4890]60
61    Vector                velocity;                  //!< velocity of the projectile.
[5766]62
[6078]63    PNode*                target;                    //!< A target for guided Weapons.
[7084]64
65    SoundSource          soundSource;
66  private:
67    SoundBuffer*          explosionBuffer;
68    SoundBuffer*          engineBuffer;
[3573]69};
70
71#endif /* _PROJECTILE_H */
Note: See TracBrowser for help on using the repository browser.