Created Entirely through use of Ogre Overlays, Overlay elements, and materials!
QuickGUI was formed with ideas from BetaGUI and CEGUI:
CEGUI similar user defined event handlers:
Code: Select all
mCloseButton->addEventHandler(Event::QGUI_EVENT_MOUSE_CLICK,&Window::hide,dynamic_cast<Window*>(mParentWidget));
mCloseButton->addEventHandler(Event::QGUI_EVENT_MOUSE_BUTTON_UP,&Window::hide,dynamic_cast<Window*>(mParentWidget));
Code: Select all
bool injectChar(char c);
bool injectKeyDown(const KeyCode& kc);
bool injectKeyUp(const KeyCode& kc);
bool injectMouseButtonDown(const MouseButtonID& button);
bool injectMouseButtonUp(const MouseButtonID& button);
bool injectMouseLeaves(void);
bool injectMouseMove(const int& xPixelOffset, const int& yPixelOffset);
bool injectMousePosition(const int& xPixelPosition, const int& yPixelPosition);
bool injectMouseWheelChange(float delta);
void injectTime(Ogre::Real time);
Button
ComboBox
Image
Label
List
ListItem
Menu
MenuList
NStateButton
Panel
ProgressBar
Sheet
Text
TextBox
TextCursor
TrackBar
Window (with TitleBar)
Other great points about the Library:
Works well with OIS, including automatic hiding of the cursor in DISCL_NONEXCLUSIVE mode. (can be disabled)
Works with joysticks. I have tested this with my Logitech RumblePad 2 and my Wiimote+nunchuck and it works great.
Proper cleanup of all widgets, including ability to clear all GUI. (support for multiple game states)
Library is easy to use and extend.
Licensing
I am not good on licensing, but I want everybody to have the option of using the library for commercial and non commercial use. (Same license as OGRE I guess)
QuickGUI OgreAddons Forum now available!
http://www.ogre3d.org/phpBB2addons/view ... 17a4edec33
Current Release: QuickGUI v0.9.5
Changes since v0.9.4:
- Use of Absolute/Relative/Pixel coordinates to define widget size and position.
- Added QGUI_EVENT_DRAGGED event to Widget Events.
- Added TrackBar Widget. Comes with default skin.
- Transparency Picking of Widgets. (Mouse Over event not fired unless cursor is over a non transparent part of widget apperance)
- Added dll/lib project, to create QuickGUI.dll.
- Disabling/Enabling of widgets. Disabled widgets are not detected, and do not handle any events. Disabled widget have their appearance altered. (can tweak)
- Upgraded Demo to use QuickGUI.dll, and show disabling of widgets, and TrackBar widgets.
- Fixed bug when switching from one Sheet to another.
- Fixed bug when showing a window with hidden titlebar.
- Added ComboBox::removeListItem(index) function.
- Added List::clearList() function.
- Removing widget name from global user created list, on destruction of Widget.
Changes since v0.9.3:
- Reference Name no longer exists. Every widget has the option for the user to specify a name. If a name is not specified, one will be generated for the widget.
- Checks are made to ensure all user given names are unique, for all widgets.
- Widget class stores a list of Child Widgets. All widgets were optimized to make use of this list.
- Widget::getWidgetList function for iterating through a given widget's children list.
- Removal of Plain Window.
- Removal of all FullSizeX widget functions.
- Creation of Sheet Widget. Sheet Widget's are the same size as the screen, and derives from Panel Class. In addition, Sheet Widget creates and manages Windows, instead of GUIManager.
- GUIManager creates, destroys, and manages Sheets. A Sheet is available by default. (DefaultSheet)
- Created and added MenuList widget!
- Added Widget* Widget::getChildWidget(const Ogre::String name); getChildWidget is recursive and checks grandchildren, etc.
- Made changes to ComboBox constructor, it is now smaller. List Width, List Highlight material, can be set after creation. Same applied for MenuList.
- Optimized Widget::timeElapsed function
- Created and added Panel widget! It could use a skin, but is fully functional. Window and Sheet widgets derive from the Panel widget. These 3 widgets are used to create most/all other widgets.
- Skin updates.
- Demo code updated to v0.9.4
Other
- gogoplayer is working on a serializer for sheets using TinyXML. Mostly completed at this time.
- An editor is also planned, but is still in design phases.
Download
http://stormsonggames.com/downloads/QuickGUIv0.9.5.zip
Thanks to OGRE, CEGUI, BetaGUI, and their respective owners, as well as the OGRE community in general. Also thanks to gogoplayer for helping me extend the library, as well as all who have used and/or given useful feedback to make the library better.
KungFooMasta