Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/orxonox/worldentities/Drone.h @ 12035

Last change on this file since 12035 was 11071, checked in by landauf, 9 years ago

merged branch cpp11_v3 back to trunk

  • Property svn:eol-style set to native
File size: 6.1 KB
RevLine 
[6832]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/pawns/Pawn.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 Pawn
47    {
48        public:
[9667]49            Drone(Context* context);
[6832]50            virtual ~Drone();
51
[11071]52            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override; //!< Method for creating a Drone through XML.
53            virtual void tick(float dt) override; //!< Defines which actions the Drone has to take in each tick.
[6832]54
[7127]55
[11071]56            virtual void moveFrontBack(const Vector2& value) override;
57            virtual void moveRightLeft(const Vector2& value) override;
58            virtual void moveUpDown(const Vector2& value) override;
[6832]59
[11071]60            virtual void rotateYaw(const Vector2& value) override;
61            virtual void rotatePitch(const Vector2& value) override;
62            virtual void rotateRoll(const Vector2& value) override;
[7127]63
[6832]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)); }
[7127]82
[6832]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)); }
[7127]101
[6832]102            /**
103            @brief Sets the primary thrust to the input amount.
104            @param thrust The amount of thrust.
105            */
106            inline void setPrimaryThrust( float thrust )
[7127]107                { this->primaryThrust_=thrust; }
[6832]108            inline void setAuxilaryThrust( float thrust )
[7127]109                { this->auxilaryThrust_=thrust; }
[6832]110            inline void setRotationThrust( float thrust )
[7127]111                { this->rotationThrust_=thrust; }
[6991]112            inline void setMaxDistanceToOwner( float distance)
113                { this->maxDistanceToOwner_=distance; }
114            inline void setMinDistanceToOwner( float distance)
115                { this->minDistanceToOwner_=distance; }
[7060]116            inline void setMaxShootingRange( float distance)
117                { this->maxShootingRange_=distance; }
[7039]118
[7127]119
[6832]120            /**
121            @brief Gets the primary thrust to the input amount.
[7039]122            @return The amount of thrust.
[6832]123            */
124            inline float getPrimaryThrust()
125                { return this->primaryThrust_; }
[7039]126            inline float getAuxilaryThrust()
[6832]127                { return this->auxilaryThrust_; }
[7039]128            inline float getRotationThrust()
[6832]129                { return this->rotationThrust_; }
[7039]130            inline float getMaxDistanceToOwner()
[6991]131                { return this->maxDistanceToOwner_; }
132            inline float getMinDistanceToOwner()
133                { return this->minDistanceToOwner_; }
[7060]134            inline float getMaxShootingRange()
135                { return this->maxShootingRange_; }
[7127]136
[6832]137        private:
138            DroneController *myController_; //!< The controller of the Drone.
[7127]139
[6832]140            btVector3 localLinearAcceleration_; //!< The linear acceleration that is used to move the Drone the next tick.
141            btVector3 localAngularAcceleration_; //!< The linear angular acceleration that is used to move the Drone the next tick.
[7127]142            float primaryThrust_; //!< The amount of primary thrust. This is just used, when moving forward.
[6832]143            float auxilaryThrust_; //!< The amount of auxilary thrust. Used for all other movements (except for rotations).
144            float rotationThrust_; //!< The amount of rotation thrust. Used for rotations only.
[6991]145            float maxDistanceToOwner_; //Maximum Distance to owner
146            float minDistanceToOwner_; //Minimum Distance to owner
[7060]147            float maxShootingRange_;
[6832]148    };
149
150}
151
152#endif /* _Drone_H__ */
Note: See TracBrowser for help on using the repository browser.