Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/tutorial/src/orxonox/worldentities/Drone.h @ 5835

Last change on this file since 5835 was 5835, checked in by scheusso, 15 years ago

removed unneccessary variable in Drone

File size: 4.9 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 *      Oli Scheuss
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29#ifndef _Drone_H__
30#define _Drone_H__
31
32#include "OrxonoxPrereqs.h"
33#include "worldentities/ControllableEntity.h"
34#include "controllers/DroneController.h"
35
36namespace orxonox
37{
38
39    /**
40    @brief
41        Drone, that is made to move upon a specified pattern.
42        This class was constructed for the PPS tutorial.
43    @author
44        Oli Scheuss
45    */
46    class _OrxonoxExport Drone : public ControllableEntity
47    {
48        public:
49            Drone(BaseObject* creator);
50            virtual ~Drone();
51
52            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a Drone through XML.
53            virtual void tick(float dt); //!< Defines which actions the Drone has to take in each tick.
54
55           
56            virtual void moveFrontBack(const Vector2& value);
57            virtual void moveRightLeft(const Vector2& value);
58            virtual void moveUpDown(const Vector2& value);
59
60            virtual void rotateYaw(const Vector2& value);
61            virtual void rotatePitch(const Vector2& value);
62            virtual void rotateRoll(const Vector2& value);
63           
64            /**
65            @brief Moves the Drone in the Front/Back-direction by the specifed amount.
66            @param value  The amount by which the drone is to be moved.
67            */
68            inline void moveFrontBack(float value)
69            { this->moveFrontBack(Vector2(value, 0)); }
70            /**
71            @brief Moves the Drone in the Right/Left-direction by the specifed amount.
72            @param value  The amount by which the drone is to be moved.
73            */
74            inline void moveRightLeft(float value)
75            { this->moveRightLeft(Vector2(value, 0)); }
76            /**
77            @brief Moves the Drone in the Up/Down-direction by the specifed amount.
78            @param value  The amount by which the drone is to be moved.
79            */
80            inline void moveUpDown(float value)
81            { this->moveUpDown(Vector2(value, 0)); }
82           
83            /**
84            @brief Rotates the Drone around the y-axis by the specifed amount.
85            @param value  The amount by which the drone is to be rotated.
86            */
87            inline void rotateYaw(float value)
88            { this->rotateYaw(Vector2(value, 0)); }
89            /**
90            @brief Rotates the Drone around the x-axis by the specifed amount.
91            @param value  The amount by which the drone is to be rotated.
92            */
93            inline void rotatePitch(float value)
94            { this->rotatePitch(Vector2(value, 0)); }
95            /**
96            @brief Rotates the Drone around the z-axis by the specifed amount.
97            @param value  The amount by which the drone is to be rotated.
98            */
99            inline void rotateRoll(float value)
100            { this->rotateRoll(Vector2(value, 0)); }
101           
102            void setPrimaryThrust( float thrust ){ this->primaryThrust_=thrust; }
103            void setAuxilaryThrust( float thrust ){ this->auxilaryThrust_=thrust; }
104            void setRotationThrust( float thrust ){ this->rotationThrust_=thrust; }
105           
106            float getPrimaryThrust(){ return this->primaryThrust_; }
107            float getAuxilaryThrust(){ return this->auxilaryThrust_; }
108            float getRotationThrust(){ return this->rotationThrust_; }
109           
110        private:
111            DroneController *myController_; //!< The controller of the Drone.
112           
113            btVector3 localLinearAcceleration_; //!< The linear acceleration that is used to move the Drone the next tick.
114            btVector3 localAngularAcceleration_; //!< The linear angular acceleration that is used to move the Drone the next tick.
115            float primaryThrust_; //!< The amount of primary thrust. This is just used, when moving forward.
116            float auxilaryThrust_; //!< The amount of auxilary thrust. Used for all other movements (except for rotations).
117            float rotationThrust_; //!< The amount of rotation thrust. Used for rotations only.
118    };
119
120}
121
122#endif /* _Drone_H__ */
Note: See TracBrowser for help on using the repository browser.