Taking a look at the existing UI stuff, I can only assume no one is actually using it to do anything meaningful. The UIEditBox, for example, doesn’t have a way to get or set the text being edited. That would seem to be somewhat necessary in normal use (not to mention it entering a space or an apostrophe when typed rather than spelling those words out). Further there seems to be no way to react to interface events, indeed, no notion of them at all. Various other things one would expect to find in a user interface toolkit are conspicuously lacking.
There has been much talk of a new UI system over the past four months, but it seems to remain elusively out of our grasp (apologies in advance to guurk). Given that the next major phase in my application (a commercial game) is entirely user interface related and having turned up no better options after a few hours of intensive Googling, I’m faced with the following choices:
- Write my own user interface library from scratch using the input and graphics primitives in JME
- Port some existing GL-targeted interface toolkit to JME
- Wait patiently for manna to fall from the sky
I have 8 hours of productive work every day to devote to accomplishing this goal (though my employers would probably disapprove of me spending all day doing #3), so I’m fully prepared to undertake #1 or #2 starting tomorrrow morning. I just wanted to pipe in here, say hello (since I haven’t been on the forums before) and confirm that no one is indeed lurking in the bushes with some sort of usable user interface system that they just haven’t told anyone about.
Per #2, I took a look at CEGUI and while it’s a fine toolkit, porting it outright would be rather difficult. I also dug up some info on GLOW and NGL/NUI, both interesting but also C++. Better, most likely to develop a new framework with similar principles in mind.
While I appreciate the notion of a broadly usable toolkit that would magically work with every engine and GL-binding under the sun (apologies in advance to Schabby), what I need is a robust, useful toolkit that works with JME, so that’s what I’ll be working on.
I have already integrated JME with our networking toolkit (http://www.threerings.net/code/narya/) which required the addition of an event queue to the main application loop (network events are processed in the spare time in a fixed framerate rendering loop), I am inclined to go with an event-based architecture for the user interface system as well, given that most people are familiar with that approach.
Anyhow, I’ll make the code available in a publicly accessible version control repository, so anyone can track the progress of development and make use of it as things are being developed (boy I would love to see more source code from the rest of you guys, there are a lot of one off samples, but nothing that demonstrates sensible application organization). The (trivial) integration of Narya and JME is already publicly available in Narya’s Subversion repository, along with a few other bits.