/** \file TestCullingApplication.cpp \brief Tests the occlusion culling algorithm */ #pragma warning (push) #pragma warning( disable : 4267 ) #include #include #include <../CEGUIRenderer/include/OgreCEGUIRenderer.h> #include <../CEGUIRenderer/include/OgreCEGUIResourceProvider.h> #include <../CEGUIRenderer/include/OgreCEGUITexture.h> #include #pragma warning (pop) /* #include #include #include #include #include #include #include #include #include #include #include #include #include "OgreCEGUIRenderer.h" #include "OgreCEGUIResourceProvider.h" */ #include "Ogre.h" #include "TestCullingApplication.h" #define WIN32_LEAN_AND_MEAN #include "windows.h" void TestCullingApplication::createScene(void) { // Create a skybox mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox"); mShip = mSceneMgr->createEntity("razor", "razor.mesh"); mShipNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(); mShipNode->attachObject(mShip); mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5)); // CEGUI setup mGUIRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, ST_GENERIC); mGUISystem = new CEGUI::System(mGUIRenderer); // Mouse CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*)"TaharezLook.scheme"); CEGUI::MouseCursor::getSingleton().setImage("TaharezLook", "MouseArrow"); mGUISystem->setDefaultMouseCursor( (CEGUI::utf8*)"TaharezLook", (CEGUI::utf8*)"MouseArrow"); CEGUI::MouseCursor::getSingleton().show( ); /* CEGUI::Window* sheet = CEGUI::WindowManager::getSingleton().loadWindowLayout( (CEGUI::utf8*)"ogregui.layout"); mGUISystem->setGUISheet(sheet);*/ } /* MouseMotionListener callbacks */ void MouseQueryListener::mouseMoved (MouseEvent *e) { // Update CEGUI with the mouse motion CEGUI::System::getSingleton().injectMouseMove(e->getRelX() * mGUIRenderer->getWidth(), e->getRelY() * mGUIRenderer->getHeight()); } void MouseQueryListener::mousePressed(MouseEvent* e) { // Left mouse button down if (e->getButtonID() & InputEvent::BUTTON0_MASK) { CEGUI::MouseCursor::getSingleton().hide( ); mLMouseDown = true; } // if // Right mouse button down else if (e->getButtonID() & InputEvent::BUTTON1_MASK) { CEGUI::MouseCursor::getSingleton().hide( ); mRMouseDown = true; } // else if } // mousePressed void MouseQueryListener::mouseReleased(MouseEvent* e) { // Left mouse button up if (e->getButtonID() & InputEvent::BUTTON0_MASK) { CEGUI::MouseCursor::getSingleton().show( ); mLMouseDown = false; } // if // Right mouse button up else if (e->getButtonID() & InputEvent::BUTTON1_MASK) { CEGUI::MouseCursor::getSingleton().show( ); mRMouseDown = false; } // else if } // mouseReleased // This is when the mouse is clicked, held and dragged. void MouseQueryListener::mouseDragged (MouseEvent *e) { // If we are dragging the left mouse button. if ( mLMouseDown ) { mShipNode->translate(-e->getRelX() * 200, -e->getRelY() * 200, 0.0); } // if // If we are dragging the right mouse button. else if ( mRMouseDown ) { mCamera->yaw( -e->getRelX() * mRotateSpeed ); mCamera->pitch( -e->getRelY() * mRotateSpeed ); } // else if } // mouseDragged INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) { // Create application object TestCullingApplication app; try { app.go(); } catch( Ogre::Exception& e ) { MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL); } return 0; }