Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 20, 2009, 9:20:47 AM (16 years ago)
Author:
rgrieder
Message:

Merged pch branch back to trunk.

Location:
code/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/src/orxonox/objects/worldentities/WorldEntity.cc

    r3110 r3196  
    3030#include "WorldEntity.h"
    3131
    32 #include <cassert>
     32#include <OgreBillboardSet.h>
     33#include <OgreCamera.h>
     34#include <OgreEntity.h>
     35#include <OgreParticleSystem.h>
     36#include <OgreSceneManager.h>
    3337#include <OgreSceneNode.h>
    34 #include <OgreSceneManager.h>
    35 #include "BulletDynamics/Dynamics/btRigidBody.h"
    36 
     38#include <BulletDynamics/Dynamics/btRigidBody.h>
     39#include <boost/static_assert.hpp>
     40
     41#include "util/OrxAssert.h"
     42#include "util/Convert.h"
    3743#include "util/Exception.h"
    38 #include "util/Convert.h"
    3944#include "core/CoreIncludes.h"
    4045#include "core/XMLPort.h"
    41 
    4246#include "objects/Scene.h"
    4347#include "objects/collisionshapes/WorldEntityCollisionShape.h"
     
    5155    const Vector3 WorldEntity::DOWN  = Vector3::NEGATIVE_UNIT_Y;
    5256    const Vector3 WorldEntity::UP    = Vector3::UNIT_Y;
     57
     58    // Be sure we don't do bad conversions
     59    BOOST_STATIC_ASSERT((int)Ogre::Node::TS_LOCAL  == (int)WorldEntity::Local);
     60    BOOST_STATIC_ASSERT((int)Ogre::Node::TS_PARENT == (int)WorldEntity::Parent);
     61    BOOST_STATIC_ASSERT((int)Ogre::Node::TS_WORLD  == (int)WorldEntity::World);
    5362
    5463    /**
     
    463472    //! Attaches an Ogre::MovableObject to this WorldEntity.
    464473    void WorldEntity::attachOgreObject(Ogre::MovableObject* object)
    465     {
    466         this->node_->attachObject(object);
    467     }
     474        { this->node_->attachObject(object); }
     475    void WorldEntity::attachOgreObject(Ogre::BillboardSet* object)
     476        { this->node_->attachObject(object); }
     477    void WorldEntity::attachOgreObject(Ogre::Camera* object)
     478        { this->node_->attachObject(object); }
     479    void WorldEntity::attachOgreObject(Ogre::Entity* object)
     480        { this->node_->attachObject(object); }
     481    void WorldEntity::attachOgreObject(Ogre::ParticleSystem* object)
     482        { this->node_->attachObject(object); }
    468483
    469484    //! Detaches an Ogre::MovableObject from this WorldEntity.
    470485    void WorldEntity::detachOgreObject(Ogre::MovableObject* object)
    471     {
    472         this->node_->detachObject(object);
    473     }
     486        { this->node_->detachObject(object); }
     487    void WorldEntity::detachOgreObject(Ogre::BillboardSet* object)
     488        { this->node_->detachObject(object); }
     489    void WorldEntity::detachOgreObject(Ogre::Camera* object)
     490        { this->node_->detachObject(object); }
     491    void WorldEntity::detachOgreObject(Ogre::Entity* object)
     492        { this->node_->detachObject(object); }
     493    void WorldEntity::detachOgreObject(Ogre::ParticleSystem* object)
     494        { this->node_->detachObject(object); }
    474495
    475496    //! Detaches an Ogre::MovableObject (by string) from this WorldEntity.
     
    501522
    502523    // Note: These functions are placed in WorldEntity.h as inline functions for the release build.
    503 #ifndef NDEBUG
     524#ifndef ORXONOX_RELEASE
    504525    const Vector3& WorldEntity::getPosition() const
    505526    {
     
    574595        Translates this WorldEntity by a vector.
    575596    @param relativeTo
    576         @see TransformSpace::Enum
    577     */
    578     void WorldEntity::translate(const Vector3& distance, TransformSpace::Enum relativeTo)
     597        @see WorldEntity::TransformSpace
     598    */
     599    void WorldEntity::translate(const Vector3& distance, TransformSpace relativeTo)
    579600    {
    580601        switch (relativeTo)
    581602        {
    582         case TransformSpace::Local:
     603        case WorldEntity::Local:
    583604            // position is relative to parent so transform downwards
    584605            this->setPosition(this->getPosition() + this->getOrientation() * distance);
    585606            break;
    586         case TransformSpace::Parent:
     607        case WorldEntity::Parent:
    587608            this->setPosition(this->getPosition() + distance);
    588609            break;
    589         case TransformSpace::World:
     610        case WorldEntity::World:
    590611            // position is relative to parent so transform upwards
    591612            if (this->node_->getParent())
     
    602623        Rotates this WorldEntity by a quaternion.
    603624    @param relativeTo
    604         @see TransformSpace::Enum
    605     */
    606     void WorldEntity::rotate(const Quaternion& rotation, TransformSpace::Enum relativeTo)
     625        @see WorldEntity::TransformSpace
     626    */
     627    void WorldEntity::rotate(const Quaternion& rotation, TransformSpace relativeTo)
    607628    {
    608629        switch(relativeTo)
    609630        {
    610         case TransformSpace::Local:
     631        case WorldEntity::Local:
    611632            this->setOrientation(this->getOrientation() * rotation);
    612633            break;
    613         case TransformSpace::Parent:
     634        case WorldEntity::Parent:
    614635            // Rotations are normally relative to local axes, transform up
    615636            this->setOrientation(rotation * this->getOrientation());
    616637            break;
    617         case TransformSpace::World:
     638        case WorldEntity::World:
    618639            // Rotations are normally relative to local axes, transform up
    619640            this->setOrientation(this->getOrientation() * this->getWorldOrientation().Inverse()
     
    627648        Makes this WorldEntity look a specific target location.
    628649    @param relativeTo
    629         @see TransformSpace::Enum
     650        @see WorldEntity::TransformSpace
    630651    @param localDirectionVector
    631652        The vector which normally describes the natural direction of the object, usually -Z.
    632653    */
    633     void WorldEntity::lookAt(const Vector3& target, TransformSpace::Enum relativeTo, const Vector3& localDirectionVector)
    634     {
    635         Vector3 origin;
     654    void WorldEntity::lookAt(const Vector3& target, TransformSpace relativeTo, const Vector3& localDirectionVector)
     655    {
     656        Vector3 origin(0, 0, 0);
    636657        switch (relativeTo)
    637658        {
    638         case TransformSpace::Local:
     659        case WorldEntity::Local:
    639660            origin = Vector3::ZERO;
    640661            break;
    641         case TransformSpace::Parent:
     662        case WorldEntity::Parent:
    642663            origin = this->getPosition();
    643664            break;
    644         case TransformSpace::World:
     665        case WorldEntity::World:
    645666            origin = this->getWorldPosition();
    646667            break;
     
    653674        Makes this WorldEntity look in specific direction.
    654675    @param relativeTo
    655         @see TransformSpace::Enum
     676        @see WorldEntity::TransformSpace
    656677    @param localDirectionVector
    657678        The vector which normally describes the natural direction of the object, usually -Z.
    658679    */
    659     void WorldEntity::setDirection(const Vector3& direction, TransformSpace::Enum relativeTo, const Vector3& localDirectionVector)
     680    void WorldEntity::setDirection(const Vector3& direction, TransformSpace relativeTo, const Vector3& localDirectionVector)
    660681    {
    661682        Quaternion savedOrientation(this->getOrientation());
    662         Ogre::Node::TransformSpace ogreRelativeTo;
    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);
     683        this->node_->setDirection(direction, static_cast<Ogre::Node::TransformSpace>(relativeTo), localDirectionVector);
    674684        Quaternion newOrientation(this->node_->getOrientation());
    675685        this->node_->setOrientation(savedOrientation);
     
    772782            break;
    773783        case Kinematic:
    774             this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_STATIC_OBJECT | btCollisionObject::CF_KINEMATIC_OBJECT);
     784            this->physicalBody_->setCollisionFlags((this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_STATIC_OBJECT) | btCollisionObject::CF_KINEMATIC_OBJECT);
    775785            break;
    776786        case Static:
    777             this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_KINEMATIC_OBJECT | btCollisionObject::CF_STATIC_OBJECT);
     787            this->physicalBody_->setCollisionFlags((this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_KINEMATIC_OBJECT) | btCollisionObject::CF_STATIC_OBJECT);
    778788            break;
    779789        case None:
Note: See TracChangeset for help on using the changeset viewer.