Ignore:
Timestamp:
07/08/05 01:53:01 (19 years ago)
Author:
mattausch
Message:

added animation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/work/TestCullingTerrain/TerrainFrameListener.cpp

    r159 r160  
    1111#include "OgreItemBufferQueryManager.h" 
    1212#include "OgreOcclusionQueriesQueryManager.h" 
    13  
    14  
    15  
     13#include "TestCullingTerrainApplication.h" 
    1614 
    1715// output file for frame info 
     
    4846}; 
    4947 
     48Real currentObjectTerrainOffsets[] =  
     49{ 
     50        0, 
     51        7, 
     52        0 
     53}; 
     54Real currentObjectScales[] =  
     55{ 
     56        0.1, 
     57        0.1, 
     58        0.07 
     59}; 
    5060//----------------------------------------------------------------------- 
    5161TerrainFrameListener::TerrainFrameListener(RenderWindow* win, Camera* cam,  
     
    5565                                                                           Camera *vizCamera, 
    5666                                                                           SceneNode *camNode, 
    57                                                                            Light *sunLight):  
     67                                                                           Light *sunLight, 
     68                                                                           TestCullingTerrainApplication *app):  
    5869mCamera(cam), 
    5970mWindow(win), 
     
    7990mAppState(WALKTHROUGH), 
    8091mCurrentFrame(0), 
    81 mTimeElapsed(0), 
     92mReplayTimeElapsed(0), 
    8293mRotateSpeed(72), 
    8394mMoveSpeed(50), 
     
    105116mDelayedTraversedNodes(0.0), 
    106117mUseItemBuffer(false), 
    107 mRenderPatchesForItemBuffer(false) 
     118mRenderPatchesForItemBuffer(false), 
     119mCurrentObjectType(0), 
     120mApplication(app) 
    108121{ 
    109122        //mInputDevice = PlatformManager::getSingleton().createInputReader(); 
     
    118131        mEventProcessor->addKeyListener(this); 
    119132 
    120         mInputDevice = mEventProcessor->getInputReader(); 
    121          
     133        mInputDevice = mEventProcessor->getInputReader();        
    122134 
    123135        // create ray query executor, used to place objects in terrain 
    124136        mRayQueryExecutor = new RayQueryExecutor(mSceneMgr); 
    125137         
     138        //-- overlays 
     139        mDebugOverlay = OverlayManager::getSingleton().getByName("Core/DebugOverlay"); 
    126140        mHelpOverlay = OverlayManager::getSingleton().getByName("Example/Visibility/HelpOverlay");  
    127         mDebugOverlay = OverlayManager::getSingleton().getByName("Core/DebugOverlay"); 
    128141        mQueryOverlay = OverlayManager::getSingleton().getByName("Example/Visibility/QueryOverlay");  
    129  
    130         //-- visibility culling stats overlay 
    131         mCullStatsOverlay = OverlayManager::getSingleton().getByName("Example/Visibility/DemoOverlay");  
    132          
    133         mAlgorithmInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/AlgorithmInfo"); 
    134         mThresholdInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/ThresholdInfo"); 
    135         mTestGeometryForVisibleLeavesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/TestGeometryForVisibleLeavesInfo"); 
    136         mUseDepthPassInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/UseDepthPassInfo"); 
    137         mAssumedVisibilityInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/AssumedVisibilityInfo"); 
    138  
    139         mFrustumCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/FrustumCulledNodesInfo"); 
    140         mQueryCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/QueryCulledNodesInfo"); 
    141     mTraversedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/TraversedNodesInfo"); 
    142         mHierarchyNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/HierarchyNodesInfo"); 
    143         mRenderedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/RenderedNodesInfo"); 
    144         mObjectsInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/ObjectsInfo"); 
    145         mQueriesIssuedInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/QueriesIssuedInfo"); 
    146         mDelayedQueriesIssuedInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/DelayedQueriesIssuedInfo"); 
    147         mDelayedTraversedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/DelayedTraversedNodesInfo"); 
    148  
    149         mAlgorithmInfo->setCaption(": " + currentAlgorithmCaptions[mCurrentAlgorithm]); 
    150         mThresholdInfo->setCaption(": 0"); 
    151         mFrustumCulledNodesInfo->setCaption(": 0"); 
    152         mQueryCulledNodesInfo->setCaption(": 0"); 
    153         mTraversedNodesInfo->setCaption(": 0"); 
    154         mHierarchyNodesInfo->setCaption(": 0"); 
    155         mRenderedNodesInfo->setCaption(": 0"); 
    156         mObjectsInfo->setCaption(": 0"); 
    157         mTestGeometryForVisibleLeavesInfo->setCaption(": true"); 
    158         mUseDepthPassInfo->setCaption(": false"); 
    159         mQueriesIssuedInfo->setCaption(": 0"); 
    160         mAssumedVisibilityInfo->setCaption(": 0"); 
    161         mDelayedQueriesIssuedInfo->setCaption(": 0"); 
    162         mDelayedTraversedNodesInfo->setCaption(": 0"); 
    163  
    164         //-- visibility query stats overlay 
    165         mQueryTypeInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/Query/QueryTypeInfo"); 
    166          
    167         mQueryVisibleNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/Query/VisibleNodesInfo"); 
    168     mQueryVisibleGeometryInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/Query/VisibleGeometryInfo"); 
    169         mQueryVisiblePatchInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/Query/VisiblePatchInfo"); 
    170          
    171         mQueryNodeVisibilityInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/Query/NodeVisibilityInfo"); 
    172         mQueryGeometryVisibilityInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/Query/GeometryVisibilityInfo"); 
    173         mQueryPatchVisibilityInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/Query/PatchVisibilityInfo"); 
     142        mCullStatsOverlay = OverlayManager::getSingleton().getByName("Example/Visibility/CullStatsOverlay");  
     143 
     144        initVisStatsOverlay(); // visibility stats overlay 
     145        initHelpOverlay(); // help overlay 
     146        initQueryOverlay(); // visibility query stats overlay 
    174147 
    175148        // show stats overlays 
    176149        showStats(true); 
    177         //mHelpOverlay->show(); 
    178  
     150         
    179151        // set culling algorithm type 
    180152        setAlgorithm(mCurrentAlgorithm); 
     
    193165        mSceneMgr->setOption("CullCamera", &mCullCamera); 
    194166        mSceneMgr->setOption("PrepareVisualization", &mShowVisualization); 
     167 
     168        setObjectType(mCurrentObjectType); 
    195169 
    196170        // reset statistics 
     
    229203                 //Vector3 queryResult; mRayQueryExecutor->executeRayQuery(&queryResult, mouseRay); 
    230204                  
    231                  // Get results, create a node/entity on the position 
     205                 // get results, create a node/entity on the position 
    232206                 mCurrentObject = mTerrainContentGenerator->GenerateSceneObject( 
    233                          mouseRay.getOrigin()/*queryResult*/, Vector3::ZERO, "robot"); 
     207                         mouseRay.getOrigin()/*queryResult*/, Vector3::ZERO,  
     208                         mApplication->getCurrentObjectCaption(mCurrentObjectType)); 
    234209                 
     210                 if (mCurrentObjectType == 0) // only robot has animation phases 
     211                 { 
     212                         Entity *ent = mTerrainContentGenerator->GetGeneratedEntities()->back(); 
     213                         AnimationState *st = ent->getAnimationState("Walk"); 
     214 
     215                         st->setLoop(true); 
     216                         st->setEnabled(true); 
     217                                         
     218                         mApplication->getAnimationStates().push_back(st); 
     219                         mApplication->getAnimationSpeed().push_back(Math::RangeRandom(0.5, 1.5)); 
     220                 } 
     221 
    235222         mLMouseDown = true;  
    236223     } 
     
    271258                         if (mCurrentObject) 
    272259                         { 
     260                                 // apply offset so object is ON terrain 
     261                                 queryResult.y += currentObjectTerrainOffsets[mCurrentObjectType]; 
     262 
    273263                                 mCurrentObject->setPosition(queryResult); 
    274264                         } 
     
    292282        } 
    293283 
     284        for (int i = 0; i < (int)mApplication->getAnimationStates().size(); ++i) 
     285    { 
     286                mApplication->getAnimationStates()[i]->addTime(evt.timeSinceLastFrame *  
     287                         mApplication->getAnimationSpeed()[i]); 
     288    } 
     289 
    294290        if (mDisplayCameraDetails) 
    295291    { 
     
    299295    } 
    300296 
    301         //-- IMPORTANT: must be set, otherwise terrain is not rendered correctly 
    302         mSceneMgr->endFrame(); 
    303  
    304297        //-- setup what is needed for immediate mouse/key movement 
    305298        if (mTimeDelay >= 0)  
     
    307300                mTimeDelay -= evt.timeSinceLastFrame; 
    308301        } 
    309  
     302         
    310303        // If this is the first frame, pick a speed 
    311304        if (evt.timeSinceLastFrame == 0) 
     
    387380} 
    388381//----------------------------------------------------------------------- 
    389 void TerrainFrameListener::ApplyVisibilityQuery(bool fromPoint, bool relativeVisibility,  
     382void TerrainFrameListener::applyVisibilityQuery(bool fromPoint, bool relativeVisibility,  
    390383                                                                                                bool useItemBuffer) 
    391384{ 
     
    523516 
    524517        // show the results 
    525         if (!mShowQueryStats) 
     518        if (!mShowQueryStats && !mShowHelp) 
    526519        { 
    527520                mQueryOverlay->show(); 
     
    552545 
    553546    updateStats(); 
     547 
     548        //-- IMPORTANT: must be set, otherwise terrain is not rendered correctly 
     549        mSceneMgr->endFrame(); 
     550 
     551        if (mTimeDelay <= 0) // approx. one second 
     552                mTimeDelay = 1.0; 
    554553 
    555554        return true; 
     
    660659 
    661660                        //-- initialise frame data 
    662                         mTimeElapsed = 0; 
     661                        mReplayTimeElapsed = 0; 
    663662 
    664663                        mCamNode->setPosition(mFrameInfo[0].position); 
     
    716715} 
    717716//----------------------------------------------------------------------- 
     717void TerrainFrameListener::setObjectType(int objectType) 
     718{ 
     719        if (mCurrentObjectType >= 3) 
     720                mCurrentObjectType = 0; 
     721 
     722        // parameters for new object 
     723        mTerrainContentGenerator->SetOffset(currentObjectTerrainOffsets[mCurrentObjectType]); 
     724        Real scale = currentObjectScales[mCurrentObjectType]; 
     725        mTerrainContentGenerator->SetScale(Vector3(scale, scale, scale)); 
     726 
     727        mCurrentObjectTypeInfo->setCaption(": " +  
     728                mApplication->getCurrentObjectCaption(mCurrentObjectType)); 
     729} 
     730//----------------------------------------------------------------------- 
    718731void TerrainFrameListener::setAlgorithm(int algorithm) 
    719732{ 
     
    739752        static String trisString = "Triangle Count: "; 
    740753 
     754        // HACK: compute average fps ourselfs, because ogre avg. fps is wrong 
     755        // TODO: update only once per second 
    741756        mAvgFps += mWindow->getStatistics().lastFPS; 
    742757        ++ mFrameCount; 
     
    755770 
    756771                //guiAvg->setCaption(avgFps + StringConverter::toString(stats.avgFPS)); 
    757                 guiAvg->setCaption(avgFpsString + StringConverter::toString(avgFps)); 
     772                if (mTimeDelay < 0) // only update once per second 
     773                        guiAvg->setCaption(avgFpsString + StringConverter::toString(avgFps) + " ms"); 
    758774                guiCurr->setCaption(currFpsString + StringConverter::toString(stats.lastFPS)); 
    759775                guiBest->setCaption(bestFpsString + StringConverter::toString(stats.bestFPS) 
    760                         +" "+StringConverter::toString(stats.bestFrameTime)+" ms"); 
     776                        +" "+StringConverter::toString(stats.bestFrameTime) + " ms"); 
    761777                guiWorst->setCaption(worstFpsString + StringConverter::toString(stats.worstFPS) 
    762                         +" "+StringConverter::toString(stats.worstFrameTime)+" ms"); 
     778                        +" "+StringConverter::toString(stats.worstFrameTime) + " ms"); 
    763779 
    764780                OverlayElement* guiTris = OverlayManager::getSingleton().getOverlayElement("Core/NumTris"); 
     
    772788                mFrustumCulledNodesInfo->setCaption(str); 
    773789 
    774                 // delay so there is no jump 
    775                 mSceneMgr->getOption("NumQueriesIssued", &opt);  
    776                 sprintf(str,": %d", (int)opt);  
    777                 mQueriesIssuedInfo->setCaption(str); 
    778  
    779790                mSceneMgr->getOption("NumQueryCulledNodes", &opt); sprintf(str,": %d", opt);  
    780791                mQueryCulledNodesInfo->setCaption(str); 
    781792         
    782                 mSceneMgr->getOption("NumTraversedNodes", &opt); sprintf(str,": %d", opt);  
    783                 mTraversedNodesInfo->setCaption(str); 
    784  
    785793                mSceneMgr->getOption("NumHierarchyNodes", &opt); sprintf(str,": %d", opt);  
    786794                mHierarchyNodesInfo->setCaption(str); 
     
    790798 
    791799                sprintf(str,": %d", mTerrainContentGenerator->GetObjectCount());  
    792                 mObjectsInfo->setCaption(str); 
    793  
    794                 // delay so there is no jump 
     800                mObjectsCountInfo->setCaption(str); 
     801 
     802                // take old value into account in order to create no sudden changes 
    795803                mSceneMgr->getOption("NumQueriesIssued", &opt);  
    796804                mDelayedQueriesIssued = mDelayedQueriesIssued * 0.8 + (float)opt * 0.2; 
    797805                sprintf(str,": %d", (int)mDelayedQueriesIssued);  
    798                 mDelayedQueriesIssuedInfo->setCaption(str); 
     806                mQueriesIssuedInfo->setCaption(str); 
    799807 
    800808                mSceneMgr->getOption("NumTraversedNodes", &opt);  
    801809                mDelayedTraversedNodes = mDelayedTraversedNodes * 0.8 + (float)opt * 0.2; 
    802810                sprintf(str,": %d", (int)mDelayedTraversedNodes);  
    803                 mDelayedTraversedNodesInfo->setCaption(str); 
     811                mTraversedNodesInfo->setCaption(str); 
    804812 
    805813        } 
     
    815823        mSceneMgr->setOption("TestGeometryForVisibleLeaves", &mTestGeometryForVisibleLeaves); 
    816824         
    817         // disable optimization which tests geometry instead of aabb 
    818         // for delayed rendering (i.e., render transparents after all the solids) 
    819         // because otherwise visible transparents could be skipped 
     825        /* disable optimization which tests geometry instead of aabb 
     826         * for "delayed" rendering of transparents (i.e., render transparents after all the solids) 
     827         * because otherwise visible transparents could be skipped 
     828         */ 
    820829        bool delayedRendering = !mTestGeometryForVisibleLeaves; 
    821830 
     
    928937void TerrainFrameListener::keyPressed(KeyEvent* e) 
    929938{ 
     939        // hide exact visibility query overlay 
     940        if (mShowQueryStats) 
     941        { 
     942                mQueryOverlay->hide(); 
     943                mShowQueryStats = false; 
     944        } 
     945 
    930946        switch(e->getKey()) 
    931947        { 
     
    9971013                break; 
    9981014        case KC_F5: 
    999                 ApplyVisibilityQuery(false, mShiftPressed, mUseItemBuffer); 
     1015                applyVisibilityQuery(false, mShiftPressed, mUseItemBuffer); 
    10001016                break; 
    10011017        case KC_F6: 
    1002                 ApplyVisibilityQuery(true, mShiftPressed, mUseItemBuffer); 
     1018                applyVisibilityQuery(true, mShiftPressed, mUseItemBuffer); 
     1019                break; 
     1020         
     1021        case KC_F7: 
     1022                setObjectType(++mCurrentObjectType); 
     1023                break; 
     1024        case KC_F8: 
     1025                mApplication->generateScene(500, mCurrentObjectType); 
    10031026                break; 
    10041027         
     
    10181041        case KC_LSHIFT: 
    10191042                mShiftPressed = true; 
     1043                break; 
     1044        case KC_DELETE: 
     1045                mTerrainContentGenerator->RemoveGeneratedObjects(); 
     1046                mApplication->getAnimationStates().clear(); 
     1047                mApplication->getAnimationSpeed().clear(); 
    10201048                break; 
    10211049        //KEY_PRESSED(KC_F3, 0.3, writeFrames()); 
     
    10601088{ 
    10611089        //-- find current frame relative to elapsed frame time           
    1062         mTimeElapsed -= timeElapsed; 
    1063  
    1064         while ((mTimeElapsed <= 0) && (mCurrentFrame < (int)mFrameInfo.size() - 1)) 
    1065         { 
    1066                 mTimeElapsed += mFrameInfo[mCurrentFrame ++].timeElapsed; 
     1090        mReplayTimeElapsed -= timeElapsed; 
     1091 
     1092        while ((mReplayTimeElapsed <= 0) && (mCurrentFrame < (int)mFrameInfo.size() - 1)) 
     1093        { 
     1094                mReplayTimeElapsed += mFrameInfo[mCurrentFrame ++].timeElapsed; 
    10671095        } 
    10681096 
     
    10751103        if (old_frame.timeElapsed > 0) 
    10761104        { 
    1077                 factor = mTimeElapsed / old_frame.timeElapsed; 
     1105                factor = mReplayTimeElapsed / old_frame.timeElapsed; 
    10781106        } 
    10791107 
     
    12411269        } 
    12421270} 
     1271//----------------------------------------------------------------------- 
     1272void TerrainFrameListener::initOverlayElement(OverlayElement **elInfo, String ext,  
     1273                                                                                          String name, int top, String caption) 
     1274{ 
     1275        OverlayElement *el =  
     1276                OverlayManager::getSingleton().getOverlayElement(ext + name); 
     1277 
     1278        (*elInfo) = OverlayManager::getSingleton().getOverlayElement(ext + name + "Info"); 
     1279        (*elInfo)->setCaption(caption); 
     1280 
     1281        el->setTop(top); 
     1282        (*elInfo)->setTop(top); 
     1283} 
     1284//----------------------------------------------------------------------- 
     1285void TerrainFrameListener::initHelpOverlayElement(String name, int top) 
     1286{ 
     1287        OverlayElement *el = OverlayManager::getSingleton().getOverlayElement( 
     1288                "Example/Visibility/Help/" + name); 
     1289 
     1290        el->setTop(top); 
     1291} 
     1292//----------------------------------------------------------------------- 
     1293void TerrainFrameListener::initHelpOverlay() 
     1294{ 
     1295        const int vert_space = 15; 
     1296        int top = 30; 
     1297 
     1298        initHelpOverlayElement("ShowHelp", top); top += vert_space; 
     1299        initHelpOverlayElement("Stats", top); top += vert_space; 
     1300        initHelpOverlayElement("AppState", top); top += vert_space; 
     1301        initHelpOverlayElement("Recorded", top); top += vert_space; 
     1302        initHelpOverlayElement("Screenshots", top); top += vert_space; 
     1303        initHelpOverlayElement("WriteOut", top); top += vert_space; 
     1304 
     1305        top +=vert_space; 
     1306        initHelpOverlayElement("SceneDetail", top); top += vert_space; 
     1307        initHelpOverlayElement("DisplayCameraDetails", top); top += vert_space; 
     1308        initHelpOverlayElement("DisplayOctree", top); top += vert_space; 
     1309        initHelpOverlayElement("UseShadows", top); top += vert_space; 
     1310        initHelpOverlayElement("Filter", top); top += vert_space; 
     1311 
     1312        //-- visualization 
     1313        top += vert_space; 
     1314        initHelpOverlayElement("VizSection", top); top += vert_space; 
     1315        initHelpOverlayElement("Viz", top); top += vert_space; 
     1316        initHelpOverlayElement("NextVizMode", top); top += vert_space; 
     1317        initHelpOverlayElement("ZoomViz", top); top += vert_space; 
     1318 
     1319 
     1320        //-- visibility queries 
     1321        top += vert_space; 
     1322        initHelpOverlayElement("VisQuery", top); top += vert_space; 
     1323        initHelpOverlayElement("FromCameraQuery", top); top += vert_space; 
     1324        initHelpOverlayElement("FromPointQuery", top); top += vert_space; 
     1325        initHelpOverlayElement("QueryType", top); top += vert_space; 
     1326        initHelpOverlayElement("QueryTarget", top); top += vert_space; 
     1327 
     1328        //-- object generation 
     1329        top += vert_space; 
     1330        initHelpOverlayElement("SceneObjects", top); top += vert_space; 
     1331        initHelpOverlayElement("GenerateObjects", top); top += vert_space; 
     1332        initHelpOverlayElement("RemoveObjects", top); top += vert_space; 
     1333        initHelpOverlayElement("DropObject", top); top += vert_space; 
     1334 
     1335        OverlayElement *helpPanel = OverlayManager::getSingleton().getOverlayElement( 
     1336                "Example/Visibility/Help/HelpPanel"); 
     1337 
     1338        helpPanel->setHeight(top + 10); 
     1339} 
     1340//----------------------------------------------------------------------- 
     1341void TerrainFrameListener::initVisStatsOverlay() 
     1342{ 
     1343        const int border_height = 10; 
     1344        const int vert_space = 15; 
     1345 
     1346        //-- visibility culling stats overlay 
     1347        int top = border_height; 
     1348 
     1349        String ext = "Example/Visibility/"; 
     1350         
     1351        initOverlayElement(&mAlgorithmInfo, ext, "Algorithm", top, 
     1352                ": " + currentAlgorithmCaptions[mCurrentAlgorithm]); top += vert_space; 
     1353 
     1354        initOverlayElement(&mThresholdInfo, ext, "Threshold", top, ": 0"); top += vert_space; 
     1355        initOverlayElement(&mTestGeometryForVisibleLeavesInfo, ext,  
     1356                "TestGeometryForVisibleLeaves", top, ": true"); top += vert_space; 
     1357        initOverlayElement(&mUseDepthPassInfo, ext, "UseDepthPass", top, ": false"); top += vert_space; 
     1358        initOverlayElement(&mAssumedVisibilityInfo, ext, "AssumedVisibility", top, ": 0"); top += vert_space; 
     1359        initOverlayElement(&mCurrentObjectTypeInfo, ext, "CurrentObjectType", top, ": "); top += vert_space; 
     1360 
     1361        OverlayElement *optionsPanel = OverlayManager::getSingleton(). 
     1362                getOverlayElement("Example/Visibility/VisibilityPanel"); 
     1363 
     1364        optionsPanel->setHeight(top + border_height); 
     1365 
     1366        top = border_height; 
     1367        //ext = "Example/Visibility/"; 
     1368        initOverlayElement(&mFrustumCulledNodesInfo, ext, "FrustumCulledNodes", top, ": 0"); top += vert_space; 
     1369        initOverlayElement(&mQueryCulledNodesInfo, ext, "QueryCulledNodes", top, ": 0"); top += vert_space; 
     1370        initOverlayElement(&mTraversedNodesInfo, ext, "TraversedNodes", top, ": 0"); top += vert_space; 
     1371        initOverlayElement(&mHierarchyNodesInfo, ext, "HierarchyNodes", top, ": 0"); top += vert_space; 
     1372        initOverlayElement(&mRenderedNodesInfo, ext, "RenderedNodes", top, ": 0"); top += vert_space; 
     1373        initOverlayElement(&mObjectsCountInfo, ext, "ObjectsCount", top, ": 0"); top += vert_space; 
     1374        initOverlayElement(&mQueriesIssuedInfo, ext, "QueriesIssued", top, ": 0"); top += vert_space; 
     1375 
     1376        OverlayElement *visPanel = OverlayManager::getSingleton(). 
     1377                getOverlayElement("Example/Visibility/VisibilityStatsPanel"); 
     1378 
     1379        visPanel->setHeight(top + border_height); 
     1380} 
     1381//----------------------------------------------------------------------- 
     1382void TerrainFrameListener::initQueryOverlay() 
     1383{ 
     1384        const int border_height = 10; 
     1385        const int vert_space = 15; 
     1386 
     1387        //-- visibility culling stats overlay 
     1388        int top = border_height + 25; 
     1389 
     1390        String ext = "Example/Visibility/Query/"; 
     1391             
     1392        initOverlayElement(&mQueryTypeInfo , ext, "QueryType", top,     ": 0"); top += vert_space; 
     1393        initOverlayElement(&mQueryVisibleGeometryInfo , ext, "VisibleGeometry", top,    ": 0"); top += vert_space; 
     1394        initOverlayElement(&mQueryVisibleNodesInfo , ext, "VisibleNodes", top,  ": 0"); top += vert_space; 
     1395        initOverlayElement(&mQueryVisiblePatchInfo , ext, "VisiblePatches", top,        ": 0"); top += vert_space; 
     1396        initOverlayElement(&mQueryNodeVisibilityInfo , ext, "NodeVisibility", top,      ": 0"); top += vert_space; 
     1397        initOverlayElement(&mQueryGeometryVisibilityInfo , ext, "GeometryVisibility", top,      ": 0"); top += vert_space; 
     1398        initOverlayElement(&mQueryPatchVisibilityInfo , ext, "PatchVisibility", top,    ": 0"); top += vert_space; 
     1399 
     1400 
     1401        OverlayElement *queryPanel = OverlayManager::getSingleton(). 
     1402                getOverlayElement("Example/Visibility/Query/QueryPanel"); 
     1403 
     1404        queryPanel->setHeight(top + border_height); 
     1405} 
Note: See TracChangeset for help on using the changeset viewer.