Presentation is loading. Please wait.

Presentation is loading. Please wait.

GUI II. Ogre3D GUI with MyGUI. Project initialization 06_02_Ogre3D_MyGui_Base.zip Extract Run: OgreMyGui.sln.

Similar presentations


Presentation on theme: "GUI II. Ogre3D GUI with MyGUI. Project initialization 06_02_Ogre3D_MyGui_Base.zip Extract Run: OgreMyGui.sln."— Presentation transcript:

1 GUI II. Ogre3D GUI with MyGUI

2 Project initialization 06_02_Ogre3D_MyGui_Base.zip Extract Run: OgreMyGui.sln Set include and library paths (if not correct) Set working directory (if not $(SolutionDir)/bin) Compile Run Play !!

3 Ghost Game with Overlays

4 MyGUI free, open source library targeted at Ogre3D relatively simple and flexible visual tools for GUI editing dismal documentation for coding

5 MyGUI compilation there is no downloadable SDK – but included in guibase.zip for you if code had to be compiled – requires Ogre3D SDK – requires FreeType library for Windows, install FreeType for Windows from gnuwin32.sourceforge.net – requires CMake build tool

6 MyGUI configuration in CMake specify Ogre and FreeType directories as dependencies click “Generate” open generated MyGUI.sln in Visual Studio – verify that boost version of the Ogre SDK is included (addition include dirs) compile MyGUIEngine and OgrePlatform

7 MyGUI includes include directories –..\..\..\MyGUI_3.2.0\MyGUIEngine\include –..\..\..\MyGUI_3.2.0\Platforms\Ogre\OgrePlatfo rm\include main.cpp #include "MyGUI.h" #include "MyGUI_OgrePlatform.h"

8 Channeling events to the GUI class GuiInputHandler : public OIS::MouseListener, public OIS::KeyListener { public: bool mouseMoved( const OIS::MouseEvent &arg ) { return MyGUI::InputManager::getInstance().injectMouseMove( arg.state.X.abs, arg.state.Y.abs, arg.state.Z.abs); } bool mousePressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id ){ return MyGUI::InputManager::getInstance().injectMousePress( arg.state.X.abs, arg.state.Y.abs, MyGUI::MouseButton::Enum(id)); } bool mouseReleased( const OIS::MouseEvent &arg,OIS::MouseButtonID id ) { return MyGUI::InputManager::getInstance().injectMouseRelease( arg.state.X.abs, arg.state.Y.abs, MyGUI::MouseButton::Enum(id)); } bool keyPressed( const OIS::KeyEvent &arg ) { return MyGUI::InputManager::getInstance().injectKeyPress( MyGUI::KeyCode::Enum(arg.key), arg.text); } bool keyReleased( const OIS::KeyEvent &arg ) { return MyGUI::InputManager::getInstance().injectKeyRelease( MyGUI::KeyCode::Enum(arg.key)); } };

9 InputManager modification (inputs.h) public: OIS::Keyboard* mKeyboard; OIS::Mouse* mMouse; mKeyboard = static_cast ( OISInputManager->createInputObject( OIS::OISKeyboard, true )); mMouse = static_cast ( OISInputManager->createInputObject( OIS::OISMouse, true ));

10 Listener registration in main.cpp: setupListeners GuiInputHandler* guiInputHander = new GuiInputHandler(); inputManager->mMouse-> setEventCallback(guiInputHander); inputManager->mKeyboard-> setEventCallback(guiInputHander);

11 GUI initialization main.cpp: setupScene platform = new MyGUI::OgrePlatform(); platform->initialise(renderWindow, sceneManager); gui = new MyGUI::Gui(); gui->initialise(); // GUI element creation may commence here

12 Let us create a progress bar! //global MyGUI::ProgressPtr progressBar; // in setupScene() // GUI element creation may commence here progressBar = gui->createWidget ("ProgressBar",100,10,500,30,MyGUI::Align::Center,"Main"); // skin^ position^ progressBar->setEnabled(true); progressBar->setProgressRange(stopTimes[numStops-1]); progressBar->setProgressPosition(0);

13 Indicate progress in every frame! progressBar->setProgressPosition(animTime);

14 Result

15 Add checkbox to toggle music on/off! MyGUI::ButtonPtr button = gui->createWidget ("CheckBox", 10, 40, 300, 26, MyGUI::Align::Default, "Main"); button->setCaption("Music");

16 Result

17 GameAudio.h: new method void setMusicVolume(float musicVolume) { this->musicVolume = musicVolume; AL_SAFE_CALL( alSourcef (ambientSource, AL_GAIN, musicVolume), "unable to set ambient volume"); }

18 Global function void guiToggleMusic(MyGUI::Widget* _sender) { MyGUI::ButtonPtr checkbox = _sender->castType (); if(checkbox->getStateSelected()) { checkbox->setStateSelected(false); gameAudio->setMusicVolume(0); } else { checkbox->setStateSelected(true); gameAudio->setMusicVolume(10); }

19 Add event listener button->eventMouseButtonClick += MyGUI::newDelegate( guiToggleMusic);

20 Result

21 The End


Download ppt "GUI II. Ogre3D GUI with MyGUI. Project initialization 06_02_Ogre3D_MyGui_Base.zip Extract Run: OgreMyGui.sln."

Similar presentations


Ads by Google