- Timestamp:
- Dec 28, 2008, 7:15:55 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation/src/orxonox/objects/worldentities/WorldEntity.h
r2527 r2535 40 40 #include "LinearMath/btMotionState.h" 41 41 42 #include "util/Math.h" 43 #include "core/BaseObject.h" 42 44 #include "network/synchronisable/Synchronisable.h" 43 #include "core/BaseObject.h" 44 #include "util/Math.h" 45 #include "objects/collisionshapes/CompoundCollisionShape.h" 45 46 46 47 namespace orxonox … … 48 49 class _OrxonoxExport WorldEntity : public BaseObject, public Synchronisable, public btMotionState 49 50 { 51 friend class Scene; 52 50 53 public: 51 54 WorldEntity(BaseObject* creator); … … 71 74 const Vector3& getWorldPosition() const; 72 75 73 void translate(const Vector3& distance, TransformSpace:: SpacerelativeTo = TransformSpace::Parent);74 inline void translate(float x, float y, float z, TransformSpace:: SpacerelativeTo = TransformSpace::Parent)76 void translate(const Vector3& distance, TransformSpace::Enum relativeTo = TransformSpace::Parent); 77 inline void translate(float x, float y, float z, TransformSpace::Enum relativeTo = TransformSpace::Parent) 75 78 { this->translate(Vector3(x, y, z), relativeTo); } 76 79 … … 88 91 const Quaternion& getWorldOrientation() const; 89 92 90 void rotate(const Quaternion& rotation, TransformSpace:: SpacerelativeTo = TransformSpace::Local);91 inline void rotate(const Vector3& axis, const Degree& angle, TransformSpace:: SpacerelativeTo = TransformSpace::Local)93 void rotate(const Quaternion& rotation, TransformSpace::Enum relativeTo = TransformSpace::Local); 94 inline void rotate(const Vector3& axis, const Degree& angle, TransformSpace::Enum relativeTo = TransformSpace::Local) 92 95 { this->rotate(Quaternion(angle, axis), relativeTo); } 93 96 94 inline void yaw(const Degree& angle, TransformSpace:: SpacerelativeTo = TransformSpace::Local)97 inline void yaw(const Degree& angle, TransformSpace::Enum relativeTo = TransformSpace::Local) 95 98 { this->rotate(Quaternion(angle, Vector3::UNIT_Y), relativeTo); } 96 inline void pitch(const Degree& angle, TransformSpace:: SpacerelativeTo = TransformSpace::Local)99 inline void pitch(const Degree& angle, TransformSpace::Enum relativeTo = TransformSpace::Local) 97 100 { this->rotate(Quaternion(angle, Vector3::UNIT_X), relativeTo); } 98 inline void roll(const Degree& angle, TransformSpace:: SpacerelativeTo = TransformSpace::Local)101 inline void roll(const Degree& angle, TransformSpace::Enum relativeTo = TransformSpace::Local) 99 102 { this->rotate(Quaternion(angle, Vector3::UNIT_Z), relativeTo); } 100 103 101 void lookAt(const Vector3& target, TransformSpace:: SpacerelativeTo = TransformSpace::Parent, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);102 void setDirection(const Vector3& direction, TransformSpace:: SpacerelativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);103 inline void setDirection(float x, float y, float z, TransformSpace:: SpacerelativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z)104 void lookAt(const Vector3& target, TransformSpace::Enum relativeTo = TransformSpace::Parent, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z); 105 void setDirection(const Vector3& direction, TransformSpace::Enum relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z); 106 inline void setDirection(float x, float y, float z, TransformSpace::Enum relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z) 104 107 { this->setDirection(Vector3(x, y, z), relativeTo, localDirectionVector); } 105 108 … … 127 130 void attach(WorldEntity* object); 128 131 void detach(WorldEntity* object); 129 WorldEntity* getAttachedObject(unsigned int index) const;132 WorldEntity* getAttachedObject(unsigned int index); 130 133 inline const std::set<WorldEntity*>& getAttachedObjects() const 131 134 { return this->children_; } … … 216 219 217 220 inline void setRestitution(float restitution) 218 { this->restitution_ = restitution; resetPhysicsProps(); }221 { this->restitution_ = restitution; internalSetPhysicsProps(); } 219 222 inline float getRestitution() const 220 223 { return this->restitution_; } 221 224 222 225 inline void setAngularFactor(float angularFactor) 223 { this->angularFactor_ = angularFactor; resetPhysicsProps(); }226 { this->angularFactor_ = angularFactor; internalSetPhysicsProps(); } 224 227 inline float getAngularFactor() const 225 228 { return this->angularFactor_; } 226 229 227 230 inline void setLinearDamping(float linearDamping) 228 { this->linearDamping_ = linearDamping; resetPhysicsProps(); }231 { this->linearDamping_ = linearDamping; internalSetPhysicsProps(); } 229 232 inline float getLinearDamping() const 230 233 { return this->linearDamping_; } 231 234 232 235 inline void setAngularDamping(float angularDamping) 233 { this->angularDamping_ = angularDamping; resetPhysicsProps(); }236 { this->angularDamping_ = angularDamping; internalSetPhysicsProps(); } 234 237 inline float getAngularDamping() const 235 238 { return this->angularDamping_; } 236 239 237 240 inline void setFriction(float friction) 238 { this->friction_ = friction; resetPhysicsProps(); }241 { this->friction_ = friction; internalSetPhysicsProps(); } 239 242 inline float getFriction() const 240 243 { return this->friction_; } … … 242 245 void attachCollisionShape(CollisionShape* shape); 243 246 void detachCollisionShape(CollisionShape* shape); 244 CollisionShape* getAttachedCollisionShape(unsigned int index) const; 245 246 inline CompoundCollisionShape* getCollisionShape() const 247 { return this->collisionShape_; } 248 inline btRigidBody* getPhysicalBody() const 249 { return this->physicalBody_; } 247 CollisionShape* getAttachedCollisionShape(unsigned int index); 250 248 251 249 void notifyCollisionShapeChanged(); … … 265 263 virtual bool isCollisionTypeLegal(CollisionType type) const = 0; 266 264 267 btRigidBody* 265 btRigidBody* physicalBody_; 268 266 269 267 private: 270 268 void updateCollisionType(); 271 269 void recalculateMassProps(); 272 void resetPhysicsProps();270 void internalSetPhysicsProps(); 273 271 274 272 bool notifyBeingAttached(WorldEntity* newParent); … … 297 295 bool bPhysicsActiveSynchronised_; 298 296 bool bPhysicsActiveBeforeAttaching_; 299 CompoundCollisionShape *collisionShape_;297 CompoundCollisionShape collisionShape_; 300 298 btScalar mass_; 301 299 btVector3 localInertia_;
Note: See TracChangeset
for help on using the changeset viewer.