Ignore:
Timestamp:
03/22/05 14:51:26 (19 years ago)
Author:
gametools
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/OcclusionCullingSceneManager/TestCulling/TestCullingApplication.h

    r18 r26  
    55#include "CEGUIForwardRefs.h" 
    66#include "ExampleApplication.h" 
    7  
     7#include "OgreOcclusionCullingSceneManager.h" 
    88 
    99class MouseQueryListener : public ExampleFrameListener, public MouseListener, public MouseMotionListener 
     
    1313    MouseQueryListener(RenderWindow* win, Camera* cam, SceneManager *sceneManager, CEGUI::Renderer *renderer, 
    1414                                           SceneNode* shipNode) 
    15         : ExampleFrameListener(win, cam, false, true), mGUIRenderer(renderer), mShipNode(shipNode) 
     15        : ExampleFrameListener(win, cam, false, true), mGUIRenderer(renderer), mShipNode(shipNode),  mShutdownRequested(false) 
    1616    { 
    1717                // Setup default variables 
     
    2424        mMoveSpeed = 50; 
    2525        mRotateSpeed *= 2; 
     26         
     27                mAlgorithmType = OcclusionCullingSceneManager::RENDER_COHERENT; 
     28 
     29                 showDebugOverlay(false); 
    2630 
    2731                // Register this so that we get mouse events. 
    28         mEventProcessor->addMouseListener( this ); 
    29         mEventProcessor->addMouseMotionListener( this ); 
     32        mEventProcessor->addMouseListener(this); 
     33        mEventProcessor->addMouseMotionListener(this); 
     34                mEventProcessor->addKeyListener(this); 
    3035    } // MouseQueryListener 
    3136 
     
    3641    bool frameStarted(const FrameEvent &evt) 
    3742    { 
    38         return ExampleFrameListener::frameStarted( evt ); 
     43       Real MoveFactor = 80.0 * evt.timeSinceLastFrame; 
     44  
     45                mInputDevice->capture(); 
     46  
     47                if(mInputDevice->isKeyDown(Ogre::KC_UP)) 
     48                { 
     49 
     50                        mAlgorithmType = (mAlgorithmType + 1) % OcclusionCullingSceneManager::NUM_RENDERMODES; 
     51                        //mShipNode->translate(0.0, MoveFactor, 0.0); 
     52                } 
     53  
     54                if(mInputDevice->isKeyDown(Ogre::KC_DOWN)) 
     55                        mShipNode->translate(0.0, -MoveFactor, 0.0); 
     56  
     57                if(mInputDevice->isKeyDown(Ogre::KC_LEFT)) 
     58                        mShipNode->translate(-MoveFactor, 0.0, 0.0); 
     59  
     60                if(mInputDevice->isKeyDown(Ogre::KC_RIGHT)) 
     61                        mShipNode->translate(MoveFactor, 0.0, 0.0);              
     62  
     63                if(mInputDevice->isKeyDown(Ogre::KC_ESCAPE)) 
     64                        return false; 
     65 
     66                return true; 
    3967    } 
    4068 
     
    5684   virtual void mouseDragged (MouseEvent *e); 
    5785 
     86   void keyPressed(KeyEvent* e) 
     87   { 
     88        if(e->getKey() == KC_ESCAPE) 
     89        { 
     90            mShutdownRequested = true; 
     91            e->consume(); 
     92            return; 
     93        } 
     94 
     95        CEGUI::System::getSingleton().injectKeyDown(e->getKey()); 
     96                CEGUI::System::getSingleton().injectChar(e->getKeyChar()); 
     97        e->consume(); 
     98    } 
     99 
     100        void keyReleased(KeyEvent* e) 
     101        { 
     102                CEGUI::System::getSingleton().injectKeyUp(e->getKey()); 
     103                e->consume(); 
     104        } 
     105        void keyClicked(KeyEvent* e)  
     106        { 
     107                // Do nothing 
     108                e->consume(); 
     109        } 
     110 
     111          bool frameEnded(const FrameEvent& evt) 
     112    { 
     113        if (mShutdownRequested) 
     114            return false; 
     115        else 
     116            return ExampleFrameListener::frameEnded(evt); 
     117    } 
     118 
     119        void setAlgorithmType(int type) { mAlgorithmType = type; } 
     120        int getAlgorithmType() { return mAlgorithmType; } 
     121 
    58122protected: 
    59123    bool mLMouseDown, mRMouseDown;     // True if the mouse buttons are down 
     
    62126    CEGUI::Renderer *mGUIRenderer;     // cegui renderer 
    63127        SceneNode* mShipNode; 
     128        bool mShutdownRequested; 
     129        int mAlgorithmType; 
    64130}; 
    65131 
    66  
    67 class TestCullingFrameListener : public ExampleFrameListener 
    68 { 
    69 protected: 
    70     SceneNode* mShipNode; 
    71  
    72 public: 
    73     TestCullingFrameListener(RenderWindow* win, Camera* cam, SceneNode* shipNode) : ExampleFrameListener(win, cam) 
    74     { 
    75                 mShipNode = shipNode; 
    76     }; 
    77  
    78         bool frameStarted(const FrameEvent& evt) 
    79         { 
    80                 Real MoveFactor = 80.0 * evt.timeSinceLastFrame; 
    81   
    82                 mInputDevice->capture(); 
    83   
    84                 if(mInputDevice->isKeyDown(Ogre::KC_UP)) 
    85                         mShipNode->translate(0.0, MoveFactor, 0.0); 
    86   
    87                 if(mInputDevice->isKeyDown(Ogre::KC_DOWN)) 
    88                         mShipNode->translate(0.0, -MoveFactor, 0.0); 
    89   
    90                 if(mInputDevice->isKeyDown(Ogre::KC_LEFT)) 
    91                         mShipNode->translate(-MoveFactor, 0.0, 0.0); 
    92   
    93                 if(mInputDevice->isKeyDown(Ogre::KC_RIGHT)) 
    94                         mShipNode->translate(MoveFactor, 0.0, 0.0);              
    95   
    96                 if(mInputDevice->isKeyDown(Ogre::KC_ESCAPE)) 
    97                         return false; 
    98   
    99                 return true; 
    100         } 
    101 }; 
    102132 
    103133class TestCullingApplication : public ExampleApplication 
     
    106136    /*TestCullingApplication() 
    107137    { 
    108  
    109138 
    110139    }*/ 
     
    150179    { 
    151180        mSceneMgr = mRoot->getSceneManager(ST_GENERIC); 
    152                 //mSceneMgr = mRoot->getSceneManager(ST_INTERIOR); 
    153181    } 
    154         /* 
    155     // Scene creation 
    156     void createScene(void) 
    157     { 
    158  
    159         // Load world geometry 
    160         mSceneMgr->setWorldGeometry(mQuakeLevel); 
    161  
    162         // modify camera for close work 
    163         mCamera->setNearClipDistance(4); 
    164         mCamera->setFarClipDistance(4000); 
    165  
    166         // Also change position, and set Quake-type orientation 
    167         // Get random player start point 
    168         ViewPoint vp = mSceneMgr->getSuggestedViewpoint(true); 
    169         mCamera->setPosition(vp.position); 
    170         mCamera->pitch(Degree(90)); // Quake uses X/Y horizon, Z up 
    171         mCamera->rotate(vp.orientation); 
    172         // Don't yaw along variable axis, causes leaning 
    173         mCamera->setFixedYawAxis(true, Vector3::UNIT_Z); 
    174     }*/ 
    175  
     182         
    176183}; 
    177184 
Note: See TracChangeset for help on using the changeset viewer.