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:
3 edited

Legend:

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

  • code/branches/cegui0.8_ogre1.9/src/modules/objects/Planet.cc

    r10624 r11795  
    3131#include <OgreEntity.h>
    3232#include <OgreBillboardSet.h>
    33 #include <OgreProgressiveMesh.h>
    3433
    3534#include "core/CoreIncludes.h"
     
    4746     * @brief Constructor
    4847     */
    49     Planet::Planet(Context* context) : MovableEntity(context)
     48    Planet::Planet(Context* context) : Model(context)
    5049    {
    5150        RegisterObject(Planet);
     51        this->setLodEnabled(false);
    5252        this->registerVariables();
    5353    }
     
    5858    Planet::~Planet()
    5959    {
    60         if (this->isInitialized() && this->mesh_.getEntity())
    61             this->detachOgreObject(this->mesh_.getEntity());
    6260    }
    6361
     
    8785    }
    8886
    89     void Planet::changedMesh()
     87    void Planet::changedAtmosphere()
    9088    {
    9189        if( GameMode::showsGraphics() )
    9290        {
    93             if (this->mesh_.getEntity())
    94                 this->detachOgreObject(this->mesh_.getEntity());
    95 
    96             this->mesh_.setMeshSource(this->getScene()->getSceneManager(), this->meshSrc_);
    97 
    98             if (this->mesh_.getEntity())
     91            if (this->getMesh().getEntity())
    9992            {
    100                 this->attachOgreObject(this->mesh_.getEntity());
    101                 this->mesh_.getEntity()->setCastShadows(this->bCastShadows_);
    102                 this->mesh_.setVisible(this->isVisible());
    103 
    104                 float scaleFactor = this->getScale();
    105 
    106 #if OGRE_VERSION >= 0x010800
    107                 Ogre::ProgressiveMesh::LodValueList distList;
    108 #elif OGRE_VERSION >= 0x010700
    109                 Ogre::Mesh::LodValueList distList;
    110 #else
    111                 Ogre::Mesh::LodDistanceList distList;
    112 #endif
    113 
    114                 distList.push_back(10.0f*scaleFactor);
    115                 distList.push_back(19.0f*scaleFactor);
    116                 distList.push_back(27.0f*scaleFactor);
    117                 distList.push_back(34.0f*scaleFactor);
    118                 distList.push_back(40.0f*scaleFactor);
    119                 distList.push_back(45.0f*scaleFactor);
    120                 distList.push_back(49.0f*scaleFactor);
    121                 distList.push_back(52.0f*scaleFactor);
    122                 distList.push_back(54.0f*scaleFactor);
    123                 distList.push_back(55.0f*scaleFactor);
    124 
    125                 float reductionValue = 0.2f;
    126 
    127 #if OGRE_VERSION >= 0x010800
    128                 Ogre::ProgressiveMesh::generateLodLevels(this->mesh_.getEntity()->getMesh().get(), distList, Ogre::ProgressiveMesh::VRQ_PROPORTIONAL,
    129                     reductionValue);
    130 #else
    131                 this->mesh_.getEntity()->getMesh()->generateLodLevels(distList, Ogre::ProgressiveMesh::VRQ_PROPORTIONAL, reductionValue);
    132 #endif
    133                 billboard_.setBillboardSet(this->getScene()->getSceneManager(), this->atmosphere_, Vector3(0,0,0));
     93                this->billboard_.setBillboardSet(this->getScene()->getSceneManager(), this->atmosphere_, Vector3(0,0,0));
    13494
    13595                this->attachOgreObject(this->billboard_.getBillboardSet());
    13696                this->billboard_.getBillboardSet()->setUseAccurateFacing(true);
    137                 this->setCastShadows(true);
    138                 this->billboard_.getBillboardSet()->setRenderQueueGroup(this->mesh_.getEntity()->getRenderQueueGroup());
    139                 this->mesh_.setCastShadows(true);
     97                this->billboard_.getBillboardSet()->setRenderQueueGroup(this->getMesh().getEntity()->getRenderQueueGroup());
    14098            }
    14199        }
    142     }
    143 
    144     void Planet::changedShadows()
    145     {
    146         this->mesh_.setCastShadows(this->bCastShadows_);
    147100    }
    148101
     
    154107        XMLPortParam(Planet, "atmospheresize", setAtmosphereSize, getAtmosphereSize, xmlelement,mode);
    155108        XMLPortParam(Planet, "imagesize", setImageSize, getImageSize, xmlelement,mode);
    156         XMLPortParam(Planet, "mesh", setMeshSource, getMeshSource, xmlelement, mode);
    157         XMLPortParam(Planet, "shadow", setCastShadows, getCastShadows, xmlelement, mode).defaultValues(true);
    158109    }
    159110
    160111    void Planet::registerVariables()
    161112    {
    162         registerVariable(this->atmosphere_, VariableDirection::ToClient);
     113        registerVariable(this->atmosphere_, VariableDirection::ToClient, new NetworkCallback<Planet>(this, &Planet::changedAtmosphere));
    163114        registerVariable(this->atmosphereSize, VariableDirection::ToClient);
    164115        registerVariable(this->imageSize, VariableDirection::ToClient);
    165         // Note: the meshSrc should be synchronised after atmosphere and other values, because the meshSrc callback setts the atmosphere billboards
    166         registerVariable(this->meshSrc_, VariableDirection::ToClient, new NetworkCallback<Planet>(this, &Planet::changedMesh));
    167         registerVariable(this->bCastShadows_, VariableDirection::ToClient, new NetworkCallback<Planet>(this, &Planet::changedShadows));
    168116    }
    169117
     
    171119    {
    172120        SUPER(Planet, changedVisibility);
    173         if (this->isInitialized())
    174         {
    175             this->mesh_.setVisible(this->isVisible());
    176             this->billboard_.setVisible(this->isVisible());
    177         }
     121
     122        this->billboard_.setVisible(this->isVisible());
    178123    }
    179124}
  • code/branches/cegui0.8_ogre1.9/src/modules/objects/Planet.h

    r11071 r11795  
    4040#include <string>
    4141#include "tools/BillboardSet.h"
    42 #include "tools/Mesh.h"
    43 #include "worldentities/MovableEntity.h"
     42#include "tools/interfaces/Tickable.h"
     43#include "graphics/Model.h"
    4444
    4545namespace orxonox
    4646{
    47     class _ObjectsExport Planet : public MovableEntity
     47    class _ObjectsExport Planet : public Model, public Tickable
    4848    {
    4949        public:
     
    5858            virtual void changedVisibility() override;
    5959
    60             inline void setMeshSource(const std::string& meshname)
    61                 { this->meshSrc_ = meshname; this->changedMesh(); }
    62 
    63             inline const std::string& getMeshSource() const
    64                 { return this->meshSrc_; }
    65 
    66             inline void setCastShadows(bool bCastShadows)
    67                 { this->bCastShadows_ = bCastShadows; this->changedShadows(); }
    68 
    69             inline bool getCastShadows() const
    70                 { return this->bCastShadows_; }
    71 
    72             inline const std::string& getMesh() const{
    73                 return this->meshSrc_;
    74             }
    75 
    7660            inline void setAtmosphereSize(float size){
    7761                this->atmosphereSize = size;
     
    8468            inline void setAtmosphere(const std::string& atmosphere){
    8569                this->atmosphere_ = atmosphere;
     70                this->changedAtmosphere();
    8671            }
    8772
     
    10388            void registerVariables();
    10489
    105             void changedMesh();
    106             void changedShadows();
     90            void changedAtmosphere();
    10791
    108             std::string meshSrc_;
    10992            std::string atmosphere_;
    110             Mesh mesh_;
    11193            float atmosphereSize;
    11294            float imageSize;
    11395            BillboardSet billboard_;
    114             bool bCastShadows_;
    11596
    11697    };
Note: See TracChangeset for help on using the changeset viewer.