Changeset 11795 for code/branches/cegui0.8_ogre1.9/src/orxonox/graphics
- Timestamp:
- Feb 21, 2018, 12:03:52 AM (7 years ago)
- Location:
- code/branches/cegui0.8_ogre1.9
- Files:
-
- 5 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/orxonox/graphics/AnimatedModel.cc
r9667 r11795 49 49 AnimatedModel::~AnimatedModel() 50 50 { 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()); 53 53 } 54 54 … … 66 66 if (GameMode::showsGraphics()) 67 67 { 68 if (this-> mesh_.getEntity())69 this->detachOgreObject(this-> mesh_.getEntity());68 if (this->getMesh().getEntity()) 69 this->detachOgreObject(this->getMesh().getEntity()); 70 70 71 this-> mesh_.setMeshSource(this->getScene()->getSceneManager(), this->meshSrc_);71 this->getMesh().setMeshSource(this->getScene()->getSceneManager(), this->getMeshSource()); 72 72 73 if (this-> mesh_.getEntity())73 if (this->getMesh().getEntity()) 74 74 { 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()); 77 77 this->setAnimationState(this->bAnimLoop_, this->bAnimEnabled_, this->anims_); 78 this-> mesh_.setVisible(this->isVisible());78 this->getMesh().setVisible(this->isVisible()); 79 79 } 80 80 } … … 89 89 if(state!="") 90 90 { 91 if(this-> mesh_.getEntity()->getAnimationState(state))91 if(this->getMesh().getEntity()->getAnimationState(state)) 92 92 { 93 Ogre::AnimationState* as = this-> mesh_.getEntity()->getAnimationState(state);93 Ogre::AnimationState* as = this->getMesh().getEntity()->getAnimationState(state); 94 94 as->setLoop(loop); 95 95 as->setEnabled(enabled); … … 109 109 void AnimatedModel::tick(float dt) 110 110 { 111 if(this-> mesh_.getEntity()->getAnimationState(anims_))111 if(this->getMesh().getEntity()->getAnimationState(anims_)) 112 112 { 113 113 // Test to change Material at runtime! 114 114 115 // Ogre::MaterialPtr mat = this-> mesh_.getEntity()->getSubEntity(0)->getMaterial();115 // Ogre::MaterialPtr mat = this->getMesh().getEntity()->getSubEntity(0)->getMaterial(); 116 116 // mat->setDiffuse(0.4, 0.3, 0.1, 0.1); 117 117 // mat->setAmbient(0.3, 0.7, 0.8); … … 121 121 // mat->setSceneBlending(sbt); 122 122 123 Ogre::AnimationState* as = this-> mesh_.getEntity()->getAnimationState(anims_);123 Ogre::AnimationState* as = this->getMesh().getEntity()->getAnimationState(anims_); 124 124 as->addTime(dt); 125 125 } -
code/branches/cegui0.8_ogre1.9/src/orxonox/graphics/Camera.cc
r9667 r11795 62 62 63 63 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 65 70 this->cameraNode_ = this->getScene()->getRootSceneNode()->createChildSceneNode(); 66 71 this->attachNode(this->cameraNode_); -
code/branches/cegui0.8_ogre1.9/src/orxonox/graphics/Model.cc
r11783 r11795 30 30 31 31 #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 33 38 34 39 #include "core/CoreIncludes.h" … … 203 208 { 204 209 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 */217 210 orxout(verbose, context::lod) << "Setting lodLevel for " << this->meshSrc_<< " with lodLevel_: " << this->lodLevel_ <<" and volume: "<< volume << ":" << endl; 218 211 219 #if OGRE_VERSION >= 0x010800 212 #if OGRE_VERSION >= 0x010900 213 Ogre::LodConfig::LodLevelList distList; 214 #elif OGRE_VERSION >= 0x010800 220 215 Ogre::ProgressiveMesh::LodValueList distList; 221 216 #elif OGRE_VERSION >= 0x010700 … … 227 222 if( lodLevel_>0 ) 228 223 { 229 // float factor = scaleFactor*5/lodLevel_;230 224 float factor = pow(volume, 2.0f / 3.0f) * 15.0f / lodLevel_; 231 225 232 226 orxout(verbose, context::lod) << "LodLevel set with factor: " << factor << endl; 233 227 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); 244 238 while(distList.size()>this->numLodLevels_) 245 239 distList.pop_back(); … … 247 241 248 242 //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 250 252 Ogre::ProgressiveMesh::generateLodLevels(this->mesh_.getEntity()->getMesh().get(), distList, Ogre::ProgressiveMesh::VRQ_PROPORTIONAL, 251 253 this->lodReductionRate_); … … 270 272 #endif 271 273 } 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 } 272 284 } -
code/branches/cegui0.8_ogre1.9/src/orxonox/graphics/Model.h
r11783 r11795 89 89 90 90 protected: 91 inline Mesh& getMesh() 92 { return this->mesh_; } 93 94 inline void setLodEnabled(bool bLodEnabled) 95 { this->bLodEnabled_ = bLodEnabled; } 96 97 private: 91 98 /** 92 99 @brief … … 108 115 //LoD 109 116 void enableLod(); 117 118 template <class T> 119 void addLodDistanceToList(T& list, float distance); 110 120 111 121 inline void setLodLevel(float lodLevel)
Note: See TracChangeset
for help on using the changeset viewer.