Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core3/src/orxonox/objects/SpaceShip.h @ 1768

Last change on this file since 1768 was 1558, checked in by landauf, 16 years ago

added support for isVisible() and isActive() to all objects.
those functions are provided by BaseObject, combined with virtual functions changedVisibility and changedActivity respectively.
use them, to make orxonox scriptable, say: to change the state of objects with 2 simple functions instead of changing all meshes and emitters and billboards of an object. don't forget to pass calls to changedVisibility and changedActivity to the parent class.

additionally there is a new function, isInitialized(), provided by BaseObject too. this returns true if the constructor of BaseObject passed the object registration. this allows you, to check whether an object was properly initialized or if the constructor returned (as this is the case while creating the class hierarchy). use isInitialized() in your destructor before deleting something.

  • Property svn:eol-style set to native
File size: 5.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 *      Fabian 'x3n' Landau
24 *   Co-authors:
25 *      Benjamin Knecht
26 *
27 */
28
29#ifndef _SpaceShip_H__
30#define _SpaceShip_H__
31#include <string>
32#include "OrxonoxPrereqs.h"
33#include <OgrePrerequisites.h>
34
35#include "util/Math.h"
36#include "Camera.h"
37#include "Model.h"
38#include "tools/BillboardSet.h"
39
40namespace orxonox
41{
42    class _OrxonoxExport SpaceShip : public Model
43    {
44        public:
45            static SpaceShip *getLocalShip();
46
47            SpaceShip();
48            ~SpaceShip();
49            virtual bool create();
50            void registerAllVariables();
51            void init();
52            void setConfigValues();
53            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
54            virtual void tick(float dt);
55            virtual void changedVisibility();
56            virtual void changedActivity();
57
58            void setCamera(const std::string& camera = "");
59            void setMaxSpeed(float value);
60            void setMaxSideAndBackSpeed(float value);
61            void setMaxRotation(float value);
62            void setTransAcc(float value);
63            void setRotAcc(float value);
64            void setTransDamp(float value);
65            void setRotDamp(float value);
66            void getFocus();
67
68            inline float getMaxSpeed() const
69                { return this->maxSpeed_; }
70            inline float getMaxSideAndBackSpeed() const
71                { return this->maxSideAndBackSpeed_; }
72            inline float getMaxRotation() const
73                { return this->maxRotation_; }
74            inline float getTransAcc() const
75                { return this->translationAcceleration_; }
76            inline float getRotAcc() const
77                { return this->rotationAcceleration_; }
78            inline float getTransDamp() const
79                { return this->translationDamping_; }
80            inline float getRotDamp() const
81                { return this->rotationDamping_; }
82
83            static std::string whereAmI();
84            static void setMaxSpeedTest(float value)
85                { SpaceShip::instance_s->setMaxSpeed(value); }
86
87            static void movePitch(float value);
88            static void moveYaw(float value);
89            static void moveRoll(float value);
90            static void moveLongitudinal(float value);
91            static void moveLateral(float value);
92            static void fire();
93            void setMovePitch(float value);
94            void setMoveYaw(float value);
95            void setMoveRoll(float value);
96            void setMoveLongitudinal(float value);
97            void setMoveLateral(float value);
98            void doFire();
99
100            inline const Vector3& getDir() const
101                { return this->currentDir_; }
102            inline const Vector3& getInitialDir() const
103                { return this->initialDir_; }
104            inline const Vector3& getOrth() const
105                { return this->currentOrth_; }
106            inline const Vector3& getInitialOrth() const
107                { return this->initialOrth_; }
108
109            Camera* getCamera();
110
111            int getTeamNr() const
112                { return this->teamNr_; }
113            float getHealth() const
114                { return this->health_; }
115
116            bool getMyShip(){return myShip_;}
117
118        protected:
119            void setTeamNr(int teamNr)
120                { this->teamNr_ = teamNr; }
121
122        private:
123            void createCamera();
124            virtual ColourValue getProjectileColour() const
125                { return ColourValue(1.0, 1.0, 0.5); }
126
127            Vector3 testvector_;
128            Vector3 initialDir_;
129            Vector3 currentDir_;
130            Vector3 initialOrth_;
131            Vector3 currentOrth_;
132            bool bInvertYAxis_;
133            bool setMouseEventCallback_;
134            bool bLMousePressed_;
135            bool bRMousePressed_;
136
137            Ogre::SceneNode* camNode_;
138            Camera* cam_;
139            std::string camName_;
140
141            ParticleInterface* tt1_;
142            ParticleInterface* tt2_;
143
144            BillboardSet redBillboard_;
145            BillboardSet greenBillboard_;
146            Ogre::SceneNode* redNode_;
147            Ogre::SceneNode* greenNode_;
148            float blinkTime_;
149
150            BillboardSet crosshairNear_;
151            BillboardSet crosshairFar_;
152            Ogre::SceneNode* chNearNode_;
153            Ogre::SceneNode* chFarNode_;
154
155            float timeToReload_;
156            float reloadTime_;
157
158            float maxSideAndBackSpeed_;
159            float maxSpeed_;
160            float maxRotation_;
161            float translationAcceleration_;
162            float rotationAcceleration_;
163            float translationDamping_;
164            float rotationDamping_;
165
166            Radian maxRotationRadian_;
167            Radian rotationAccelerationRadian_;
168            Radian rotationDampingRadian_;
169            Radian zeroRadian_;
170            Radian mouseXRotation_;
171            Radian mouseYRotation_;
172
173            float mouseX_;
174            float mouseY_;
175
176        protected:
177            bool myShip_;
178
179            int teamNr_;
180            float health_;
181
182            static SpaceShip* instance_s;
183    };
184}
185
186#endif /* _SpaceShip_H__ */
Note: See TracBrowser for help on using the repository browser.