Skip to main content

History: BasicTutorial7Source

Source of version: 3

Copy to clipboard
            This is the source code for ((Basic Tutorial 7)).

{CODE(wrap="1",colors="c++")}#include "ExampleApplication.h"
 #include <CEGUI/CEGUI.h>
 #include <OgreCEGUIRenderer.h>
 #include <OIS/OIS.h>
 
 CEGUI::MouseButton convertButton(OIS::MouseButtonID buttonID)
 {
     switch (buttonID)
     {
     case OIS::MB_Left:
         return CEGUI::LeftButton;
 
     case OIS::MB_Right:
         return CEGUI::RightButton;
 
     case OIS::MB_Middle:
         return CEGUI::MiddleButton;
 
     default:
         return CEGUI::LeftButton;
     }
 }
 
 class TutorialListener : public ExampleFrameListener, public OIS::MouseListener, public OIS::KeyListener
 {
 public:
     TutorialListener(RenderWindow* win, Camera* cam)
         : ExampleFrameListener(win, cam, true, true)
     {
         mContinue=true;
         mKeyboard->setEventCallback(this);
         mMouse->setEventCallback(this);
 
         CEGUI::WindowManager *wmgr = CEGUI::WindowManager::getSingletonPtr();
         CEGUI::Window *quit = wmgr->getWindow((CEGUI::utf8*)"CEGUIDemo/QuitButton");
 
         quit->subscribeEvent(CEGUI::PushButton::EventClicked,
             CEGUI::Event::Subscriber(&TutorialListener::quit, this));
     } // CEGUIDemoListener
 
     bool frameStarted(const FrameEvent &evt)
     {
         mKeyboard->capture();
         mMouse->capture();
 
         return mContinue && !mKeyboard->isKeyDown(OIS::KC_ESCAPE);
     }
 
     bool quit(const CEGUI::EventArgs &e)
     {
         mContinue = false;
         return true;
     }
 
     // MouseListener
     bool mouseMoved(const OIS::MouseEvent &arg)
     {
         CEGUI::System::getSingleton().injectMouseMove(arg.state.X.rel, arg.state.Y.rel);
         return true;
     }
 
     bool mousePressed(const OIS::MouseEvent &arg, OIS::MouseButtonID id)
     {
         CEGUI::System::getSingleton().injectMouseButtonDown(convertButton(id));
         return true;
     }
 
     bool mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonID id)
     {
         CEGUI::System::getSingleton().injectMouseButtonUp(convertButton(id));
         return true;
     }
 
     // KeyListener
     bool keyPressed(const OIS::KeyEvent &arg)
     {
         CEGUI::System *sys = CEGUI::System::getSingletonPtr();
         sys->injectKeyDown(arg.key);
         sys->injectChar(arg.text);
         return true;
     }
 
     bool keyReleased(const OIS::KeyEvent &arg)
     {
         CEGUI::System::getSingleton().injectKeyUp(arg.key);
         return true;
     }
 
 private:
     bool mContinue;
 };
 
 
 class CEGUIDemoApplication : public ExampleApplication
 {
 public:
     CEGUIDemoApplication()
         : mSystem(0), mRenderer(0)
     {
     }
 
     ~CEGUIDemoApplication() 
     {
         if (mSystem)
             delete mSystem;
 
         if (mRenderer)
             delete mRenderer;
     }
 protected:
     CEGUI::System *mSystem;
     CEGUI::OgreCEGUIRenderer *mRenderer;
 
     void createScene(void)
     {
         mRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, mSceneMgr);
         mSystem = new CEGUI::System(mRenderer);
 
         CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*)"TaharezLookSkin.scheme");
         mSystem->setDefaultMouseCursor((CEGUI::utf8*)"TaharezLook", (CEGUI::utf8*)"MouseArrow");
         mSystem->setDefaultFont((CEGUI::utf8*)"BlueHighway-12");
 
         //// Do not add this to the program
         //CEGUI::Window* sheet = CEGUI::WindowManager::getSingleton().loadWindowLayout((CEGUI::utf8*)"ogregui.layout"); 
         //mSystem->setGUISheet(sheet);
 
         // Quit button
         CEGUI::WindowManager *win = CEGUI::WindowManager::getSingletonPtr();
         CEGUI::Window *sheet = win->createWindow("DefaultGUISheet", "CEGUIDemo/Sheet");
 
         CEGUI::Window *quit = win->createWindow("TaharezLook/Button", "CEGUIDemo/QuitButton");
         quit->setText("Quit");
         quit->setSize(CEGUI::UVector2(CEGUI::UDim(0.15, 0), CEGUI::UDim(0.05, 0)));
 
         sheet->addChildWindow(quit);
         mSystem->setGUISheet(sheet);
 
         // Scene setup
         mSceneMgr->setAmbientLight(ColourValue(1, 1, 1));
         mSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8);
         Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
         SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(0, 0, -300));
         headNode->attachObject(ogreHead);
 
         // Texture setup
          RenderTexture *tex= mRoot->getTextureManager()->createManual
                                   ("R2TTex", "Default", TEX_TYPE_2D, 512, 512, 0, PF_R8G8B8, TU_RENDERTARGET)
                                    ->getBuffer()->getRenderTarget(); 
 
         Camera *cam = mSceneMgr->createCamera("RttCam");
         cam->setPosition(100, -100, -400);
         cam->lookAt(0, 0, -300);
         
         Viewport *v = tex->addViewport(cam);
         v->setOverlaysEnabled(false);
         v->setClearEveryFrame(true);
         v->setBackgroundColour(ColourValue::Black);
 
         // CEGUI setup
         CEGUI::Texture *cTex = mRenderer->createTexture((CEGUI::utf8*)"R2TTex");
 
         CEGUI::Imageset *imageSet = CEGUI::ImagesetManager::getSingleton().createImageset((CEGUI::utf8*)"RttImageset", cTex);
         imageSet->defineImage((CEGUI::utf8*)"RttImage", 
             CEGUI::Point(0.0f, 0.0f),
             CEGUI::Size(cTex->getWidth(), cTex->getHeight()),
             CEGUI::Point(0.0f,0.0f));
 
         CEGUI::Window *si = win->createWindow((CEGUI::utf8*)"TaharezLook/StaticImage", "RTTWindow");
         si->setSize(CEGUI::UVector2(CEGUI::UDim(0.5f, 0), CEGUI::UDim(0.4f, 0)));
         si->setPosition(CEGUI::UVector2(CEGUI::UDim(0.5f, 0), CEGUI::UDim(0, 0)));
         si->setProperty("Image", CEGUI::PropertyHelper::imageToString(&imageSet->getImage((CEGUI::utf8*)"RttImage")));
 
         sheet->addChildWindow(si);
     }
 
     void createFrameListener(void)
     {
         mFrameListener = new TutorialListener(mWindow, mCamera);
         mFrameListener->showDebugOverlay(true);
         mRoot->addFrameListener(mFrameListener);
     }
 };
 
 #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
 #define WIN32_LEAN_AND_MEAN
 #include "windows.h"
 
 
 INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
 #else
 int main(int argc, char **argv)
 #endif
 {
     // Create application object
     CEGUIDemoApplication app;
 
     try {
         app.go();
     } catch(Exception& e) {
 #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
         MessageBoxA(NULL, e.getFullDescription().c_str(), "An exception has occurred!",
             MB_OK | MB_ICONERROR | MB_TASKMODAL);
 #else
         fprintf(stderr, "An exception has occurred: %s\n",
             e.getFullDescription().c_str());
 #endif
     }
 
 
     return 0;
 }{CODE}
        

History

Information Version
Tue 28 of Sep, 2010 19:01 GMT-0000 jacmoe 9
Fri 02 of Jul, 2010 23:53 GMT-0000 jacmoe 8
Tue 29 of Jun, 2010 20:48 GMT-0000 jacmoe 7
Tue 29 of Jun, 2010 20:46 GMT-0000 jacmoe 6
Sat 01 of May, 2010 00:36 GMT-0000 jacmoe 5
Fri 29 of Jan, 2010 04:37 GMT-0000 peters remove extra space at column 0 4
Mon 04 of Jan, 2010 05:23 GMT-0000 jacmoe 3
Sun 06 of Dec, 2009 11:41 GMT-0000 jacmoe 2
Thu 04 of Dec, 2008 22:55 GMT-0000 Pintodragon Fixed a type. RttTex is really supose to be R2TTex. On line 160. 1