Ignore:
Timestamp:
02/12/07 19:00:37 (17 years ago)
Author:
mattausch
Message:

changed pvs loading: loading objects in a first pass

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOcclusionCullingSceneManager.cpp

    r2114 r2115  
    403403        // show current view cell geometry 
    404404    if (mCurrentViewCell && mCurrentViewCell->GetMesh()) 
    405         { 
     405        {/* 
    406406                //const bool showSingleViewCell = true; 
    407407                if (mViewCellsGeometryLoaded) 
     
    427427                        } 
    428428                } 
    429                  
    430  
     429                */ 
    431430                ////////// 
    432431                //-- set PVS of view cell visible 
    433432 
    434                 GtpVisibilityPreprocessor::ObjectPvsIterator pit =  
    435                         mCurrentViewCell->GetPvs().GetIterator(); 
     433                GtpVisibilityPreprocessor::ObjectPvsIterator pit = mCurrentViewCell->GetPvs().GetIterator(); 
    436434 
    437435                while (pit.HasMoreEntries()) 
     
    440438                        GtpVisibilityPreprocessor::Intersectable *obj = entry.mObject; 
    441439 
    442                         if (obj->Type() !=  
    443                                 GtpVisibilityPreprocessor::Intersectable::ENGINE_INTERSECTABLE) 
    444                                 continue; 
    445                          
    446                         EngineIntersectable *oi = static_cast<EngineIntersectable *>(obj); 
    447  
    448                         EntityContainer *entries = oi->GetItem(); 
    449                         EntityContainer::const_iterator eit, eit_end = entries->end(); 
    450  
    451                         for (eit = entries->begin(); eit != eit_end; ++ eit) 
    452                         { 
    453                                 (*eit)->setUserAny(Any((int)0)); 
    454                         } 
    455                 } 
    456  
    457                 pit = mCurrentViewCell->GetPvs().GetIterator(); 
    458  
    459                 while (pit.HasMoreEntries()) 
    460                 {                
    461                         GtpVisibilityPreprocessor::ObjectPvsEntry entry = pit.Next(); 
    462                         GtpVisibilityPreprocessor::Intersectable *obj = entry.mObject; 
    463  
    464                         switch (obj->Type()) 
    465                         {        
    466                         case GtpVisibilityPreprocessor::Intersectable::OGRE_MESH_INSTANCE: 
    467                                 { 
    468                                         OgreMeshInstance *omi = static_cast<OgreMeshInstance *>(obj); 
    469                                         omi->GetEntity()->_updateRenderQueue(getRenderQueue()); 
    470                                 } 
    471                                 break; 
    472  
    473                         case GtpVisibilityPreprocessor::Intersectable::ENGINE_INTERSECTABLE: 
    474                                 { 
    475                                         EngineIntersectable *oi = static_cast<EngineIntersectable *>(obj); 
    476  
    477                                         EntityContainer *entries = oi->GetItem(); 
    478                                         EntityContainer::const_iterator eit, eit_end = entries->end(); 
    479  
    480                                         for (eit = entries->begin(); eit != eit_end; ++ eit) 
    481                                         { 
    482                                          
    483                                                 Entity *ent = *eit; 
    484                                                 Any newAny = ent->getUserAny(); 
    485  
    486                                                 int flt = any_cast<int>(newAny); 
    487                                          
    488                                                 if (any_cast<int>(newAny) == 0) 
    489                                                 { 
    490                                                         ent->setUserAny(Any((int)1)); 
    491                                                         ent->_updateRenderQueue(getRenderQueue()); 
    492                                                 } 
    493  
    494                                         } 
    495                                 } 
    496                                 break; 
    497                         default: 
    498                                 break; 
    499                         } 
    500                 }        
     440                        OgreMeshInstance *omi = static_cast<OgreMeshInstance *>(obj); 
     441                        omi->GetEntity()->_updateRenderQueue(getRenderQueue()); 
     442                } 
     443                 
    501444        } 
    502445/* 
     
    14141357                GtpVisibilityPreprocessor::Intersectable *entry = *it; 
    14151358 
    1416                 switch (entry->Type()) 
    1417                 { 
    1418                         case GtpVisibilityPreprocessor::Intersectable::OGRE_MESH_INSTANCE: 
    1419                                 { 
    1420                                         OgreMeshInstance *omi = static_cast<OgreMeshInstance *>(entry); 
    1421                                         omi->GetEntity()->setVisible(visible); 
    1422                                         //GtpVisibilityPreprocessor::Debug << "assigned id " << omi->GetId() << endl; 
    1423                                 } 
    1424                                 break; 
    1425                         case GtpVisibilityPreprocessor::Intersectable::ENGINE_INTERSECTABLE: 
    1426                                 { 
    1427                                         EngineIntersectable *oi = static_cast<EngineIntersectable *>(entry); 
    1428  
    1429                                         EntityContainer *entries = oi->GetItem(); 
    1430                                         EntityContainer::const_iterator eit, 
    1431                                                 eit_end = entries->end(); 
    1432                                         for (eit = entries->begin(); eit != eit_end; ++ eit) 
    1433                                         { 
    1434                                                 Entity *ent = *eit; 
    1435                                                 ent->setVisible(visible); 
    1436                                         } 
    1437                                 } 
    1438                                 break; 
    1439                         default: 
    1440                                 break; 
    1441                 } 
     1359                OgreMeshInstance *omi = static_cast<OgreMeshInstance *>(entry); 
     1360                omi->GetEntity()->setVisible(visible); 
     1361                //GtpVisibilityPreprocessor::Debug << "assigned id " << omi->GetId() << endl; 
    14421362        } 
    14431363} 
     
    14591379        const bool finalizeViewCells = false; 
    14601380 
    1461         GtpVisibilityPreprocessor::ObjectContainer dummys; 
    14621381        // load the view cells assigning the found objects to the pvss 
    14631382        mViewCellsManager =  
    14641383                GtpVisibilityPreprocessor::ViewCellsManager:: 
    1465                         LoadViewCells(filename, mObjects, dummys, false, &bconverter); 
     1384                        LoadViewCells(filename, mObjects, false, &bconverter); 
    14661385         
    14671386        Ogre::LogManager::getSingleton().logMessage("******** view cells loaded *********"); 
     
    15081427                if (!obj) continue; 
    15091428         
    1510                 switch (obj->Type()) 
    1511                 { 
    1512                         case GtpVisibilityPreprocessor::Intersectable::OGRE_MESH_INSTANCE: 
    1513                                 { 
    1514                                         OgreMeshInstance *omi = static_cast<OgreMeshInstance *>(obj); 
    1515                                         omi->GetEntity()->setVisible(load); 
    1516                                 }                                
    1517                                 break; 
    1518                         case GtpVisibilityPreprocessor::Intersectable::ENGINE_INTERSECTABLE: 
    1519                                 { 
    1520                                         EngineIntersectable *oi = static_cast<EngineIntersectable *>(obj); 
    1521  
    1522                                         EntityContainer *entries = oi->GetItem(); 
    1523  
    1524                                         EntityContainer::const_iterator eit, eit_end = entries->end(); 
    1525  
    1526                                         for (eit = entries->begin(); eit != eit_end; ++ eit) 
    1527                                         { 
    1528                                                 Entity *ent = *eit; 
    1529                                                 ent->setVisible(load);                                   
    1530                                         } 
    1531                                 } 
    1532                                 break; 
    1533                         default: 
    1534                                 LogManager::getSingleton().logMessage("error: should not come here"); 
    1535                                 break; 
    1536                 } 
     1429                OgreMeshInstance *omi = static_cast<OgreMeshInstance *>(obj); 
     1430                omi->GetEntity()->setVisible(load); 
    15371431        } 
    15381432} 
Note: See TracChangeset for help on using the changeset viewer.