- Timestamp:
- Jun 14, 2009, 11:24:42 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/pch/src/orxonox/objects/worldentities/WorldEntity.cc
r3159 r3163 34 34 #include <OgreSceneManager.h> 35 35 #include "BulletDynamics/Dynamics/btRigidBody.h" 36 #include <boost/static_assert.hpp> 36 37 37 38 #include "util/OrxAssert.h" … … 51 52 const Vector3 WorldEntity::DOWN = Vector3::NEGATIVE_UNIT_Y; 52 53 const Vector3 WorldEntity::UP = Vector3::UNIT_Y; 54 55 // Be sure we don't do bad conversions 56 BOOST_STATIC_ASSERT((int)Ogre::Node::TS_LOCAL == (int)WorldEntity::Local); 57 BOOST_STATIC_ASSERT((int)Ogre::Node::TS_PARENT == (int)WorldEntity::Parent); 58 BOOST_STATIC_ASSERT((int)Ogre::Node::TS_WORLD == (int)WorldEntity::World); 53 59 54 60 /** … … 574 580 Translates this WorldEntity by a vector. 575 581 @param relativeTo 576 @see TransformSpace::Enum577 */ 578 void WorldEntity::translate(const Vector3& distance, TransformSpace ::EnumrelativeTo)582 @see WorldEntity::TransformSpace 583 */ 584 void WorldEntity::translate(const Vector3& distance, TransformSpace relativeTo) 579 585 { 580 586 switch (relativeTo) 581 587 { 582 case TransformSpace::Local:588 case WorldEntity::Local: 583 589 // position is relative to parent so transform downwards 584 590 this->setPosition(this->getPosition() + this->getOrientation() * distance); 585 591 break; 586 case TransformSpace::Parent:592 case WorldEntity::Parent: 587 593 this->setPosition(this->getPosition() + distance); 588 594 break; 589 case TransformSpace::World:595 case WorldEntity::World: 590 596 // position is relative to parent so transform upwards 591 597 if (this->node_->getParent()) … … 602 608 Rotates this WorldEntity by a quaternion. 603 609 @param relativeTo 604 @see TransformSpace::Enum605 */ 606 void WorldEntity::rotate(const Quaternion& rotation, TransformSpace ::EnumrelativeTo)610 @see WorldEntity::TransformSpace 611 */ 612 void WorldEntity::rotate(const Quaternion& rotation, TransformSpace relativeTo) 607 613 { 608 614 switch(relativeTo) 609 615 { 610 case TransformSpace::Local:616 case WorldEntity::Local: 611 617 this->setOrientation(this->getOrientation() * rotation); 612 618 break; 613 case TransformSpace::Parent:619 case WorldEntity::Parent: 614 620 // Rotations are normally relative to local axes, transform up 615 621 this->setOrientation(rotation * this->getOrientation()); 616 622 break; 617 case TransformSpace::World:623 case WorldEntity::World: 618 624 // Rotations are normally relative to local axes, transform up 619 625 this->setOrientation(this->getOrientation() * this->getWorldOrientation().Inverse() … … 627 633 Makes this WorldEntity look a specific target location. 628 634 @param relativeTo 629 @see TransformSpace::Enum635 @see WorldEntity::TransformSpace 630 636 @param localDirectionVector 631 637 The vector which normally describes the natural direction of the object, usually -Z. 632 638 */ 633 void WorldEntity::lookAt(const Vector3& target, TransformSpace ::EnumrelativeTo, const Vector3& localDirectionVector)639 void WorldEntity::lookAt(const Vector3& target, TransformSpace relativeTo, const Vector3& localDirectionVector) 634 640 { 635 641 Vector3 origin(0, 0, 0); 636 642 switch (relativeTo) 637 643 { 638 case TransformSpace::Local:644 case WorldEntity::Local: 639 645 origin = Vector3::ZERO; 640 646 break; 641 case TransformSpace::Parent:647 case WorldEntity::Parent: 642 648 origin = this->getPosition(); 643 649 break; 644 case TransformSpace::World:650 case WorldEntity::World: 645 651 origin = this->getWorldPosition(); 646 652 break; … … 653 659 Makes this WorldEntity look in specific direction. 654 660 @param relativeTo 655 @see TransformSpace::Enum661 @see WorldEntity::TransformSpace 656 662 @param localDirectionVector 657 663 The vector which normally describes the natural direction of the object, usually -Z. 658 664 */ 659 void WorldEntity::setDirection(const Vector3& direction, TransformSpace ::EnumrelativeTo, const Vector3& localDirectionVector)665 void WorldEntity::setDirection(const Vector3& direction, TransformSpace relativeTo, const Vector3& localDirectionVector) 660 666 { 661 667 Quaternion savedOrientation(this->getOrientation()); 662 Ogre::Node::TransformSpace ogreRelativeTo = Ogre::Node::TS_LOCAL; 663 switch (relativeTo) 664 { 665 case TransformSpace::Local: 666 ogreRelativeTo = Ogre::Node::TS_LOCAL; break; 667 case TransformSpace::Parent: 668 ogreRelativeTo = Ogre::Node::TS_PARENT; break; 669 case TransformSpace::World: 670 ogreRelativeTo = Ogre::Node::TS_WORLD; break; 671 default: OrxAssert(false, "Faulty TransformSpace::Enum assigned."); 672 } 673 this->node_->setDirection(direction, ogreRelativeTo, localDirectionVector); 668 this->node_->setDirection(direction, static_cast<Ogre::Node::TransformSpace>(relativeTo), localDirectionVector); 674 669 Quaternion newOrientation(this->node_->getOrientation()); 675 670 this->node_->setOrientation(savedOrientation);
Note: See TracChangeset
for help on using the changeset viewer.