Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jan 17, 2016, 10:29:21 PM (8 years ago)
Author:
landauf
Message:

merged branch cpp11_v3 back to trunk

Location:
code/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

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

    r10624 r11071  
    3737#include <OgreSceneNode.h>
    3838#include <BulletDynamics/Dynamics/btRigidBody.h>
    39 #include <boost/static_assert.hpp>
    4039
    4140#include "util/OrxAssert.h"
     
    5756
    5857    // 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);
     58    static_assert((int)Ogre::Node::TS_LOCAL  == (int)WorldEntity::TransformSpace::Local,  "check enum");
     59    static_assert((int)Ogre::Node::TS_PARENT == (int)WorldEntity::TransformSpace::Parent, "check enum");
     60    static_assert((int)Ogre::Node::TS_WORLD  == (int)WorldEntity::TransformSpace::World,  "check enum");
    6261
    6362    RegisterAbstractClass(WorldEntity).inheritsFrom<BaseObject>().inheritsFrom<Synchronisable>();
     
    7776        this->node_ = this->getScene()->getRootSceneNode()->createChildSceneNode();
    7877
    79         this->parent_ = 0;
     78        this->parent_ = nullptr;
    8079        this->parentID_ = OBJECTID_UNKNOWN;
    8180        this->bDeleteWithParent_ = true;
     
    9089
    9190        // Default behaviour does not include physics
    92         this->physicalBody_   = 0;
     91        this->physicalBody_   = nullptr;
    9392        this->bPhysicsActive_ = false;
    9493        this->bPhysicsActiveSynchronised_    = false;
     
    9695        this->collisionShape_ = new WorldEntityCollisionShape(this->getContext());
    9796        this->collisionShape_->setWorldEntityOwner(this);
    98         this->collisionType_             = None;
    99         this->collisionTypeSynchronised_ = None;
     97        this->collisionType_             = CollisionType::None;
     98        this->collisionTypeSynchronised_ = CollisionType::None;
    10099        this->mass_                 = 1.0f;
    101100        this->childrenMass_         = 0;
     
    208207        registerVariable(this->bCollisionResponseActive_,
    209208                                                VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionResponseActivityChanged));
    210         registerVariable((int&)this->collisionTypeSynchronised_,
     209        registerVariable(this->collisionTypeSynchronised_,
    211210                                                VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionTypeChanged));
    212211        registerVariable(this->bPhysicsActiveSynchronised_,
     
    234233
    235234            // iterate over all children and change their activity as well
    236             for (std::set<WorldEntity*>::const_iterator it = this->getAttachedObjects().begin(); it != this->getAttachedObjects().end(); it++)
     235            for (WorldEntity* object : this->getAttachedObjects())
    237236            {
    238237                if(!this->isActive())
    239238                {
    240                     (*it)->bActiveMem_ = (*it)->isActive();
    241                     (*it)->setActive(this->isActive());
     239                    object->bActiveMem_ = object->isActive();
     240                    object->setActive(this->isActive());
    242241                }
    243242                else
    244243                {
    245                     (*it)->setActive((*it)->bActiveMem_);
     244                    object->setActive(object->bActiveMem_);
    246245                }
    247246            }
     
    260259        {
    261260            // iterate over all children and change their visibility as well
    262             for (std::set<WorldEntity*>::const_iterator it = this->getAttachedObjects().begin(); it != this->getAttachedObjects().end(); it++)
     261            for (WorldEntity* object : this->getAttachedObjects())
    263262            {
    264263                if(!this->isVisible())
    265264                {
    266                     (*it)->bVisibleMem_ = (*it)->isVisible();
    267                     (*it)->setVisible(this->isVisible());
     265                    object->bVisibleMem_ = object->isVisible();
     266                    object->setVisible(this->isVisible());
    268267                }
    269268                else
    270269                {
    271                     (*it)->setVisible((*it)->bVisibleMem_);
     270                    object->setVisible(object->bVisibleMem_);
    272271                }
    273272            }
     
    323322    void WorldEntity::collisionTypeChanged()
    324323    {
    325         if (this->collisionTypeSynchronised_ != Dynamic &&
    326             this->collisionTypeSynchronised_ != Kinematic &&
    327             this->collisionTypeSynchronised_ != Static &&
    328             this->collisionTypeSynchronised_ != None)
     324        if (this->collisionTypeSynchronised_ != CollisionType::Dynamic &&
     325            this->collisionTypeSynchronised_ != CollisionType::Kinematic &&
     326            this->collisionTypeSynchronised_ != CollisionType::Static &&
     327            this->collisionTypeSynchronised_ != CollisionType::None)
    329328        {
    330329            orxout(internal_error) << "Error when collsion Type was received over network. Unknown enum value:" << this->collisionTypeSynchronised_ << endl;
     
    498497    void WorldEntity::notifyDetached()
    499498    {
    500         this->parent_ = 0;
     499        this->parent_ = nullptr;
    501500        this->parentID_ = OBJECTID_UNKNOWN;
    502501
     
    519518    {
    520519        unsigned int i = 0;
    521         for (std::set<WorldEntity*>::const_iterator it = this->children_.begin(); it != this->children_.end(); ++it)
     520        for (WorldEntity* child : this->children_)
    522521        {
    523522            if (i == index)
    524                 return (*it);
     523                return child;
    525524            ++i;
    526525        }
    527         return 0;
     526        return nullptr;
    528527    }
    529528
     
    563562    void WorldEntity::detachOgreObject(Ogre::MovableObject* object)
    564563    {
    565         object->setUserAny(Ogre::Any(static_cast<OrxonoxClass*>(NULL)));
     564        object->setUserAny(Ogre::Any(static_cast<OrxonoxClass*>(nullptr)));
    566565        this->node_->detachObject(object);
    567566    }
     
    660659    {
    661660        // If physics is enabled scale the attached CollisionShape.
    662         /*if (this->hasPhysics() && this->collisionShape_ != NULL)
     661        /*if (this->hasPhysics() && this->collisionShape_ != nullptr)
    663662        {
    664663            this->collisionShape_->setScale3D(scale);
     
    682681        switch (relativeTo)
    683682        {
    684         case WorldEntity::Local:
     683        case TransformSpace::Local:
    685684            // position is relative to parent so transform downwards
    686685            this->setPosition(this->getPosition() + this->getOrientation() * distance);
    687686            break;
    688         case WorldEntity::Parent:
     687        case TransformSpace::Parent:
    689688            this->setPosition(this->getPosition() + distance);
    690689            break;
    691         case WorldEntity::World:
     690        case TransformSpace::World:
    692691            // position is relative to parent so transform upwards
    693692            if (this->node_->getParent())
     
    712711        switch(relativeTo)
    713712        {
    714         case WorldEntity::Local:
     713        case TransformSpace::Local:
    715714            this->setOrientation(this->getOrientation() * rotation);
    716715            break;
    717         case WorldEntity::Parent:
     716        case TransformSpace::Parent:
    718717            // Rotations are normally relative to local axes, transform up
    719718            this->setOrientation(rotation * this->getOrientation());
    720719            break;
    721         case WorldEntity::World:
     720        case TransformSpace::World:
    722721            // Rotations are normally relative to local axes, transform up
    723722            this->setOrientation(this->getOrientation() * this->getWorldOrientation().Inverse()
     
    742741        switch (relativeTo)
    743742        {
    744         case WorldEntity::Local:
     743        case TransformSpace::Local:
    745744            origin = Vector3::ZERO;
    746745            break;
    747         case WorldEntity::Parent:
     746        case TransformSpace::Parent:
    748747            origin = this->getPosition();
    749748            break;
    750         case WorldEntity::World:
     749        case TransformSpace::World:
    751750            origin = this->getWorldPosition();
    752751            break;
     
    832831
    833832        // Check whether we have to create or destroy.
    834         if (type != None && this->collisionType_ == None)
     833        if (type != CollisionType::None && this->collisionType_ == CollisionType::None)
    835834        {
    836835/*
     
    850849            this->physicalBody_->setActivationState(DISABLE_DEACTIVATION);
    851850        }
    852         else if (type == None && this->collisionType_ != None)
     851        else if (type == CollisionType::None && this->collisionType_ != CollisionType::None)
    853852        {
    854853            // Destroy rigid body
     
    856855            deactivatePhysics();
    857856            delete this->physicalBody_;
    858             this->physicalBody_ = 0;
    859             this->collisionType_ = None;
    860             this->collisionTypeSynchronised_ = None;
     857            this->physicalBody_ = nullptr;
     858            this->collisionType_ = CollisionType::None;
     859            this->collisionTypeSynchronised_ = CollisionType::None;
    861860            return;
    862861        }
     
    865864        switch (type)
    866865        {
    867         case Dynamic:
     866        case CollisionType::Dynamic:
    868867            this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_STATIC_OBJECT & !btCollisionObject::CF_KINEMATIC_OBJECT);
    869868            break;
    870         case Kinematic:
     869        case CollisionType::Kinematic:
    871870            this->physicalBody_->setCollisionFlags((this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_STATIC_OBJECT) | btCollisionObject::CF_KINEMATIC_OBJECT);
    872871            break;
    873         case Static:
     872        case CollisionType::Static:
    874873            this->physicalBody_->setCollisionFlags((this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_KINEMATIC_OBJECT) | btCollisionObject::CF_STATIC_OBJECT);
    875874            break;
    876         case None:
     875        case CollisionType::None:
    877876            assert(false); // Doesn't happen
    878877            return;
     
    896895        CollisionType type;
    897896        if (typeStrLower == "dynamic")
    898             type = Dynamic;
     897            type = CollisionType::Dynamic;
    899898        else if (typeStrLower == "static")
    900             type = Static;
     899            type = CollisionType::Static;
    901900        else if (typeStrLower == "kinematic")
    902             type = Kinematic;
     901            type = CollisionType::Kinematic;
    903902        else if (typeStrLower == "none")
    904             type = None;
     903            type = CollisionType::None;
    905904        else
    906905            ThrowException(ParseError, std::string("Attempting to set an unknown collision type: '") + typeStr + "'.");
     
    913912        switch (this->getCollisionType())
    914913        {
    915             case Dynamic:
     914            case CollisionType::Dynamic:
    916915                return "dynamic";
    917             case Kinematic:
     916            case CollisionType::Kinematic:
    918917                return "kinematic";
    919             case Static:
     918            case CollisionType::Static:
    920919                return "static";
    921             case None:
     920            case CollisionType::None:
    922921                return "none";
    923922            default:
     
    939938        // Recalculate mass
    940939        this->childrenMass_ = 0.0f;
    941         for (std::set<WorldEntity*>::const_iterator it = this->children_.begin(); it != this->children_.end(); ++it)
    942             this->childrenMass_ += (*it)->getMass();
     940        for (WorldEntity* child : this->children_)
     941            this->childrenMass_ += child->getMass();
    943942        recalculateMassProps();
    944943        // Notify parent WE
Note: See TracChangeset for help on using the changeset viewer.