Orxonox  0.0.5 Codename: Arcturus
MobileEntity.h
Go to the documentation of this file.
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  * Reto Grieder
24  * Co-authors:
25  * Martin Stypinski
26  *
27  */
28 
29 #ifndef _MobileEntity_H__
30 #define _MobileEntity_H__
31 
32 #include "OrxonoxPrereqs.h"
33 
34 #include "util/Math.h"
36 #include "WorldEntity.h"
37 
38 namespace orxonox
39 {
54  {
55  public:
56  MobileEntity(Context* context);
57  virtual ~MobileEntity();
58 
59  virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
60  virtual void tick(float dt) override;
61 
62  virtual void setPosition(const Vector3& position) override;
63  virtual void setOrientation(const Quaternion& orientation) override;
64 
65  virtual void setVelocity(const Vector3& velocity);
66  inline void setVelocity(float x, float y, float z)
67  { this->setVelocity(Vector3(x, y, z)); }
68  virtual inline const Vector3& getVelocity() const override
69  { return this->linearVelocity_; }
74  inline Vector3 getLocalVelocity() const
75  { return (this->getOrientation().Inverse() * this->getVelocity()); }
76 
77  virtual void setAngularVelocity(const Vector3& velocity);
78  inline void setAngularVelocity(float x, float y, float z)
79  { this->setAngularVelocity(Vector3(x, y, z)); }
80  inline const Vector3& getAngularVelocity() const
81  { return this->angularVelocity_; }
82 
83  void setAcceleration(const Vector3& acceleration);
84  inline void setAcceleration(float x, float y, float z)
85  { this->setAcceleration(Vector3(x, y, z)); }
86  inline const Vector3& getAcceleration() const
87  { return this->linearAcceleration_; }
88  void addAcceleration(const Vector3& acceleration, const Vector3 &relativePosition = Vector3::ZERO); // Adds the input acceleration at the input position to the MobileEntity.
89 
90  void setAngularAcceleration(const Vector3& acceleration);
91  inline void setAngularAcceleration(float x, float y, float z)
92  { this->setAngularAcceleration(Vector3(x, y, z)); }
93  inline const Vector3& getAngularAcceleration() const
94  { return this->angularAcceleration_; }
95 
96  void applyCentralForce(const Vector3& force);
97  inline void applyCentralForce(float x, float y, float z)
98  { this->applyCentralForce(Vector3(x, y, z)); }
99 
100  inline void setRotationRate(Degree rate)
101  { this->setAngularVelocity(this->getAngularVelocity().normalisedCopy() * rate.valueRadians()); }
102  inline Degree getRotationRate() const
103  { return Radian(this->getAngularVelocity().length()); }
104 
105  inline void setRotationAxis(const Vector3& axis)
106  { this->setAngularVelocity(axis * this->getAngularVelocity().length()); }
107  inline Vector3 getRotationAxis() const
108  { return this->getAngularVelocity().normalisedCopy(); }
109 
110  protected:
111  // Bullet btMotionState related
112  virtual void setWorldTransform(const btTransform& worldTrans) override;
113  virtual void getWorldTransform(btTransform& worldTrans) const override;
114 
119 
120  private:
121  virtual bool isCollisionTypeLegal(WorldEntity::CollisionType type) const override;
122  };
123 }
124 
125 #endif /* _MobileEntity_H__ */
void setAngularVelocity(float x, float y, float z)
Definition: MobileEntity.h:78
virtual const Vector3 & getVelocity() const override
Definition: MobileEntity.h:68
const Vector3 & getAngularVelocity() const
Definition: MobileEntity.h:80
Declaration of the Tickable interface.
const Vector3 & getAcceleration() const
Definition: MobileEntity.h:86
Vector3 linearAcceleration_
Definition: MobileEntity.h:115
Vector3 angularAcceleration_
Definition: MobileEntity.h:117
void setRotationRate(Degree rate)
Definition: MobileEntity.h:100
Vector3 linearVelocity_
Definition: MobileEntity.h:116
Vector3 getLocalVelocity() const
Get the velocity in the coordinate-system of the MoblieEntity.
Definition: MobileEntity.h:74
The WorldEntity represents everything that can be put in a Scene at a certain location.
Definition: WorldEntity.h:72
xmlelement
Definition: Super.h:519
Vector3 angularVelocity_
Definition: MobileEntity.h:118
void setRotationAxis(const Vector3 &axis)
Definition: MobileEntity.h:105
Degree getRotationRate() const
Definition: MobileEntity.h:102
Declaration and implementation of several math-functions, typedefs of some Ogre::Math classes to the ...
The MobileEntity is a derived class from orxonox::WorldEntity and orxonox::Tickable.
Definition: MobileEntity.h:53
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
Mode
Definition: CorePrereqs.h:102
CollisionType
Denotes the possible types of physical objects in a Scene.
Definition: WorldEntity.h:265
Shared library macros, enums, constants and forward declarations for the orxonox library ...
Vector3 getRotationAxis() const
Definition: MobileEntity.h:107
void setAcceleration(float x, float y, float z)
Definition: MobileEntity.h:84
void setAngularAcceleration(float x, float y, float z)
Definition: MobileEntity.h:91
Definition: Context.h:45
void applyCentralForce(float x, float y, float z)
Definition: MobileEntity.h:97
#define _OrxonoxExport
Definition: OrxonoxPrereqs.h:60
void setVelocity(float x, float y, float z)
Definition: MobileEntity.h:66
The Tickable interface provides a tick(dt) function, that gets called every frame.
Definition: Tickable.h:52
const Vector3 & getAngularAcceleration() const
Definition: MobileEntity.h:93