Orxonox  0.0.5 Codename: Arcturus
WorldEntity.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  * Fabian 'x3n' Landau
24  * Reto Grieder (physics)
25  * Co-authors:
26  * ...
27  *
28  */
29 
30 #ifndef _WorldEntity_H__
31 #define _WorldEntity_H__
32 
33 #include "OrxonoxPrereqs.h"
34 
35 #ifdef ORXONOX_RELEASE
36 # include <OgreSceneNode.h>
37 #endif
38 #include <LinearMath/btMotionState.h>
39 #include <LinearMath/btAlignedAllocator.h>
40 
41 #include "util/Math.h"
42 #include "util/OgreForwardRefs.h"
43 #include "core/BaseObject.h"
45 
46 namespace orxonox
47 {
72  class _OrxonoxExport WorldEntity : public BaseObject, public Synchronisable, public btMotionState
73  {
74  friend class Scene;
75 
76  public:
77  BT_DECLARE_ALIGNED_ALLOCATOR();
78 
79  // Define our own transform space enum to avoid Ogre includes here
84  enum class TransformSpace
85  {
87  Local,
89  Parent,
91  World
92  };
93 
94  public:
95  WorldEntity(Context* context);
96  virtual ~WorldEntity();
97 
98  virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
99 
100  inline const Ogre::SceneNode* getNode() const
101  { return this->node_; }
102 
103  static const Vector3 FRONT;
104  static const Vector3 BACK;
105  static const Vector3 LEFT;
106  static const Vector3 RIGHT;
107  static const Vector3 DOWN;
108  static const Vector3 UP;
109 
110  virtual void changedActivity(void) override;
111  virtual void changedVisibility(void) override;
112 
113  inline std::string getID(void)
114  { return this->id_; }
115 
116  inline void setID(std::string id)
117  { this->id_ = id; }
118 
119  virtual void setPosition(const Vector3& position) = 0;
120  inline void setPosition(float x, float y, float z)
121  { this->setPosition(Vector3(x, y, z)); }
122  const Vector3& getPosition() const;
123  const Vector3& getWorldPosition() const;
124 
125  void translate(const Vector3& distance, TransformSpace relativeTo = TransformSpace::Parent);
126  inline void translate(float x, float y, float z, TransformSpace relativeTo = TransformSpace::Parent)
127  { this->translate(Vector3(x, y, z), relativeTo); }
128 
129  virtual inline const Vector3& getVelocity() const
130  { return Vector3::ZERO; }
131 
132  virtual void setOrientation(const Quaternion& orientation) = 0;
133  inline void setOrientation(float w, float x, float y, float z)
134  { this->setOrientation(Quaternion(w, x, y, z)); }
135  inline void setOrientation(const Vector3& axis, const Radian& angle)
136  { this->setOrientation(Quaternion(angle, axis)); }
137  inline void setOrientation(const Vector3& axis, const Degree& angle)
138  { this->setOrientation(Quaternion(angle, axis)); }
139  const Quaternion& getOrientation() const;
140  const Quaternion& getWorldOrientation() const;
141 
142  void rotate(const Quaternion& rotation, TransformSpace relativeTo = TransformSpace::Local);
143  inline void rotate(const Vector3& axis, const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
144  { this->rotate(Quaternion(angle, axis), relativeTo); }
145 
146  inline void yaw(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
147  { this->rotate(Quaternion(angle, Vector3::UNIT_Y), relativeTo); }
148  inline void pitch(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
149  { this->rotate(Quaternion(angle, Vector3::UNIT_X), relativeTo); }
150  inline void roll(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
151  { this->rotate(Quaternion(angle, Vector3::UNIT_Z), relativeTo); }
152 
153  void lookAt(const Vector3& target, TransformSpace relativeTo = TransformSpace::Parent, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
154  void setDirection(const Vector3& direction, TransformSpace relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
155  inline void setDirection(float x, float y, float z, TransformSpace relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z)
156  { this->setDirection(Vector3(x, y, z), relativeTo, localDirectionVector); }
157 
158  virtual void setScale3D(const Vector3& scale);
159  inline void setScale3D(float x, float y, float z)
160  { this->setScale3D(Vector3(x, y, z)); }
161  const Vector3& getScale3D() const;
162  const Vector3& getWorldScale3D() const;
163 
164  inline void setScale(float scale)
165  { this->setScale3D(scale, scale, scale); }
166  inline float getScale() const
167  { Vector3 scale = this->getScale3D(); return (scale.x == scale.y && scale.x == scale.z) ? scale.x : 1; }
168  float getWorldScale() const;
169 
170  inline void scale3D(const Vector3& scale)
171  { this->setScale3D(this->getScale3D() * scale); }
172  inline void scale3D(float x, float y, float z)
173  { this->scale3D(Vector3(x, y, z)); }
174  inline void scale(float scale)
175  { this->scale3D(scale, scale, scale); }
176 
177  virtual void changedScale() {}
178 
179  void attach(WorldEntity* object);
180  void detach(WorldEntity* object);
181  WorldEntity* getAttachedObject(unsigned int index);
182  inline const std::set<WorldEntity*>& getAttachedObjects() const
183  { return this->children_; }
184 
185  void attachOgreObject(Ogre::MovableObject* object);
186  void attachOgreObject(Ogre::BillboardSet* object);
187  void attachOgreObject(Ogre::Camera* object);
188  void attachOgreObject(Ogre::Entity* object);
189  void attachOgreObject(Ogre::ParticleSystem* object);
190 
191  void detachOgreObject(Ogre::MovableObject* object);
192  void detachOgreObject(Ogre::BillboardSet* object);
193  void detachOgreObject(Ogre::Camera* object);
194  void detachOgreObject(Ogre::Entity* object);
195  void detachOgreObject(Ogre::ParticleSystem* object);
196 
197  Ogre::MovableObject* detachOgreObject(const Ogre::String& name);
198 
199  inline void attachToParent(WorldEntity* parent)
200  { parent->attach(this); }
201  inline void detachFromParent()
202  { if (this->parent_) { this->parent_->detach(this); } }
203  inline WorldEntity* getParent() const
204  { return this->parent_; }
205 
206  void attachNode(Ogre::SceneNode* node);
207  void detachNode(Ogre::SceneNode* node);
208  void attachToNode(Ogre::SceneNode* node);
209  void detachFromNode(Ogre::SceneNode* node);
210 
211  inline void setDeleteWithParent(bool value)
212  { this->bDeleteWithParent_ = value; }
213  inline bool getDeleteWithParent() const
214  { return this->bDeleteWithParent_; }
215 
216  void notifyChildPropsChanged();
217 
218  protected:
219  virtual void parentChanged() {}
220 
221  Ogre::SceneNode* node_;
222 
223  private:
224  void registerVariables();
225 
226  inline void lookAt_xmlport(const Vector3& target)
227  { this->lookAt(target); }
228  inline void setDirection_xmlport(const Vector3& direction)
229  { this->setDirection(direction); }
230  inline void yaw_xmlport(const Degree& angle)
231  { this->yaw(angle); }
232  inline void pitch_xmlport(const Degree& angle)
233  { this->pitch(angle); }
234  inline void roll_xmlport(const Degree& angle)
235  { this->roll(angle); }
236 
237  // network callbacks
238  void networkcallback_parentChanged();
239  inline void scaleChanged()
240  { this->setScale3D(this->getScale3D()); }
241 
243  unsigned int parentID_;
244  std::set<WorldEntity*> children_;
246 
249 
250 
252  // Physics //
254 
255  public:
265  enum class CollisionType
266  {
267  Dynamic,
268  Kinematic,
269  Static,
270  None
271  };
272 
274  bool hasPhysics() const { return getCollisionType() != CollisionType::None ; }
276  bool isStatic() const { return getCollisionType() == CollisionType::Static ; }
278  bool isKinematic() const { return getCollisionType() == CollisionType::Kinematic; }
280  bool isDynamic() const { return getCollisionType() == CollisionType::Dynamic ; }
282  bool isPhysicsActive() const { return this->bPhysicsActive_; }
283  bool addedToPhysicalWorld() const;
284 
285  void activatePhysics();
286  void deactivatePhysics();
287 
290  { return this->collisionType_; }
291  void setCollisionType(CollisionType type);
292 
293  void setCollisionTypeStr(const std::string& type);
294  std::string getCollisionTypeStr() const;
295 
297  inline void setMass(float mass)
298  { this->mass_ = mass; recalculateMassProps(); }
300  inline float getMass() const
301  { return this->mass_; }
302 
304  inline float getTotalMass() const
305  { return this->mass_ + this->childrenMass_; }
306 
314  inline const btVector3& getLocalInertia() const
315  { return this->localInertia_; }
316 
326  inline void setRestitution(float restitution)
327  { this->restitution_ = restitution; internalSetPhysicsProps(); }
329  inline float getRestitution() const
330  { return this->restitution_; }
331 
339  inline void setAngularFactor(float angularFactor)
340  { this->angularFactor_ = angularFactor; internalSetPhysicsProps(); }
342  inline float getAngularFactor() const
343  { return this->angularFactor_; }
344 
346  inline void setLinearDamping(float linearDamping)
347  { this->linearDamping_ = linearDamping; internalSetPhysicsProps(); }
349  inline float getLinearDamping() const
350  { return this->linearDamping_; }
351 
353  inline void setAngularDamping(float angularDamping)
354  { this->angularDamping_ = angularDamping; internalSetPhysicsProps(); }
356  inline float getAngularDamping() const
357  { return this->angularDamping_; }
358 
360  inline void setFriction(float friction)
361  { this->friction_ = friction; internalSetPhysicsProps(); }
363  inline float getFriction() const
364  { return this->friction_; }
365 
376  inline void setCcdMotionThreshold(float ccdMotionThreshold)
377  { this->ccdMotionThreshold_ = ccdMotionThreshold; internalSetPhysicsProps(); }
379  inline float getCcdMotionThreshold() const
380  { return this->ccdMotionThreshold_; }
381 
390  inline void setCcdSweptSphereRadius(float ccdSweptSphereRadius)
391  { this->ccdSweptSphereRadius_ = ccdSweptSphereRadius; internalSetPhysicsProps(); }
393  inline float getCcdSweptSphereRadius() const
394  { return this->ccdSweptSphereRadius_; }
395 
396  void attachCollisionShape(CollisionShape* shape);
397  void detachCollisionShape(CollisionShape* shape);
398  CollisionShape* getAttachedCollisionShape(unsigned int index);
399 
400  void notifyCollisionShapeChanged();
401  void notifyChildMassChanged();
402 
417  virtual inline bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
418  { return false; } /* With false, Bullet assumes no modification to the collision objects. */
419 
422  { this->bCollisionCallbackActive_ = true; this->collisionCallbackActivityChanged(); }
425  { this->bCollisionCallbackActive_ = false; this->collisionCallbackActivityChanged(); }
427  inline bool isCollisionCallbackActive() const
428  { return this->bCollisionCallbackActive_; }
429 
431  inline void setCollisionResponse(bool value)
432  { this->bCollisionResponseActive_ = value; this->collisionResponseActivityChanged(); }
434  inline bool hasCollisionResponse()
435  { return this->bCollisionResponseActive_; }
436 
437  protected:
447  virtual bool isCollisionTypeLegal(CollisionType type) const = 0;
448 
449  btRigidBody* physicalBody_;
451 
452  private:
453  void recalculateMassProps();
454  void internalSetPhysicsProps();
455 
456  bool notifyBeingAttached(WorldEntity* newParent);
457  void notifyDetached();
458 
459  // network callbacks
460  void collisionTypeChanged();
461  void physicsActivityChanged();
462  void collisionCallbackActivityChanged();
463  void collisionResponseActivityChanged();
465  inline void massChanged()
466  { this->setMass(this->mass_); }
468  inline void restitutionChanged()
469  { this->setRestitution(this->restitution_); }
471  inline void angularFactorChanged()
472  { this->setAngularFactor(this->angularFactor_); }
474  inline void linearDampingChanged()
475  { this->setLinearDamping(this->linearDamping_); }
477  inline void angularDampingChanged()
478  { this->setAngularDamping(this->angularDamping_); }
480  inline void frictionChanged()
481  { this->setFriction(this->friction_); }
484  { this->setCcdMotionThreshold(this->ccdMotionThreshold_); }
487  { this->setCcdSweptSphereRadius(this->ccdSweptSphereRadius_); }
488 
493  bool bPhysicsActiveBeforeAttaching_;
496  btScalar mass_;
497  btVector3 localInertia_;
498  btScalar restitution_;
499  btScalar angularFactor_;
500  btScalar linearDamping_;
501  btScalar angularDamping_;
502  btScalar friction_;
503  btScalar childrenMass_;
508  };
509 
510  // Inline heavily used functions for release builds. In debug, we better avoid including OgreSceneNode here.
511 #ifdef ORXONOX_RELEASE
512  inline const Vector3& WorldEntity::getPosition() const
513  { return this->node_->getPosition(); }
514  inline const Quaternion& WorldEntity::getOrientation() const
515  { return this->node_->getOrientation(); }
516  inline const Vector3& WorldEntity::getScale3D() const
517  { return this->node_->getScale(); }
518 #endif
519 
520  SUPER_FUNCTION(5, WorldEntity, changedScale, false);
521 }
522 
523 #endif /* _WorldEntity_H__ */
The BaseObject is the parent of all classes representing an instance in the game. ...
Definition: BaseObject.h:63
static const Vector3 LEFT
Definition: WorldEntity.h:105
void translate(float x, float y, float z, TransformSpace relativeTo=TransformSpace::Parent)
Definition: WorldEntity.h:126
btRigidBody * physicalBody_
Bullet rigid body. Everything physical is applied to this instance.
Definition: WorldEntity.h:449
bool bVisibleMem_
Definition: WorldEntity.h:248
WorldEntity * parent_
Definition: WorldEntity.h:242
virtual bool collidesAgainst(WorldEntity *otherObject, const btCollisionShape *ownCollisionShape, btManifoldPoint &contactPoint)
Virtual function that gets called when this object collides with another.
Definition: WorldEntity.h:417
const btVector3 & getLocalInertia() const
Returns the diagonal elements of the inertia tensor when calculated in local coordinates.
Definition: WorldEntity.h:314
static const Vector3 RIGHT
Definition: WorldEntity.h:106
void setOrientation(const Vector3 &axis, const Degree &angle)
Definition: WorldEntity.h:137
btScalar ccdMotionThreshold_
Definition: WorldEntity.h:504
This class is the base class of all the Objects in the universe that need to be synchronised over the...
Definition: Synchronisable.h:142
btScalar restitution_
Definition: WorldEntity.h:498
btScalar ccdSweptSphereRadius_
Definition: WorldEntity.h:505
void setLinearDamping(float linearDamping)
Applies a mass independent damping. Velocities will simply diminish exponentially.
Definition: WorldEntity.h:346
btScalar friction_
Definition: WorldEntity.h:502
void attachToParent(WorldEntity *parent)
Definition: WorldEntity.h:199
std::string getID(void)
Definition: WorldEntity.h:113
void detachFromParent()
Definition: WorldEntity.h:201
btScalar angularFactor_
Definition: WorldEntity.h:499
btScalar angularDamping_
Definition: WorldEntity.h:501
std::set< WorldEntity * > children_
Definition: WorldEntity.h:244
::std::string string
Definition: gtest-port.h:756
CollisionType collisionTypeSynchronised_
Network synchronised variable for collisionType_.
Definition: WorldEntity.h:490
const std::set< WorldEntity * > & getAttachedObjects() const
Definition: WorldEntity.h:182
static const Vector3 BACK
Definition: WorldEntity.h:104
bool bCollisionResponseActive_
Tells whether the object should respond to collisions.
Definition: WorldEntity.h:507
virtual const Vector3 & getVelocity() const
Definition: WorldEntity.h:129
void scale3D(const Vector3 &scale)
Definition: WorldEntity.h:170
bool bActiveMem_
Definition: WorldEntity.h:247
void setFriction(float friction)
Applies friction to the object. Friction occurs when two objects collide.
Definition: WorldEntity.h:360
void pitch(const Degree &angle, TransformSpace relativeTo=TransformSpace::Local)
Definition: WorldEntity.h:148
void setScale3D(float x, float y, float z)
Definition: WorldEntity.h:159
void roll(const Degree &angle, TransformSpace relativeTo=TransformSpace::Local)
Definition: WorldEntity.h:150
void setCcdMotionThreshold(float ccdMotionThreshold)
Sets the motion threshold for continuous collision detection (CCD).
Definition: WorldEntity.h:376
void setCollisionResponse(bool value)
Enables or disables collision response (default is of course on)
Definition: WorldEntity.h:431
void massChanged()
Network callback workaround to call a function when the value changes.
Definition: WorldEntity.h:465
std::string id_
Used by the ScriptableController to identify objects.
Definition: WorldEntity.h:450
void scaleChanged()
Definition: WorldEntity.h:239
const Vector3 & getPosition() const
Definition: WorldEntity.cc:622
virtual void parentChanged()
Definition: WorldEntity.h:219
static const Vector3 UP
Definition: WorldEntity.h:108
float getAngularDamping() const
Returns the angular damping.
Definition: WorldEntity.h:356
void angularDampingChanged()
Network callback workaround to call a function when the value changes.
Definition: WorldEntity.h:477
void setDirection_xmlport(const Vector3 &direction)
Definition: WorldEntity.h:228
SUPER_FUNCTION(0, BaseObject, XMLPort, false)
The WorldEntity represents everything that can be put in a Scene at a certain location.
Definition: WorldEntity.h:72
float getCcdMotionThreshold() const
Returns the currently used motion threshold for CCD (0 means CCD is deactivated). ...
Definition: WorldEntity.h:379
float getScale() const
Definition: WorldEntity.h:166
float getRestitution() const
Returns the restitution parameter.
Definition: WorldEntity.h:329
bool bCollisionCallbackActive_
Definition: WorldEntity.h:506
bool bDeleteWithParent_
Definition: WorldEntity.h:245
void linearDampingChanged()
Network callback workaround to call a function when the value changes.
Definition: WorldEntity.h:474
void pitch_xmlport(const Degree &angle)
Definition: WorldEntity.h:232
Definition: WorldEntityCollisionShape.h:37
xmlelement
Definition: Super.h:519
btScalar mass_
Definition: WorldEntity.h:496
WorldEntityCollisionShape * collisionShape_
Attached collision shapes go here.
Definition: WorldEntity.h:495
void setOrientation(float w, float x, float y, float z)
Definition: WorldEntity.h:133
TransformSpace
Enumeration denoting the spaces which a transform can be relative to.
Definition: WorldEntity.h:84
void setID(std::string id)
Definition: WorldEntity.h:116
void angularFactorChanged()
Network callback workaround to call a function when the value changes.
Definition: WorldEntity.h:471
Declaration and implementation of several math-functions, typedefs of some Ogre::Math classes to the ...
btVector3 localInertia_
Definition: WorldEntity.h:497
bool isDynamic() const
Definition: WorldEntity.h:280
unsigned int parentID_
Definition: WorldEntity.h:243
void restitutionChanged()
Network callback workaround to call a function when the value changes.
Definition: WorldEntity.h:468
float getAngularFactor() const
Returns the angular factor.
Definition: WorldEntity.h:342
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
float getCcdSweptSphereRadius() const
Returns the currently used radius of the sphere for CCD.
Definition: WorldEntity.h:393
void scale3D(float x, float y, float z)
Definition: WorldEntity.h:172
void setScale(float scale)
Definition: WorldEntity.h:164
Mode
Definition: CorePrereqs.h:102
void roll_xmlport(const Degree &angle)
Definition: WorldEntity.h:234
void setDeleteWithParent(bool value)
Definition: WorldEntity.h:211
void yaw_xmlport(const Degree &angle)
Definition: WorldEntity.h:230
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 ...
btScalar childrenMass_
Sum of all the children&#39;s masses.
Definition: WorldEntity.h:503
Ogre::SceneNode * node_
Definition: WorldEntity.h:221
Declaration of BaseObject, the base class of all objects in Orxonox.
void scale(float scale)
Definition: WorldEntity.h:174
WorldEntity * getParent() const
Definition: WorldEntity.h:203
bool isKinematic() const
Definition: WorldEntity.h:278
void setMass(float mass)
Sets the mass of this object. Note that the total mass may be influenced by attached objects! ...
Definition: WorldEntity.h:297
Definition: Context.h:45
static const Vector3 FRONT
Definition: WorldEntity.h:103
const Vector3 & getScale3D() const
Definition: WorldEntity.cc:632
#define _OrxonoxExport
Definition: OrxonoxPrereqs.h:60
bool bPhysicsActiveSynchronised_
Network synchronised variable for bPhysicsActive_.
Definition: WorldEntity.h:492
float getTotalMass() const
Returns the total mass of this object with all its attached children.
Definition: WorldEntity.h:304
void lookAt_xmlport(const Vector3 &target)
Definition: WorldEntity.h:226
btScalar linearDamping_
Definition: WorldEntity.h:500
Wrapper for bullet collision shape class btCollisionShape.
Definition: CollisionShape.h:57
void setOrientation(const Vector3 &axis, const Radian &angle)
Definition: WorldEntity.h:135
void setRestitution(float restitution)
Sets how much reaction is applied in a collision.
Definition: WorldEntity.h:326
void setCcdSweptSphereRadius(float ccdSweptSphereRadius)
Sets the radius of the sphere which is used for continuous collision detection (CCD).
Definition: WorldEntity.h:390
bool getDeleteWithParent() const
Definition: WorldEntity.h:213
Definition: Scene.h:54
void setAngularDamping(float angularDamping)
Applies a tensor independent rotation damping. Angular velocities will simply diminish exponentially...
Definition: WorldEntity.h:353
void attach(WorldEntity *object)
Attaches a child WorldEntity to this object.
Definition: WorldEntity.cc:395
void rotate(const Vector3 &axis, const Degree &angle, TransformSpace relativeTo=TransformSpace::Local)
Definition: WorldEntity.h:143
void setAngularFactor(float angularFactor)
Sets an artificial parameter that tells how much torque is applied when you apply a non-central force...
Definition: WorldEntity.h:339
void ccdSweptSphereRadiusChanged()
Network callback workaround to call a function when the value changes.
Definition: WorldEntity.h:486
bool hasPhysics() const
Tells whether the object has any connection to the Bullet physics engine. If hasPhysics() is false...
Definition: WorldEntity.h:274
float getMass() const
Returns the mass of this object without its children.
Definition: WorldEntity.h:300
void ccdMotionThresholdChanged()
Network callback workaround to call a function when the value changes.
Definition: WorldEntity.h:483
bool hasCollisionResponse()
Tells whether there could be a collision response.
Definition: WorldEntity.h:434
CollisionType collisionType_
Definition: WorldEntity.h:489
void setDirection(float x, float y, float z, TransformSpace relativeTo=TransformSpace::Local, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
Definition: WorldEntity.h:155
virtual void changedScale()
Definition: WorldEntity.h:177
const Ogre::SceneNode * getNode() const
Definition: WorldEntity.h:100
bool isPhysicsActive() const
Tells whether physics has been activated (you can temporarily deactivate it)
Definition: WorldEntity.h:282
float getLinearDamping() const
Returns the linear damping.
Definition: WorldEntity.h:349
void disableCollisionCallback()
Disables the collidesAgainst(.) function.
Definition: WorldEntity.h:424
void enableCollisionCallback()
Enables the collidesAgainst(.) function. The object doesn&#39;t respond to collision otherwise! ...
Definition: WorldEntity.h:421
void yaw(const Degree &angle, TransformSpace relativeTo=TransformSpace::Local)
Definition: WorldEntity.h:146
const Quaternion & getOrientation() const
Definition: WorldEntity.cc:627
static const Vector3 DOWN
Definition: WorldEntity.h:107
CollisionType getCollisionType() const
Returns the CollisionType.
Definition: WorldEntity.h:289
void frictionChanged()
Network callback workaround to call a function when the value changes.
Definition: WorldEntity.h:480
bool isStatic() const
Definition: WorldEntity.h:276
float getFriction() const
Returns the amount of friction applied to the object.
Definition: WorldEntity.h:363
void setPosition(float x, float y, float z)
Definition: WorldEntity.h:120
bool bPhysicsActive_
Definition: WorldEntity.h:491
bool isCollisionCallbackActive() const
Tells whether there could be a collision callback via collidesAgainst(.)
Definition: WorldEntity.h:427