- Timestamp:
- Dec 13, 2008, 8:55:40 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h
r2423 r2426 33 33 #include "OrxonoxPrereqs.h" 34 34 35 # define OGRE_FORCE_ANGLE_TYPES35 #ifdef _NDEBUG 36 36 #include <OgreSceneNode.h> 37 #else 38 #include <OgrePrerequisites.h> 39 #endif 37 40 #include "LinearMath/btMotionState.h" 38 41 … … 65 68 inline void setPosition(float x, float y, float z) 66 69 { this->setPosition(Vector3(x, y, z)); } 67 inline const Vector3& getPosition() const 68 { return this->node_->getPosition(); } 69 inline const Vector3& getWorldPosition() const 70 { return this->node_->getWorldPosition(); } 71 72 virtual void translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) = 0; 73 inline void translate(float x, float y, float z, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) 70 const Vector3& getPosition() const; 71 const Vector3& getWorldPosition() const; 72 73 void translate(const Vector3& distance, TransformSpace::Space relativeTo = TransformSpace::Parent); 74 inline void translate(float x, float y, float z, TransformSpace::Space relativeTo = TransformSpace::Parent) 74 75 { this->translate(Vector3(x, y, z), relativeTo); } 75 76 … … 81 82 inline void setOrientation(const Vector3& axis, const Degree& angle) 82 83 { this->setOrientation(Quaternion(angle, axis)); } 83 inline const Quaternion& getOrientation() const 84 { return this->node_->getOrientation(); } 85 inline const Quaternion& getWorldOrientation() const 86 { return this->node_->getWorldOrientation(); } 87 88 virtual void rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) = 0; 89 inline void rotate(const Vector3& axis, const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) 84 const Quaternion& getOrientation() const; 85 const Quaternion& getWorldOrientation() const; 86 87 void rotate(const Quaternion& rotation, TransformSpace::Space relativeTo = TransformSpace::Local); 88 inline void rotate(const Vector3& axis, const Degree& angle, TransformSpace::Space relativeTo = TransformSpace::Local) 90 89 { this->rotate(Quaternion(angle, axis), relativeTo); } 91 inline void rotate(const Vector3& axis, const Radian& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) 92 { this->rotate(Quaternion(angle, axis), relativeTo); } 93 94 virtual void yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) = 0; 95 inline void yaw(const Radian& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) 96 { this->yaw(Degree(angle), relativeTo); } 97 virtual void pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) = 0; 98 inline void pitch(const Radian& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) 99 { this->pitch(Degree(angle), relativeTo); } 100 virtual void roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) = 0; 101 inline void roll(const Radian& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL) 102 { this->roll(Degree(angle), relativeTo); } 103 104 virtual void lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z) = 0; 105 virtual void setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z) = 0; 106 inline void setDirection(float x, float y, float z, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z) 90 91 inline void yaw(const Degree& angle, TransformSpace::Space relativeTo = TransformSpace::Local) 92 { this->rotate(Quaternion(angle, Vector3::UNIT_Y), relativeTo); } 93 inline void pitch(const Degree& angle, TransformSpace::Space relativeTo = TransformSpace::Local) 94 { this->rotate(Quaternion(angle, Vector3::UNIT_X), relativeTo); } 95 inline void roll(const Degree& angle, TransformSpace::Space relativeTo = TransformSpace::Local) 96 { this->rotate(Quaternion(angle, Vector3::UNIT_Z), relativeTo); } 97 98 void lookAt(const Vector3& target, TransformSpace::Space relativeTo = TransformSpace::Parent, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z); 99 void setDirection(const Vector3& direction, TransformSpace::Space relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z); 100 inline void setDirection(float x, float y, float z, TransformSpace::Space relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z) 107 101 { this->setDirection(Vector3(x, y, z), relativeTo, localDirectionVector); } 108 102 … … 110 104 inline void setScale3D(float x, float y, float z) 111 105 { this->setScale3D(Vector3(x, y, z)); } 112 inline const Vector3& getScale3D(void) const 113 { return this->node_->getScale(); } 106 const Vector3& getScale3D(void) const; 114 107 115 108 void setScale(float scale) … … 118 111 { Vector3 scale = this->getScale3D(); return (scale.x == scale.y && scale.x == scale.z) ? scale.x : 1; } 119 112 120 virtual void scale3D(const Vector3& scale); 113 inline void scale3D(const Vector3& scale) 114 { this->setScale3D(this->getScale3D() * scale); } 121 115 inline void scale3D(float x, float y, float z) 122 116 { this->scale3D(Vector3(x, y, z)); } … … 130 124 { return this->children_; } 131 125 132 inline void attachOgreObject(Ogre::MovableObject* object) 133 { this->node_->attachObject(object); } 134 inline void detachOgreObject(Ogre::MovableObject* object) 135 { this->node_->detachObject(object); } 136 inline Ogre::MovableObject* detachOgreObject(const Ogre::String& name) 137 { return this->node_->detachObject(name); } 126 void attachOgreObject(Ogre::MovableObject* object); 127 void detachOgreObject(Ogre::MovableObject* object); 128 Ogre::MovableObject* detachOgreObject(const Ogre::String& name); 138 129 139 130 inline void attachToParent(WorldEntity* parent) … … 241 232 btScalar childrenMass_; 242 233 }; 234 235 // Inline heavily used functions for release builds. In debug, we better avoid including OgreSceneNode here. 236 #ifdef _NDEBUG 237 inline const Vector3& WorldEntity::getPosition() const 238 { return this->node_->getPosition(); } 239 inline const Quaternion& WorldEntity::getOrientation() const 240 { return this->node_->getrOrientation(); } 241 inline const Vector3& WorldEntity::getScale3D(void) const 242 { return this->node_->getScale(); } 243 #endif 243 244 } 244 245
Note: See TracChangeset
for help on using the changeset viewer.