OpenGl-based custom UIs
This is the first developed custom UI type, and is based on OpenGl. It is relatively flexible, but might be unpractical and overly time-consuming when developing complex UIs. Additionally, it is unlikely that it will be further developed or improved in future. For that reason, it often makes more sense to use the Qt-based custom UIs instead.
The OpenGl-based custom UI can take the form of dialogs that integrate buttons, edit-boxes, sliders or labels. Any action on custom UIs (e.g. button-click, text edition, slider movement) is reported as a message that can be intercepted by appropriate API calls. This allows customizing a simulation to a great extent. Following displays several OpenGl-based custom UI examples:
[OpenGl-based custom UI examples]
OpenGl-based custom UIs can be free (unassociated), or associated with objects. In the case a custom UI is associated with a scene object, copying/pasting/cutting/deleting the object will also automatically copy/paste/cut/delete the associated custom UI. This is an important feature (e.g. when copying a robot that displays its proximity sensor readings in a custom UI, you also want the sensor display to be copied). OpenGl-based custom UIs are saved together with a scene (all OpenGl-based custom UIs are saved), or together with a model if associated with any object in the model. OpenGl-based custom UIs can also be saved/loaded on their own: [Menu bar --> File --> Save OpenGl-based custom UIs as...] or [Menu bar --> File --> Load OpenGl-based custom UIs...]
If you prefer using customized Windows style dialogs instead of OpenGl-based custom UIs, refer to the plugin section. Additionally, make sure to have a look at the Qt-based custom UIs, which is the prefered method.