Changeset 1211


Ignore:
Timestamp:
08/17/06 18:04:15 (18 years ago)
Author:
szydlowski
Message:

enhanced visibility (none/full/partial) implemented for internal culling

Files:
7 edited

Legend:

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

    r1205 r1211  
    7272        }; 
    7373 
     74        enum ShowTree 
     75        { 
     76                SHOWTREE_OFF, 
     77                SHOWTREE_HILITE, 
     78                SHOWTREE_ALL, 
     79                SHOWTREE_MODES_NUM 
     80        }; 
     81 
    7482        enum AppState 
    7583        { 
     
    113121                bool useBufferedInputKeys = false, bool useBufferedInputMouse = false); 
    114122 
    115     virtual ~KdTreeAppListener(); 
     123    virtual ~KdTreeAppListener(void); 
    116124 
    117125        void initOverlayElement(OverlayElement **elInfo, String ext,  
    118126                String name, int top, String caption); 
    119127 
    120         void initStatsOverlay(); 
    121  
    122         void initKdTreeOverlay(); 
     128        void initStatsOverlay(void); 
     129 
     130        void initKdTreeOverlay(void); 
    123131 
    124132        void showDebugOverlay(bool show); 
    125133 
    126         void toggleVizCamera(); 
     134        void toggleVizCamera(void); 
     135 
     136        void toggleShowBoxes(void); 
     137 
     138        void toggleEnhancedVisibility(void); 
     139 
     140        void toggleBuildMethod(void); 
     141 
     142        void toggleRenderMethod(void); 
    127143 
    128144    virtual bool processUnbufferedKeyInput(const FrameEvent& evt); 
     
    130146    bool processUnbufferedMouseInput(const FrameEvent& evt); 
    131147 
    132         void moveCamera(); 
     148        void moveCamera(void); 
    133149 
    134150    // Override frameStarted event to process that (don't care about frameEnded) 
     
    137153    bool frameEnded(const FrameEvent& evt); 
    138154 
    139         void switchMouseMode(); 
    140  
    141         void switchKeyMode(); 
     155        void switchMouseMode(void); 
     156 
     157        void switchKeyMode(void); 
    142158 
    143159        void keyClicked(KeyEvent* e); 
     
    146162        void keyReleased(KeyEvent* e) {}; 
    147163 
    148  
     164        const static String NA; 
    149165protected: 
    150166        // basic 
     
    163179 
    164180        bool mVizCamera; 
    165         bool mShowTree; 
    166181        bool mFreeMove; 
    167182        bool mTopCamFollow; 
     183 
     184        int mShowTree; 
    168185 
    169186        // counters 
     
    187204        OverlayElement *mDemoStatus; 
    188205 
     206 
     207        OverlayElement *mRenderMethodInfo; 
     208        OverlayElement *mEnhancedVisInfo; 
     209        OverlayElement *mBuildMethodInfo; 
    189210        OverlayElement *mKdTreeMaxDepthInfo; 
     211        OverlayElement *mHighlightLevelInfo; 
    190212        OverlayElement *mKTInfo; 
    191213        OverlayElement *mKIInfo; 
    192         OverlayElement *mHighlightLevelInfo; 
    193         OverlayElement *mBuildMethodInfo; 
    194         OverlayElement *mRenderMethodInfo; 
    195214        OverlayElement *mMovementInfo; 
    196215        OverlayElement *mTopCamInfo; 
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/src/TestKdTreeAppListener.cpp

    r1205 r1211  
    55#include "TestKdTreeAppListener.h" 
    66#include <windows.h> 
     7 
     8const String KdTreeAppListener::NA = ": N/A"; 
    79 
    810void KdTreeAppListener::updateStats(void) 
     
    8688mStatsOn(true), 
    8789mVizCamera(false), 
    88 mShowTree(false), 
    8990mFreeMove(false), 
    9091mTopCamFollow(true), 
     92mShowTree(SHOWTREE_OFF), 
    9193//counters 
    9294mSeqNum(0), 
     
    217219        const int border_height = 10; 
    218220        const int vert_space = 15; 
    219         const String na = ": N/A"; 
    220         String sMD, sKT, sKI, sHL, sBM, sRM, sFM, sTC; 
     221        String sMD, sKT, sKI, sHL, sBM, sRM, sFM, sTC, sEV; 
    221222 
    222223        int top = border_height; 
     
    228229                sMD = ": " + StringConverter::toString(maxd); 
    229230        else 
    230                 sMD = na; 
     231                sMD = NA; 
    231232 
    232233        Real kt; 
     
    234235                sKT = ": " + StringConverter::toString(kt); 
    235236        else 
    236                 sKT = na; 
     237                sKT = NA; 
    237238 
    238239        Real ki; 
     
    240241                sKI = ": " + StringConverter::toString(ki); 
    241242        else 
    242                 sKI = na; 
     243                sKI = NA; 
    243244 
    244245        int hl; 
     
    246247                sHL = ": " + StringConverter::toString(hl); 
    247248        else 
    248                 sHL = na; 
    249         if (!mShowTree) 
     249                sHL = NA; 
     250        if (mShowTree == SHOWTREE_OFF) 
    250251                sHL = ": off"; 
    251252 
     
    254255                sBM = ": " + bm; 
    255256        else 
    256                 sBM = na; 
     257                sBM = NA; 
    257258 
    258259        String rm; 
     
    268269                        sRM = ": Coherent Hierarchical Culling"; 
    269270                else 
    270                         sRM = na; 
    271         } 
    272         else 
    273                 sRM = na; 
    274  
    275         sFM = na; 
     271                        sRM = NA; 
     272        } 
     273        else 
     274                sRM = NA; 
     275 
     276        bool enh; 
     277        if (mSceneMgr->getOption("EnhancedVisibility", &enh)) 
     278        { 
     279                if (enh) 
     280                        sEV = ": Enhanced"; 
     281                else 
     282                        sEV = ": Simple"; 
     283        } 
     284        else 
     285        { 
     286                sEV = NA; 
     287        } 
     288 
     289        sFM = NA; 
    276290        if (mFreeMove) 
    277291                sFM = ": Free"; 
     
    279293                sFM = ": Ground"; 
    280294 
    281         sTC = na; 
     295        sTC = NA; 
    282296        if (mTopCamFollow) 
    283297                sTC = ": Follow"; 
     
    286300 
    287301        initOverlayElement(&mRenderMethodInfo, ext, "RenderMethod", top, sRM); top += vert_space; 
     302        initOverlayElement(&mEnhancedVisInfo, ext, "EnhancedVis", top, sEV); top += vert_space; 
    288303        initOverlayElement(&mBuildMethodInfo, ext, "BuildMethod", top, sBM); top += vert_space; 
    289304        initOverlayElement(&mKdTreeMaxDepthInfo, ext, "KdTreeMaxDepth", top, sMD); top += vert_space; 
     
    353368} 
    354369 
     370void KdTreeAppListener::toggleShowBoxes() 
     371{ 
     372        mShowTree = (mShowTree + 1) % SHOWTREE_MODES_NUM; 
     373        bool show = false, all = false; 
     374 
     375        switch (mShowTree) 
     376        { 
     377        case SHOWTREE_OFF: 
     378                break; 
     379        case SHOWTREE_HILITE: 
     380                show = true; 
     381                break; 
     382        case SHOWTREE_ALL: 
     383                show = all = true; 
     384                break; 
     385        } 
     386 
     387        // set display 
     388 
     389        if (mSceneMgr->getTypeName() == "OctreeSceneManager") 
     390                mSceneMgr->setOption("ShowOctree", &show); 
     391        else if (mSceneMgr->getTypeName() == "KdTreeSceneManager") 
     392                mSceneMgr->setOption("ShowKdTree", &show); 
     393 
     394        // set showall 
     395        mSceneMgr->setOption("ShowAllBoxes", &all); 
     396 
     397        if (!show) 
     398                mHighlightLevelInfo->setCaption(": off"); 
     399        else 
     400        { 
     401                int hl; 
     402                if (mSceneMgr->getOption("HiLiteLevel", &hl)) 
     403                        mHighlightLevelInfo->setCaption(": " + StringConverter::toString(hl)); 
     404                else 
     405                        mHighlightLevelInfo->setCaption(NA); 
     406        } 
     407} 
     408 
     409void KdTreeAppListener::toggleEnhancedVisibility() 
     410{ 
     411        bool mode; 
     412        if (mSceneMgr->getOption("EnhancedVisibility", &mode)) 
     413        { 
     414                mode = !mode; 
     415                if (mSceneMgr->setOption("EnhancedVisibility", &mode)) 
     416                { 
     417                        if (mode) 
     418                                mEnhancedVisInfo->setCaption(": Enhanced"); 
     419                        else 
     420                                mEnhancedVisInfo->setCaption(": Simple"); 
     421                } 
     422        } 
     423        else 
     424        { 
     425                mEnhancedVisInfo->setCaption(NA); 
     426        } 
     427} 
     428 
     429void KdTreeAppListener::toggleBuildMethod() 
     430{ 
     431        static String bmOptions[] = { "Recursive", "PriorityQueue" }; 
     432        static String bmOptionCaptions[] = { ": Recursive", ": PriorityQueue" }; 
     433        static int bmOptionsSize = sizeof(bmOptions) / sizeof(String); 
     434        static int bmCurrent = 0; 
     435 
     436        String bm; 
     437        if (mSceneMgr->getOption("BuildMethod", &bm)) 
     438        { 
     439                for (int idx = 0; idx < bmOptionsSize; idx++) 
     440                        if (bmOptions[idx] == bm) 
     441                                bmCurrent = idx; 
     442                bmCurrent = (bmCurrent + 1) % bmOptionsSize; 
     443                if (mSceneMgr->setOption("BuildMethod", &bmOptions[bmCurrent])) 
     444                        mBuildMethodInfo->setCaption(bmOptionCaptions[bmCurrent]); 
     445        } 
     446        else 
     447        { 
     448                mBuildMethodInfo->setCaption(NA); 
     449        } 
     450} 
     451 
     452void KdTreeAppListener::toggleRenderMethod() 
     453{ 
     454        static String rmOptions[] = { "INT", "VFC", "SWC", "CHC" }; 
     455        static String rmOptionCaptions[] = 
     456        { 
     457                ": Internal Frustum Culling", 
     458                ": View Frustum Culling",  
     459                ": Stop and Wait Culling", 
     460                ": Coherent Hierarchical Culling" 
     461        }; 
     462        static int rmOptionsSize = sizeof(rmOptions) / sizeof (String); 
     463        static int rmCurrent = 0; 
     464 
     465        String rm; 
     466        if (mSceneMgr->getOption("RenderMethod", &rm)) 
     467        { 
     468                for (int idx = 0; idx < rmOptionsSize; idx++) 
     469                        if (rmOptions[idx] == rm) 
     470                                rmCurrent = idx; 
     471                rmCurrent = (rmCurrent + 1) % rmOptionsSize; 
     472                if (mSceneMgr->setOption("RenderMethod", &rmOptions[rmCurrent])) 
     473                        mRenderMethodInfo->setCaption(rmOptionCaptions[rmCurrent]); 
     474        } 
     475        else 
     476        { 
     477                mRenderMethodInfo->setCaption(NA); 
     478        } 
     479} 
     480 
    355481bool KdTreeAppListener::processUnbufferedKeyInput(const FrameEvent& evt) 
    356482{ 
     
    364490        } 
    365491 
     492        if (mInputDevice->isKeyDown(KC_F1) && mTimeUntilNextToggle <= 0) 
     493        { 
     494                // TODO show help overlay 
     495        } 
     496 
     497        // show/hide vis viewport 
     498        if (mInputDevice->isKeyDown(KC_F2) && mTimeUntilNextToggle <= 0) 
     499        { 
     500                toggleVizCamera(); 
     501                mTimeUntilNextToggle = 0.5; 
     502        } 
     503 
     504        // show/hide kdtree boxes 
     505        if (mInputDevice->isKeyDown(KC_F3) && mTimeUntilNextToggle <= 0) 
     506        { 
     507                toggleShowBoxes(); 
     508                mTimeUntilNextToggle = 0.5; 
     509        } 
     510 
     511        if (mInputDevice->isKeyDown(KC_F4) && mTimeUntilNextToggle <= 0) 
     512        { 
     513                bool toggleShow; 
     514                mSceneMgr->getOption("ShowNodes", &toggleShow); 
     515                toggleShow = !toggleShow; 
     516                mSceneMgr->setOption("ShowNodes", &toggleShow); 
     517                mTimeUntilNextToggle = 0.5; 
     518        } 
     519 
    366520        // demo recording stuff 
    367521        if (mInputDevice->isKeyDown(KC_F5) && mTimeUntilNextToggle <= 0) 
     
    384538        } 
    385539 
     540        if (mInputDevice->isKeyDown(KC_F11) && mTimeUntilNextToggle <= 0) 
     541        { 
     542                toggleBuildMethod(); 
     543                mTimeUntilNextToggle = 0.5; 
     544        } 
     545 
     546        if (mInputDevice->isKeyDown(KC_SPACE) && mTimeUntilNextToggle <= 0) 
     547        { 
     548                toggleRenderMethod(); 
     549                mTimeUntilNextToggle = 0.5; 
     550        } 
     551 
     552        if (mInputDevice->isKeyDown(KC_V) && mTimeUntilNextToggle <= 0) 
     553        { 
     554                toggleEnhancedVisibility(); 
     555                mTimeUntilNextToggle = 0.5; 
     556        } 
     557 
     558        if (mInputDevice->isKeyDown(KC_B) && mTimeUntilNextToggle <= 0) 
     559        { 
     560                mSceneMgr->showBoundingBoxes( ! mSceneMgr->getShowBoundingBoxes() ); 
     561                mTimeUntilNextToggle = 0.5; 
     562        } 
     563 
    386564        const static int vizCamSpeedup = 12; 
    387565        // moving the cull camera 
     
    410588                mVizCamTransVect.z = -mMoveScale * vizCamSpeedup; 
    411589        } 
    412  
    413         // stuff for the overlay 
    414         const static String sNA = ": N/A"; 
    415  
    416         static String bmOptions[] = { "Recursive", "PriorityQueue" }; 
    417         static String bmOptionCaptions[] = { ": Recursive", ": PriorityQueue" }; 
    418         static int bmOptionsSize = sizeof(bmOptions) / sizeof(String); 
    419         static int bmCurrent = 0; 
    420  
    421         //static String rmOptions[] = { "Recursive", "Stack", "StopAndWait", "CHC" }; 
    422         static String rmOptions[] = { "INT", "VFC", "SWC", "CHC" }; 
    423         static String rmOptionCaptions[] = 
    424         { 
    425                 ": Internal Frustum Culling", 
    426                         ": View Frustum Culling",  
    427                         ": Stop and Wait Culling", 
    428                         ": Coherent Hierarchical Culling" 
    429         }; 
    430         static int rmOptionsSize = sizeof(rmOptions) / sizeof (String); 
    431         static int rmCurrent = 0; 
    432590 
    433591        if ((mInputDevice->isKeyDown(KC_1) || mInputDevice->isKeyDown(KC_2)) && mTimeUntilNextToggle <= 0) 
     
    448606                                        mHighlightLevelInfo->setCaption(": " + StringConverter::toString(hl)); 
    449607                                else 
    450                                         mHighlightLevelInfo->setCaption(sNA); 
     608                                        mHighlightLevelInfo->setCaption(NA); 
    451609                        } 
    452610                } 
    453611                else 
    454612                { 
    455                         mKdTreeMaxDepthInfo->setCaption(sNA); 
    456                         mHighlightLevelInfo->setCaption(sNA); 
    457                 } 
    458  
    459                 if (!mShowTree) 
     613                        mKdTreeMaxDepthInfo->setCaption(NA); 
     614                        mHighlightLevelInfo->setCaption(NA); 
     615                } 
     616 
     617                if (mShowTree == SHOWTREE_OFF) 
    460618                        mHighlightLevelInfo->setCaption(": off"); 
    461619 
     
    478636                else 
    479637                { 
    480                         mHighlightLevelInfo->setCaption(sNA); 
    481                 } 
    482  
    483                 if (!mShowTree) 
     638                        mHighlightLevelInfo->setCaption(NA); 
     639                } 
     640 
     641                if (mShowTree == SHOWTREE_OFF) 
    484642                        mHighlightLevelInfo->setCaption(": off"); 
    485643 
     
    506664                else 
    507665                { 
    508                         mKTInfo->setCaption(sNA); 
     666                        mKTInfo->setCaption(NA); 
    509667                } 
    510668 
     
    530688                else 
    531689                { 
    532                         mKIInfo->setCaption(sNA); 
     690                        mKIInfo->setCaption(NA); 
    533691                } 
    534692 
    535693                mTimeUntilNextToggle = 0.2; 
    536         } 
    537  
    538         if (mInputDevice->isKeyDown(KC_X) && mTimeUntilNextToggle <= 0) 
    539         { 
    540                 String bm; 
    541                 if (mSceneMgr->getOption("BuildMethod", &bm)) 
    542                 { 
    543                         for (int idx = 0; idx < bmOptionsSize; idx++) 
    544                                 if (bmOptions[idx] == bm) 
    545                                         bmCurrent = idx; 
    546                         bmCurrent = (bmCurrent + 1) % bmOptionsSize; 
    547                         if (mSceneMgr->setOption("BuildMethod", &bmOptions[bmCurrent])) 
    548                                 mBuildMethodInfo->setCaption(bmOptionCaptions[bmCurrent]); 
    549                 } 
    550                 else 
    551                 { 
    552                         mBuildMethodInfo->setCaption(sNA); 
    553                 } 
    554  
    555                 mTimeUntilNextToggle = 0.5; 
    556         } 
    557  
    558         if (mInputDevice->isKeyDown(KC_SPACE) && mTimeUntilNextToggle <= 0) 
    559         { 
    560                 String rm; 
    561                 if (mSceneMgr->getOption("RenderMethod", &rm)) 
    562                 { 
    563                         for (int idx = 0; idx < rmOptionsSize; idx++) 
    564                                 if (rmOptions[idx] == rm) 
    565                                         rmCurrent = idx; 
    566                         rmCurrent = (rmCurrent + 1) % rmOptionsSize; 
    567                         if (mSceneMgr->setOption("RenderMethod", &rmOptions[rmCurrent])) 
    568                                 mRenderMethodInfo->setCaption(rmOptionCaptions[rmCurrent]); 
    569                 } 
    570                 else 
    571                 { 
    572                         mRenderMethodInfo->setCaption(sNA); 
    573                 } 
    574  
    575                 mTimeUntilNextToggle = 0.5; 
    576694        } 
    577695 
     
    610728        } 
    611729 
    612         if (mInputDevice->isKeyDown(KC_N) && mTimeUntilNextToggle <= 0) 
    613         { 
    614                 //Entity * ent = mSceneMgr->createEntity("randominsert" + StringConverter::toString(mSeqNum), "robot.mesh"); 
    615                 Entity * ent = mSceneMgr->createEntity("randominsert" + StringConverter::toString(mSeqNum), "razor.mesh"); 
    616                 //Vector3 position(Math::RangeRandom(100, 1125), -0, Math::RangeRandom(-1125, 1125)); 
    617                 Vector3 position(Math::RangeRandom(-5000, 5000), Math::RangeRandom(-5000, 5000), Math::RangeRandom(-5000, 5000)); 
    618                 //Quaternion orientation(Radian(Math::RangeRandom(-Math::PI, Math::PI)), Vector3::UNIT_Y); 
    619                 Vector3 axis(Math::RangeRandom(-1,1),Math::RangeRandom(-1,1),Math::RangeRandom(-1,1)); 
    620                 axis.normalise(); 
    621                 Quaternion orientation(Radian(Math::RangeRandom(-Math::PI, Math::PI)), axis); 
    622                 Vector3 scale(Math::RangeRandom(0.5, 5),Math::RangeRandom(0.5, 5),Math::RangeRandom(0.5, 5)); 
    623                 SceneNode * anchor = mSceneMgr->getSceneNode("AnchorNode"); 
    624                 SceneNode *sn = anchor->createChildSceneNode("RandomInsertNode" + StringConverter::toString(mSeqNum), position, orientation); 
    625                 sn->attachObject(ent); 
    626                 sn->setScale(scale); 
    627                 mTimeUntilNextToggle = 0.5; 
    628                 mSeqNum++; 
    629         } 
    630  
    631         if (mInputDevice->isKeyDown(KC_J) && mTimeUntilNextToggle <= 0) 
    632         { 
    633                 if (mSeqNum > 0) 
    634                 { 
    635                         mSeqNum--; 
    636                         mSceneMgr->destroySceneNode("RandomInsertNode" + StringConverter::toString(mSeqNum)); 
    637                         mSceneMgr->destroyEntity("randominsert" + StringConverter::toString(mSeqNum)); 
    638                         mTimeUntilNextToggle = 0.5; 
    639                 } 
    640         } 
     730        //if (mInputDevice->isKeyDown(KC_N) && mTimeUntilNextToggle <= 0) 
     731        //{ 
     732        //      //Entity * ent = mSceneMgr->createEntity("randominsert" + StringConverter::toString(mSeqNum), "robot.mesh"); 
     733        //      Entity * ent = mSceneMgr->createEntity("randominsert" + StringConverter::toString(mSeqNum), "razor.mesh"); 
     734        //      //Vector3 position(Math::RangeRandom(100, 1125), -0, Math::RangeRandom(-1125, 1125)); 
     735        //      Vector3 position(Math::RangeRandom(-5000, 5000), Math::RangeRandom(-5000, 5000), Math::RangeRandom(-5000, 5000)); 
     736        //      //Quaternion orientation(Radian(Math::RangeRandom(-Math::PI, Math::PI)), Vector3::UNIT_Y); 
     737        //      Vector3 axis(Math::RangeRandom(-1,1),Math::RangeRandom(-1,1),Math::RangeRandom(-1,1)); 
     738        //      axis.normalise(); 
     739        //      Quaternion orientation(Radian(Math::RangeRandom(-Math::PI, Math::PI)), axis); 
     740        //      Vector3 scale(Math::RangeRandom(0.5, 5),Math::RangeRandom(0.5, 5),Math::RangeRandom(0.5, 5)); 
     741        //      SceneNode * anchor = mSceneMgr->getSceneNode("AnchorNode"); 
     742        //      SceneNode *sn = anchor->createChildSceneNode("RandomInsertNode" + StringConverter::toString(mSeqNum), position, orientation); 
     743        //      sn->attachObject(ent); 
     744        //      sn->setScale(scale); 
     745        //      mTimeUntilNextToggle = 0.5; 
     746        //      mSeqNum++; 
     747        //} 
     748 
     749        //if (mInputDevice->isKeyDown(KC_J) && mTimeUntilNextToggle <= 0) 
     750        //{ 
     751        //      if (mSeqNum > 0) 
     752        //      { 
     753        //              mSeqNum--; 
     754        //              mSceneMgr->destroySceneNode("RandomInsertNode" + StringConverter::toString(mSeqNum)); 
     755        //              mSceneMgr->destroyEntity("randominsert" + StringConverter::toString(mSeqNum)); 
     756        //              mTimeUntilNextToggle = 0.5; 
     757        //      } 
     758        //} 
    641759 
    642760        //if (mInputDevice->isKeyDown(KC_P) && mTimeUntilNextToggle <= 0) 
     
    650768        //      mTimeUntilNextToggle = 1.0; 
    651769        //} 
    652  
    653         if (mInputDevice->isKeyDown(KC_B) && mTimeUntilNextToggle <= 0) 
    654         { 
    655                 mSceneMgr->showBoundingBoxes( ! mSceneMgr->getShowBoundingBoxes() ); 
    656                 mTimeUntilNextToggle = 0.5; 
    657         } 
    658  
    659         if (mInputDevice->isKeyDown(KC_C) && mTimeUntilNextToggle <= 0) 
    660         { 
    661                 toggleVizCamera(); 
    662                 mTimeUntilNextToggle = 0.5; 
    663         } 
    664  
    665         if (mInputDevice->isKeyDown(KC_V) && mTimeUntilNextToggle <= 0) 
    666         { 
    667                 mShowTree = !mShowTree; 
    668  
    669                 if (mSceneMgr->getTypeName() == "OctreeSceneManager") 
    670                 { 
    671                         //(static_cast<OctreeSceneManager *>(mSceneMgr))->setShowBoxes(mShowTree); 
    672                         mSceneMgr->setOption("ShowOctree", &mShowTree); 
    673                 } 
    674                 else if (mSceneMgr->getTypeName() == "KdTreeSceneManager") 
    675                 { 
    676                         mSceneMgr->setOption("ShowKdTree", &mShowTree); 
    677                         //KdTreeSceneManager *sm = static_cast<KdTreeSceneManager *>(mSceneMgr); 
    678                         //sm->setShowBoxes(!sm->getShowBoxes()); 
    679                         //(static_cast<KdTreeSceneManager *>(mSceneMgr))->setShowBoxes(mShowTree); 
    680                 } 
    681  
    682                 if (!mShowTree) 
    683                         mHighlightLevelInfo->setCaption(": off"); 
    684                 else 
    685                 { 
    686                         int hl; 
    687                         if (mSceneMgr->getOption("HiLiteLevel", &hl)) 
    688                                 mHighlightLevelInfo->setCaption(": " + StringConverter::toString(hl)); 
    689                         else 
    690                                 mHighlightLevelInfo->setCaption(sNA); 
    691                 } 
    692  
    693                 mTimeUntilNextToggle = 0.5; 
    694         } 
    695  
    696         if (mInputDevice->isKeyDown(KC_G) && mTimeUntilNextToggle <= 0) 
    697         { 
    698                 bool toggleShowAllBoxes; 
    699                 mSceneMgr->getOption("ShowAllBoxes", &toggleShowAllBoxes); 
    700                 toggleShowAllBoxes = !toggleShowAllBoxes; 
    701                 mSceneMgr->setOption("ShowAllBoxes", &toggleShowAllBoxes); 
    702                 mTimeUntilNextToggle = 0.2; 
    703         } 
    704  
    705         if (mInputDevice->isKeyDown(KC_H) && mTimeUntilNextToggle <= 0) 
    706         { 
    707                 bool toggleShow; 
    708                 mSceneMgr->getOption("ShowNodes", &toggleShow); 
    709                 toggleShow = !toggleShow; 
    710                 mSceneMgr->setOption("ShowNodes", &toggleShow); 
    711                 mTimeUntilNextToggle = 0.2; 
    712         } 
    713  
    714         if (mInputDevice->isKeyDown(KC_O)) 
    715         { 
    716                 mWindow->writeContentsToTimestampedFile("Screenshot",".jpg"); 
    717         } 
    718770 
    719771        if (mInputDevice->isKeyDown(KC_A)) 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreKdTree.h

    r1206 r1211  
    2929#include <stack> 
    3030 
     31#include "OgreKdTreeCamera.h" 
    3132#include "HierarchyInterface.h" 
    3233 
     
    510511                inline bool getShowNodes(void) { return mShowNodes; }; 
    511512 
     513                // changes vis mode (simple/enhanced with NONE/PART/FULL vis) 
     514                void setEnhancedVis(bool enh); 
     515                bool getEnhancedVis(void); 
     516 
    512517                NodePtr getRoot(void) const { return mKdRoot; }; 
    513518 
     
    585590                bool mShowNodes; 
    586591 
     592                // pointer zur getVisibility function (simple oder enhanced) 
     593                KdTreeCamera::NodeVisibility (KdTreeCamera::*getVisibility)(const AxisAlignedBox& box) const; 
    587594 
    588595                // DEBUG 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreKdTreeSceneManager.h

    r1206 r1211  
    179179        /** Switches between simple & enhanced visibility 
    180180        */ 
    181         void setEnhancedVis(bool enhanced); 
     181        //void setEnhancedVis(bool enhanced); 
    182182 
    183183 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreKdTree.cpp

    r1206 r1211  
    1212#include "OgreKdTreeSceneNode.h" 
    1313#include "OgreKdTreeSceneManager.h" 
    14 #include "OgreKdTreeCamera.h" 
    1514 
    1615#include <OgreStringConverter.h> 
     
    371370                        mBuildLog = LogManager::getSingleton().createLog(KDTREE_LOGNAME); 
    372371                } 
     372 
     373                setEnhancedVis(false); 
    373374        } 
    374375 
     
    12011202                //if (cam->isVisible(node->mAABB)) 
    12021203                if (fullVis ||  
    1203                         ((vis = cam->getVisibilityEnhanced(node->mAABB)) != KdTreeCamera::KDNV_NONE)) 
     1204                        ((vis = (cam->*getVisibility)(node->mAABB)) != KdTreeCamera::KDNV_NONE)) 
    12041205                        //((vis = (cam->*getVisibility)(node->mAABB)) != KdTreeCamera::KDNV_NONE)) 
    12051206                { 
     
    12191220        } 
    12201221 
    1221         ////------------------------------------------------------------------------- 
     1222        //------------------------------------------------------------------------- 
     1223        void KdTree::setEnhancedVis(bool enh) 
     1224        { 
     1225                if (enh) 
     1226                        getVisibility = &KdTreeCamera::getVisibilityEnhanced; 
     1227                else 
     1228                        getVisibility = &KdTreeCamera::getVisibilitySimple; 
     1229        } 
     1230 
     1231        //------------------------------------------------------------------------- 
     1232        bool KdTree::getEnhancedVis() 
     1233        { 
     1234                return getVisibility == &KdTreeCamera::getVisibilityEnhanced; 
     1235        } 
     1236 
     1237        //------------------------------------------------------------------------- 
    12221238        //void KdTree::findVisibleNodes(NodeList& visibleNodes, Camera * cam) 
    12231239        //{ 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreKdTreeSceneManager.cpp

    r1206 r1211  
    8080} 
    8181 
    82 void KdTreeSceneManager::setEnhancedVis(bool enhanced) 
    83 { 
    84         for (CameraList::iterator it = mCameras.begin(); it != mCameras.end(); it ++) 
    85         { 
    86                 KDCAMPTR_CAST(it->second)->setEnhancedVisMode(enhanced); 
    87         } 
    88 } 
     82//void KdTreeSceneManager::setEnhancedVis(bool enhanced) 
     83//{ 
     84//      for (CameraList::iterator it = mCameras.begin(); it != mCameras.end(); it ++) 
     85//      { 
     86//              KDCAMPTR_CAST(it->second)->setEnhancedVisMode(enhanced); 
     87//      } 
     88//} 
    8989 
    9090bool KdTreeSceneManager::setOption(const String& strKey, const void* pValue) 
     
    146146        { 
    147147                bool enh = *static_cast<const bool *>(pValue); 
    148                 setEnhancedVis(enh); 
     148                if (mKdTree) 
     149                        mKdTree->setEnhancedVis(enh); 
     150                //setEnhancedVis(enh); 
    149151                return true; 
    150152        } 
     
    355357        else if (strKey == "EnhancedVisibility") 
    356358        { 
    357                 *static_cast<bool *>(pDestValue) =  
    358                         KDCAMPTR_CAST(mCameras.begin()->second)->getEnhancedVisMode(); 
     359                if (mKdTree) 
     360                        *static_cast<bool *>(pDestValue) = mKdTree->getEnhancedVis(); 
     361                        //KDCAMPTR_CAST(mCameras.begin()->second)->getEnhancedVisMode(); 
     362                else 
     363                        *static_cast<bool *>(pDestValue) = true; 
     364                return true; 
    359365        } 
    360366        else if (strKey == "BuildMethod") 
  • OGRE/trunk/resources/overlays/TestKdTree.overlay

    r1195 r1211  
    5151                        caption : 
    5252                } 
     53                element TextArea(KdTree/EnhancedVis): KdTree/Templates/BasicText 
     54                { 
     55                        left 5 
     56                        width 120 
     57                        height 30 
     58                        caption [V] Visibility 
     59                } 
     60                element TextArea(KdTree/EnhancedVisInfo): KdTree/Templates/BasicText 
     61                { 
     62                        left 160 
     63                        width 180 
     64                        height 30 
     65                        caption : 
     66                } 
    5367                element TextArea(KdTree/BuildMethod): KdTree/Templates/BasicText 
    5468                { 
     
    5670                        width 120 
    5771                        height 30 
    58                         caption [X] Build Method 
     72                        caption [F11] Build Method 
    5973                } 
    6074                element TextArea(KdTree/BuildMethodInfo): KdTree/Templates/BasicText 
Note: See TracChangeset for help on using the changeset viewer.