Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Feb 21, 2018, 12:03:52 AM (7 years ago)
Author:
landauf
Message:

merged ogre1.9 (including cegui0.8) into new branch

Location:
code/branches/cegui0.8_ogre1.9
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • code/branches/cegui0.8_ogre1.9

  • code/branches/cegui0.8_ogre1.9/src/orxonox/graphics/AnimatedModel.cc

    r9667 r11795  
    4949    AnimatedModel::~AnimatedModel()
    5050    {
    51         if (this->isInitialized() && this->mesh_.getEntity())
    52             this->detachOgreObject(this->mesh_.getEntity());
     51        if (this->isInitialized() && this->getMesh().getEntity())
     52            this->detachOgreObject(this->getMesh().getEntity());
    5353    }
    5454
     
    6666        if (GameMode::showsGraphics())
    6767        {
    68             if (this->mesh_.getEntity())
    69                 this->detachOgreObject(this->mesh_.getEntity());
     68            if (this->getMesh().getEntity())
     69                this->detachOgreObject(this->getMesh().getEntity());
    7070
    71             this->mesh_.setMeshSource(this->getScene()->getSceneManager(), this->meshSrc_);
     71            this->getMesh().setMeshSource(this->getScene()->getSceneManager(), this->getMeshSource());
    7272
    73             if (this->mesh_.getEntity())
     73            if (this->getMesh().getEntity())
    7474            {
    75                 this->attachOgreObject(this->mesh_.getEntity());
    76                 this->mesh_.getEntity()->setCastShadows(this->bCastShadows_);
     75                this->attachOgreObject(this->getMesh().getEntity());
     76                this->getMesh().getEntity()->setCastShadows(this->getCastShadows());
    7777                this->setAnimationState(this->bAnimLoop_, this->bAnimEnabled_, this->anims_);
    78                 this->mesh_.setVisible(this->isVisible());
     78                this->getMesh().setVisible(this->isVisible());
    7979            }
    8080        }
     
    8989        if(state!="")
    9090        {
    91         if(this->mesh_.getEntity()->getAnimationState(state))
     91        if(this->getMesh().getEntity()->getAnimationState(state))
    9292        {
    93         Ogre::AnimationState* as = this->mesh_.getEntity()->getAnimationState(state);
     93        Ogre::AnimationState* as = this->getMesh().getEntity()->getAnimationState(state);
    9494        as->setLoop(loop);
    9595        as->setEnabled(enabled);
     
    109109    void AnimatedModel::tick(float dt)
    110110    {
    111         if(this->mesh_.getEntity()->getAnimationState(anims_))
     111        if(this->getMesh().getEntity()->getAnimationState(anims_))
    112112        {
    113113// Test to change Material at runtime!
    114114
    115 //            Ogre::MaterialPtr mat = this->mesh_.getEntity()->getSubEntity(0)->getMaterial();
     115//            Ogre::MaterialPtr mat = this->getMesh().getEntity()->getSubEntity(0)->getMaterial();
    116116//            mat->setDiffuse(0.4, 0.3, 0.1, 0.1);
    117117//            mat->setAmbient(0.3, 0.7, 0.8);
     
    121121//            mat->setSceneBlending(sbt);
    122122
    123             Ogre::AnimationState* as = this->mesh_.getEntity()->getAnimationState(anims_);
     123            Ogre::AnimationState* as = this->getMesh().getEntity()->getAnimationState(anims_);
    124124            as->addTime(dt);
    125125    }
  • code/branches/cegui0.8_ogre1.9/src/orxonox/graphics/Camera.cc

    r9667 r11795  
    6262
    6363        this->camera_ = this->getScene()->getSceneManager()->createCamera(getUniqueNumberString());
    64         static_cast<Ogre::MovableObject*>(this->camera_)->setUserAny(Ogre::Any(static_cast<OrxonoxClass*>(this)));
     64        Ogre::MovableObject* movable = static_cast<Ogre::MovableObject*>(this->camera_);
     65#if OGRE_VERSION >= 0x010900
     66        movable->getUserObjectBindings().setUserAny(Ogre::Any(static_cast<OrxonoxClass*>(this)));
     67#else
     68        movable->setUserAny(Ogre::Any(static_cast<OrxonoxClass*>(this)));
     69#endif
    6570        this->cameraNode_ = this->getScene()->getRootSceneNode()->createChildSceneNode();
    6671        this->attachNode(this->cameraNode_);
  • code/branches/cegui0.8_ogre1.9/src/orxonox/graphics/Model.cc

    r11783 r11795  
    3030
    3131#include <OgreEntity.h>
    32 #include <OgreProgressiveMesh.h>
     32#if OGRE_VERSION >= 0x010900
     33#   include <OgreProgressiveMeshGenerator.h>
     34#   include <OgreDistanceLodStrategy.h>
     35#else
     36#   include <OgreProgressiveMesh.h>
     37#endif
    3338
    3439#include "core/CoreIncludes.h"
     
    203208            {
    204209                float volume = this->mesh_.getEntity()->getBoundingBox().volume();
    205 /*
    206                 float scaleFactor = 1;
    207 
    208                 BaseObject* creatorPtr = this;
    209 
    210                 while(creatorPtr!=nullptr&&orxonox_cast<WorldEntity*>(creatorPtr))
    211                 {
    212                     scaleFactor *= getBiggestScale(((WorldEntity*) creatorPtr)->getScale3D());
    213                     creatorPtr = creatorPtr->getCreator();
    214                 }
    215                 orxout() << "name: " << this->meshSrc_ << "scaleFactor: " << scaleFactor << ", volume: " << volume << endl;
    216 */
    217210                orxout(verbose, context::lod) << "Setting lodLevel for " << this->meshSrc_<< " with lodLevel_: " << this->lodLevel_ <<" and volume: "<< volume << ":" << endl;
    218211
    219 #if OGRE_VERSION >= 0x010800
     212#if OGRE_VERSION >= 0x010900
     213                Ogre::LodConfig::LodLevelList distList;
     214#elif OGRE_VERSION >= 0x010800
    220215                Ogre::ProgressiveMesh::LodValueList distList;
    221216#elif OGRE_VERSION >= 0x010700
     
    227222                if( lodLevel_>0 )
    228223                {
    229 //                    float factor = scaleFactor*5/lodLevel_;
    230224                    float factor = pow(volume, 2.0f / 3.0f) * 15.0f / lodLevel_;
    231225
    232226                    orxout(verbose, context::lod) << "LodLevel set with factor: " << factor << endl;
    233227
    234                     distList.push_back(70.0f*factor);
    235                     distList.push_back(140.0f*factor);
    236                     distList.push_back(170.0f*factor);
    237                     distList.push_back(200.0f*factor);
    238                     distList.push_back(230.0f*factor);
    239                     distList.push_back(250.0f*factor);
    240                     distList.push_back(270.0f*factor);
    241                     distList.push_back(290.0f*factor);
    242                     distList.push_back(310.0f*factor);
    243                     distList.push_back(330.0f*factor);
     228                    addLodDistanceToList(distList, 70.0f*factor);
     229                    addLodDistanceToList(distList, 140.0f*factor);
     230                    addLodDistanceToList(distList, 170.0f*factor);
     231                    addLodDistanceToList(distList, 200.0f*factor);
     232                    addLodDistanceToList(distList, 230.0f*factor);
     233                    addLodDistanceToList(distList, 250.0f*factor);
     234                    addLodDistanceToList(distList, 270.0f*factor);
     235                    addLodDistanceToList(distList, 290.0f*factor);
     236                    addLodDistanceToList(distList, 310.0f*factor);
     237                    addLodDistanceToList(distList, 330.0f*factor);
    244238                    while(distList.size()>this->numLodLevels_)
    245239                        distList.pop_back();
     
    247241
    248242                    //Generiert LOD-Levels
    249 #if OGRE_VERSION >= 0x010800
     243#if OGRE_VERSION >= 0x010900
     244                    Ogre::LodConfig config;
     245                    config.mesh = this->mesh_.getEntity()->getMesh();
     246                    config.levels = distList;
     247                    config.strategy = Ogre::DistanceLodSphereStrategy::getSingletonPtr();
     248
     249                    Ogre::ProgressiveMeshGenerator generator;
     250                    generator.generateLodLevels(config);
     251#elif OGRE_VERSION >= 0x010800
    250252                    Ogre::ProgressiveMesh::generateLodLevels(this->mesh_.getEntity()->getMesh().get(), distList, Ogre::ProgressiveMesh::VRQ_PROPORTIONAL,
    251253                        this->lodReductionRate_);
     
    270272#endif
    271273    }
     274
     275    template <class T>
     276    void Model::addLodDistanceToList(T& list, float distance)
     277    {
     278#if OGRE_VERSION >= 0x010900
     279        list.push_back({distance, Ogre::LodLevel::VRM_COLLAPSE_COST, this->lodReductionRate_, 0, false});
     280#else
     281        list.push_back(distance);
     282#endif
     283    }
    272284}
  • code/branches/cegui0.8_ogre1.9/src/orxonox/graphics/Model.h

    r11783 r11795  
    8989
    9090        protected:
     91            inline Mesh& getMesh()
     92                { return this->mesh_; }
     93
     94            inline void setLodEnabled(bool bLodEnabled)
     95                { this->bLodEnabled_ = bLodEnabled; }
     96
     97        private:
    9198            /**
    9299            @brief
     
    108115            //LoD
    109116            void enableLod();
     117
     118            template <class T>
     119            void addLodDistanceToList(T& list, float distance);
    110120
    111121            inline void setLodLevel(float lodLevel)
Note: See TracChangeset for help on using the changeset viewer.