Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/presentation3/src/orxonox/worldentities/RocketDrone.h @ 6951

Last change on this file since 6951 was 6951, checked in by scheusso, 14 years ago

merged rocket branch into presentation3 and cleaned up some things (mostly debug output and intendation)

File size: 5.6 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 _RocketDrone_H__
30#define _RocketDrone_H__
31
32#include "OrxonoxPrereqs.h"
33#include "worldentities/ControllableEntity.h"
34#include "controllers/RocketController.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 RocketDrone : public ControllableEntity
47    {
48        public:
49            RocketDrone(BaseObject* creator);
50            virtual ~RocketDrone();
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            /**
103            @brief Sets the primary thrust to the input amount.
104            @param thrust The amount of thrust.
105            */
106            inline void setPrimaryThrust( float thrust )
107                { this->primaryThrust_=thrust; }     
108            // place your set-functions here.
109            // - hint: auxiliary thrust, rotation thrust.
110            inline void setAuxilaryThrust( float thrust )
111                { this->primaryThrust_=thrust; }
112                        inline void setRotationThrust( float thrust )
113                { this->rotationThrust_=thrust; }
114                        /**
115            @brief Gets the primary thrust to the input amount.
116            @preturn The amount of thrust.
117            */
118            inline float getPrimaryThrust()
119                { return this->primaryThrust_; }
120            // place your get-functions here.
121            inline float getAuxilaryThrust()
122                { return this->auxilaryThrust_; }
123                        inline float getRotationThrust()
124                { return this->rotationThrust_; }
125
126                        //void setOwner(Pawn* owner);
127        private:
128            RocketController *myController_; //!< The controller of the Drone.
129           
130            btVector3 localLinearAcceleration_; //!< The linear acceleration that is used to move the Drone the next tick.
131            btVector3 localAngularAcceleration_; //!< The linear angular acceleration that is used to move the Drone the next tick.
132            float primaryThrust_; //!< The amount of primary thrust. This is just used, when moving forward.
133            float auxilaryThrust_; //!< The amount of auxilary thrust. Used for all other movements (except for rotations).
134            float rotationThrust_; //!< The amount of rotation thrust. Used for rotations only.
135    };
136
137}
138
139#endif /* _RocketDrone_H__ */
Note: See TracBrowser for help on using the repository browser.