Changeset 11795 for code/branches/cegui0.8_ogre1.9/src/modules/objects
- Timestamp:
- Feb 21, 2018, 12:03:52 AM (7 years ago)
- Location:
- code/branches/cegui0.8_ogre1.9
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/cegui0.8_ogre1.9
- Property svn:mergeinfo changed
/code/branches/cegui0.8 (added) merged: 11110,11118,11121,11124 /code/branches/ogre1.9 (added) merged: 11125-11132,11211,11453-11454
- Property svn:mergeinfo changed
-
code/branches/cegui0.8_ogre1.9/src/modules/objects/Planet.cc
r10624 r11795 31 31 #include <OgreEntity.h> 32 32 #include <OgreBillboardSet.h> 33 #include <OgreProgressiveMesh.h>34 33 35 34 #include "core/CoreIncludes.h" … … 47 46 * @brief Constructor 48 47 */ 49 Planet::Planet(Context* context) : Mo vableEntity(context)48 Planet::Planet(Context* context) : Model(context) 50 49 { 51 50 RegisterObject(Planet); 51 this->setLodEnabled(false); 52 52 this->registerVariables(); 53 53 } … … 58 58 Planet::~Planet() 59 59 { 60 if (this->isInitialized() && this->mesh_.getEntity())61 this->detachOgreObject(this->mesh_.getEntity());62 60 } 63 61 … … 87 85 } 88 86 89 void Planet::changed Mesh()87 void Planet::changedAtmosphere() 90 88 { 91 89 if( GameMode::showsGraphics() ) 92 90 { 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()) 99 92 { 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)); 134 94 135 95 this->attachOgreObject(this->billboard_.getBillboardSet()); 136 96 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()); 140 98 } 141 99 } 142 }143 144 void Planet::changedShadows()145 {146 this->mesh_.setCastShadows(this->bCastShadows_);147 100 } 148 101 … … 154 107 XMLPortParam(Planet, "atmospheresize", setAtmosphereSize, getAtmosphereSize, xmlelement,mode); 155 108 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);158 109 } 159 110 160 111 void Planet::registerVariables() 161 112 { 162 registerVariable(this->atmosphere_, VariableDirection::ToClient );113 registerVariable(this->atmosphere_, VariableDirection::ToClient, new NetworkCallback<Planet>(this, &Planet::changedAtmosphere)); 163 114 registerVariable(this->atmosphereSize, VariableDirection::ToClient); 164 115 registerVariable(this->imageSize, VariableDirection::ToClient); 165 // Note: the meshSrc should be synchronised after atmosphere and other values, because the meshSrc callback setts the atmosphere billboards166 registerVariable(this->meshSrc_, VariableDirection::ToClient, new NetworkCallback<Planet>(this, &Planet::changedMesh));167 registerVariable(this->bCastShadows_, VariableDirection::ToClient, new NetworkCallback<Planet>(this, &Planet::changedShadows));168 116 } 169 117 … … 171 119 { 172 120 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()); 178 123 } 179 124 } -
code/branches/cegui0.8_ogre1.9/src/modules/objects/Planet.h
r11071 r11795 40 40 #include <string> 41 41 #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" 44 44 45 45 namespace orxonox 46 46 { 47 class _ObjectsExport Planet : public Mo vableEntity47 class _ObjectsExport Planet : public Model, public Tickable 48 48 { 49 49 public: … … 58 58 virtual void changedVisibility() override; 59 59 60 inline void setMeshSource(const std::string& meshname)61 { this->meshSrc_ = meshname; this->changedMesh(); }62 63 inline const std::string& getMeshSource() const64 { return this->meshSrc_; }65 66 inline void setCastShadows(bool bCastShadows)67 { this->bCastShadows_ = bCastShadows; this->changedShadows(); }68 69 inline bool getCastShadows() const70 { return this->bCastShadows_; }71 72 inline const std::string& getMesh() const{73 return this->meshSrc_;74 }75 76 60 inline void setAtmosphereSize(float size){ 77 61 this->atmosphereSize = size; … … 84 68 inline void setAtmosphere(const std::string& atmosphere){ 85 69 this->atmosphere_ = atmosphere; 70 this->changedAtmosphere(); 86 71 } 87 72 … … 103 88 void registerVariables(); 104 89 105 void changedMesh(); 106 void changedShadows(); 90 void changedAtmosphere(); 107 91 108 std::string meshSrc_;109 92 std::string atmosphere_; 110 Mesh mesh_;111 93 float atmosphereSize; 112 94 float imageSize; 113 95 BillboardSet billboard_; 114 bool bCastShadows_;115 96 116 97 };
Note: See TracChangeset
for help on using the changeset viewer.