/** \file TestCullingApplication.h */ #include "CEGUIForwardRefs.h" #include "ExampleApplication.h" #include "OgreLight.h" //#include "OgreVisibilitySceneTraverser.h" Real timeDelay = 0; #define KEY_PRESSED(_key,_timeDelay, _macro) \ { \ if (mInputDevice->isKeyDown(_key) && timeDelay <= 0) \ { \ timeDelay = _timeDelay; \ _macro ; \ } \ } String mCurrentAlgorithmCaptions[3/*VisibilitySceneTraverser::NUM_RENDERMODES*/] = { "Cull Frustum", "Stop and Wait", "Coherent Occlusion Culling" }; class MouseQueryListener : public ExampleFrameListener, public MouseListener, public MouseMotionListener { public: MouseQueryListener(RenderWindow* win, Camera* cam, SceneManager *sceneManager, CEGUI::Renderer *renderer); ~MouseQueryListener( ) { } // bool frameStarted(const FrameEvent& evt); bool frameEnded(const FrameEvent& evt); /* MouseListener callbacks. */ virtual void mouseClicked(MouseEvent* e) { } virtual void mouseEntered(MouseEvent* e) { } virtual void mouseExited(MouseEvent* e) { } // This is when the mouse button goes DOWN. virtual void mousePressed(MouseEvent* e); // This is when the mouse button is let UP. virtual void mouseReleased(MouseEvent* e); /* MouseMotionListener callbacks */ virtual void mouseMoved (MouseEvent *e); // This is when the mouse is clicked, held and dragged. virtual void mouseDragged (MouseEvent *e); void keyPressed(KeyEvent* e); void keyReleased(KeyEvent* e); void keyClicked(KeyEvent* e); void changeAlgorithm(); void changeThreshold(int incr); void changeStats(); protected: bool mLMouseDown, mRMouseDown; // True if the mouse buttons are down SceneManager *mSceneMgr; // A pointer to the scene manager CEGUI::Renderer *mGUIRenderer; // cegui renderer bool mShutdownRequested; int mCurrentAlgorithm; int mThreshold; OverlayElement *mAlgorithmInfo; OverlayElement *mThresholdInfo; OverlayElement *mFrustumCulledNodesInfo; OverlayElement *mQueryCulledNodesInfo; OverlayElement *mTraversedNodesInfo; OverlayElement *mSceneNodesInfo; }; class TestCullingDotSceneApplication : public ExampleApplication { public: //~TestCullingDotSceneApplication(); protected: void createScene(void); void createFrameListener(void); void setupGui(void); void ParseDotScene( const String &SceneName, const String& groupName ); Light* LoadLight( TiXmlElement *XMLLight ); virtual void createViewports(void); CEGUI::OgreCEGUIRenderer *mGUIRenderer; CEGUI::System *mGUISystem; private: void chooseSceneManager(void); //SceneManager* mSceneMgr; //Entity* mShip; //SceneNode* mShipNode; };