Ignore:
Timestamp:
08/30/06 15:10:48 (18 years ago)
Author:
szydlowski
Message:

view cells load/use implemented

Location:
GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/include/TestKdTree.h

    r1296 r1300  
    5050        void createTerrainScene(Real max_x, Real max_y, Real max_z); 
    5151        Vector3 clampToGround(const Vector3& vect, Real offset, Real cap); 
     52 
     53        const String& getViewCellsFileName() const { return mViewCells; } 
    5254protected: 
    5355        KdTreeAppListener *mFrameListener; 
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/include/TestKdTreeAppListener.h

    r1296 r1300  
    100100        }; 
    101101 
     102        enum ViewCellsMode 
     103        { 
     104                VCM_OFF, 
     105                VCM_ON, 
     106                VCM_FILTER, 
     107                VCM_SIZE, 
     108                VCM_NOTSET 
     109        }; 
     110 
    102111        enum ShowTree 
    103112        { 
     
    128137                mBuildMethod(KdTree::KDBM_PRIORITYQUEUE), 
    129138                mSceneType(ST_SIMPLE), 
     139                mViewCells(VCM_OFF), 
    130140                mFastStart(false), 
    131141                mBurnIn(false), 
     
    153163                int mBuildMethod; 
    154164                int mSceneType; 
     165                int mViewCells; 
    155166                bool mFastStart; 
    156167                bool mBurnIn; 
     
    248259 
    249260        // view cells 
     261        bool mViewCellsLoaded; 
    250262        bool mUseViewCells; 
    251263        bool mUseVisibilityFilter; 
     
    268280        Overlay *mDebugOverlay; 
    269281        Overlay *mKdTreeOverlay; 
    270  
     282        Overlay *mLoadingOverlay; 
     283 
     284        OverlayElement *mMyLoadingInfo; 
    271285        OverlayElement *mDemoStatus; 
    272286        TextAreaOverlayElement *mDemoTime; 
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/src/TestKdTree.cpp

    r1296 r1300  
    4141                                .addOpt("","savesceneto", ARGUMENT_REQUIRED) 
    4242                                .addOpt("f","faststart", ARGUMENT_NONE) 
    43                                 .addOpt("b","burnin", ARGUMENT_NONE); 
     43                                .addOpt("b","burnin", ARGUMENT_NONE) 
     44                                .addOpt("v","viewcells", ARGUMENT_OPTIONAL); 
    4445 
    4546 
     
    135136                        } 
    136137 
     138                        if (cmdparser.getOpt("v",tmp)) 
     139                        { 
     140                                if (tmp == "0") 
     141                                        options.mViewCells = KdTreeAppListener::VCM_OFF; 
     142                                else if (tmp == "" || tmp == "1") 
     143                                        options.mViewCells = KdTreeAppListener::VCM_ON; 
     144                                else if (tmp == "2") 
     145                                        options.mViewCells = KdTreeAppListener::VCM_FILTER; 
     146                                else 
     147                                { 
     148                                        MessageBox(NULL, ("Invalid argument for option --viewcells: " + tmp).c_str(), "Error", MB_OK | MB_ICONERROR ); 
     149                                        return -1; 
     150                                } 
     151 
     152                        } 
    137153                } 
    138154                catch (std::string s) 
     
    328344                        mTopCam->setPosition(Vector3(1232, 3990, -1477)); 
    329345 
    330                         // try loading view cells if specified and if scene manager supports it 
    331                         if (!mViewCells.empty()) 
    332                                 mSceneMgr->setOption("LoadViewCells", mViewCells.c_str()); 
     346                        //// try loading view cells if specified and if scene manager supports it 
     347                        //if (!mViewCells.empty()) 
     348                        //      mSceneMgr->setOption("LoadViewCells", mViewCells.c_str()); 
    333349 
    334350                        // sky box 
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/src/TestKdTreeAppListener.cpp

    r1296 r1300  
    114114mShowTree(SHOWTREE_OFF), 
    115115// view cells 
     116mViewCellsLoaded(false), 
    116117mUseViewCells(false), 
    117118mUseVisibilityFilter(false), 
     
    167168        mCamNode = sm->getSceneNode("PlayerCamNode"); 
    168169 
    169         sm->getOption("UseViewCells", &mUseViewCells); 
    170         sm->getOption("UseVisibilityFilter", &mUseVisibilityFilter); 
    171  
    172170        mRaySceneQuery = mSceneMgr->createRayQuery(Ray(mCamNode->getPosition(), Vector3::NEGATIVE_UNIT_Y)); 
    173171 
     
    178176        mDemoTime = 0; 
    179177 
     178        // loading view cells overlay 
     179        mLoadingOverlay = OverlayManager::getSingleton().getByName("Example/Visibility/LoadingOverlay"); 
     180        mMyLoadingInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/Loading/MyLoadingInfo"); 
     181        mMyLoadingInfo->setCaption("loading view cells ..."); 
     182 
     183        mLoadingOverlay->hide(); 
     184 
    180185        initKdTreeOverlay(); 
    181186        initStatsOverlay(); 
     187 
     188        // set view cells 
     189        if (mOptions.mSceneType == ST_GEOMETRY) 
     190        { 
     191                switch(mOptions.mViewCells) 
     192                { 
     193                case VCM_ON: 
     194                        toggleUseViewCells(); 
     195                        break; 
     196                case VCM_FILTER: 
     197                        toggleUseViewCells(); 
     198                        toggleUseVisibilityFilter(); 
     199                        break; 
     200                } 
     201        } 
    182202 
    183203        if (!mOptions.mDemoInfileName.empty()) 
     
    326346                sTC = ": Free"; 
    327347 
    328         if (mSceneMgr->getOption("UseViewCells", &mUseViewCells)) 
     348        if (mSceneMgr->getOption("UseViewCells", &mUseViewCells) && mOptions.mSceneType == ST_GEOMETRY) 
    329349        { 
    330350                if (mUseViewCells) 
     
    335355        else 
    336356        { 
    337                 sVC = NA; 
    338         } 
    339  
    340         if (mSceneMgr->getOption("UseVisibilityFilter", &mUseVisibilityFilter)) 
     357                if (mOptions.mSceneType == ST_GEOMETRY && mOptions.myApp->getViewCellsFileName() != "" &&  
     358                        (mOptions.mSceneManager == SM_KDT ||  
     359                         mOptions.mSceneManager == SM_KTE ||  
     360                         mOptions.mSceneManager == SM_OCM)) 
     361                { 
     362                        sVC = ": off"; 
     363                } 
     364                else 
     365                { 
     366                        sVC = NA; 
     367                } 
     368        } 
     369 
     370        if (mSceneMgr->getOption("UseVisibilityFilter", &mUseVisibilityFilter) && mOptions.mSceneType == ST_GEOMETRY) 
    341371        { 
    342372                if (mUseVisibilityFilter) 
     
    347377        else 
    348378        { 
    349                 sVF = NA; 
     379                if (mOptions.mSceneType == ST_GEOMETRY && mOptions.myApp->getViewCellsFileName() != "" &&  
     380                        (mOptions.mSceneManager == SM_KDT ||  
     381                         mOptions.mSceneManager == SM_KTE ||  
     382                         mOptions.mSceneManager == SM_OCM)) 
     383                { 
     384                        sVF = ": off"; 
     385                } 
     386                else 
     387                { 
     388                        sVF = NA; 
     389                } 
    350390        } 
    351391 
     
    387427void KdTreeAppListener::toggleUseViewCells() 
    388428{ 
     429        // viewcells apply only for scenes loaded from geometry 
     430        if (mOptions.mSceneType != ST_GEOMETRY) 
     431                return; 
     432 
    389433        mUseViewCells = !mUseViewCells; 
     434 
     435 
     436        // load on demand 
     437        if (mUseViewCells && !mViewCellsLoaded) 
     438        { 
     439                mLoadingOverlay->show(); 
     440 
     441                // call once to load view cell loading overlay 
     442                mWindow->update(); 
     443                mViewCellsLoaded = mSceneMgr->setOption("LoadViewCells", mOptions.myApp->getViewCellsFileName().c_str()); 
     444 
     445                if (!mViewCellsLoaded) 
     446                { 
     447                        LogManager::getSingleton().logMessage("#@#@ Error: loading view cells from " +  
     448                                mOptions.myApp->getViewCellsFileName() + " failed."); 
     449                } 
     450 
     451                mLoadingOverlay->hide(); 
     452        } 
     453 
    390454        if (mSceneMgr->setOption("UseViewCells", &mUseViewCells)) 
    391455        { 
Note: See TracChangeset for help on using the changeset viewer.