pipeline for adding a new window type
Posted: Fri Aug 05, 2005 21:45
If I want to make Windows with new functionality, what are the steps that I need? Does this change with the Falagard system? My initial take on it includes these steps:
1 - derive from a CEGUI::Window
2 - make a CEGUI::WindowFactory subclass for this new type of window
3 - provide properties for your subclass which will set any of the handles, similar to those of other CEGUI::Window classes.
4 - find where CEGUI registers their core supported WindowFactories and include yours there.
5 - extend the CEGUI::XMLParser(s) to support your properties, should be easy.
6 - provide support for your subclass in the 'WindowsLook' or other "look" libraries. this might be the hard part, because I believe it is the responsibility of these "look" libraries to pass instructions to the OpenGLRenderer, which is probably generalized to commands for lines and polygons.
7 - make a layout.xml which will try your new functionality.
8 - refine your logic for what you want to happen when the window is out of focus, inactive, destroyed, etc. You have control for these events in the virtual functions from the base class, CEGUI::Window.
Close?
1 - derive from a CEGUI::Window
2 - make a CEGUI::WindowFactory subclass for this new type of window
3 - provide properties for your subclass which will set any of the handles, similar to those of other CEGUI::Window classes.
4 - find where CEGUI registers their core supported WindowFactories and include yours there.
5 - extend the CEGUI::XMLParser(s) to support your properties, should be easy.
6 - provide support for your subclass in the 'WindowsLook' or other "look" libraries. this might be the hard part, because I believe it is the responsibility of these "look" libraries to pass instructions to the OpenGLRenderer, which is probably generalized to commands for lines and polygons.
7 - make a layout.xml which will try your new functionality.
8 - refine your logic for what you want to happen when the window is out of focus, inactive, destroyed, etc. You have control for these events in the virtual functions from the base class, CEGUI::Window.
Close?