Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/modules/weapons/projectiles/Rocket.h @ 8804

Last change on this file since 8804 was 8738, checked in by landauf, 13 years ago

added "scale" for radar viewables. scale is relative, 1.0 means "normal".
rocket and simple rocket are now visible on the radar as small triangles.
greatly reduced lifetime of simple rocket.
fixed another possible cause for flashing hud radar.

  • Property svn:eol-style set to native
File size: 4.5 KB
Line 
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 *      simonmie
26 *
27 */
28
29#ifndef _Rocket_H__
30#define _Rocket_H__
31
32#include "weapons/WeaponsPrereqs.h"
33
34#include "tools/Timer.h"
35#include "worldentities/ControllableEntity.h"
36#include "interfaces/RadarViewable.h"
37
38#include "BasicProjectile.h"
39
40namespace orxonox
41{
42    class ConeCollisionShape;
43
44    /**
45    @brief
46        Rocket, that is made to move upon a specified pattern.
47        This class was constructed for the PPS tutorial.
48    @author
49        Oli Scheuss
50    */
51    class _WeaponsExport Rocket : public ControllableEntity, public BasicProjectile, public RadarViewable
52    {
53        public:
54            Rocket(BaseObject* creator);
55            virtual ~Rocket();
56
57            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a Rocket through XML.
58            virtual void tick(float dt); //!< Defines which actions the Rocket has to take in each tick.
59
60            virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
61            void destroyObject();
62            void destructionEffect();
63
64            virtual void moveFrontBack(const Vector2& value){}
65            virtual void moveRightLeft(const Vector2& value){}
66            virtual void moveUpDown(const Vector2& value){}
67
68            virtual void rotateYaw(const Vector2& value);
69            virtual void rotatePitch(const Vector2& value);
70            virtual void rotateRoll(const Vector2& value);
71
72            /**
73            @brief Moves the Rocket in the Front/Back-direction by the specifed amount.
74            @param value  The amount by which the Rocket is to be moved.
75            */
76            inline void moveFrontBack(float value)
77            { this->moveFrontBack(Vector2(value, 0)); }
78            /**
79            @brief Moves the Rocket in the Right/Left-direction by the specifed amount.
80            @param value  The amount by which the Rocket is to be moved.
81            */
82            inline void moveRightLeft(float value)
83            { this->moveRightLeft(Vector2(value, 0)); }
84            /**
85            @brief Moves the Rocket in the Up/Down-direction by the specifed amount.
86            @param value  The amount by which the Rocket is to be moved.
87            */
88            inline void moveUpDown(float value)
89            { this->moveUpDown(Vector2(value, 0)); }
90
91            /**
92            @brief Rotates the Rocket around the y-axis by the specifed amount.
93            @param value  The amount by which the Rocket is to be rotated.
94            */
95            inline void rotateYaw(float value)
96            { this->rotateYaw(Vector2(value, 0)); }
97            /**
98            @brief Rotates the Rocket around the x-axis by the specifed amount.
99            @param value  The amount by which the Rocket is to be rotated.
100            */
101            inline void rotatePitch(float value)
102            { this->rotatePitch(Vector2(value, 0)); }
103            /**
104            @brief Rotates the Rocket around the z-axis by the specifed amount.
105            @param value  The amount by which the Rocket is to be rotated.
106            */
107            inline void rotateRoll(float value)
108            { this->rotateRoll(Vector2(value, 0)); }
109
110            void setOwner(Pawn* owner);
111            inline Pawn* getOwner() const
112                { return this->owner_; }
113
114            virtual void fired(unsigned int firemode);
115
116        private:
117            WeakPtr<Pawn> owner_;
118            Vector3 localAngularVelocity_;
119
120            WeakPtr<PlayerInfo> player_;
121            Timer destroyTimer_;
122            float lifetime_;
123
124            WorldSound* defSndWpnEngine_;
125            WorldSound* defSndWpnLaunch_;
126    };
127
128}
129
130#endif /* _Rocket_H__ */
Note: See TracBrowser for help on using the repository browser.