I have a few tools I’ve created over time which run as separate LWJGL apps - the biggest two the level editor for Quix, and a 2d skeleton creator/animator. These are written to be as WYSIWYG as possible, which is why they use a LWJGL display and tend to share lots of the actual low-level classes and rendering with the games they were made for. Due to using a LWJGL diplay I chose to use Cas’ Spaghetti gui system (the one from 'flux), which has since then been extended and tweeked in various ways. A nice side effect of this is that I can actually display sprites/textures in the GUI without any problems as they’re using the same texture loader classes/backend. Images here and here to give you some idea of what the UI looks like.
Now spaghetti has served it’s purpose admirably, but it’s not exactly designed for this kind of work, and has numerous quirks when used in this way which make it less than ideal. Basically I’d like to switch over to a ‘proper’ GUI system. Which basically gives me the choice of Swing or SWT, and if I choose SWT the additional choice of whether to do a standalone tool or an Eclipse plugin.
Snags:
- I need a LWJGL display. I have no idea if Swing or SWT would be prefered for this.
- I’d like to share as much code as possible so that in-game doesn’t end up rewriting the outgame stuff. Ideally they’d all become game-agnostic, which should be doable with some refactoring. If I have to package up my classes into an eclipse plugin that’s going to make it harder to keep the two in sync.
- I’m still not sure of the advantages of having an eclipse plugin vs. a standalone app. I know Kev did a nice map editor as a plugin (which I’m going to try in just a bit) but it still seems like an odd idea to me.
- Swing gets a plus because I already know enough of it to get going without too much pain. On the other hand I’m not keen on working with Swing code (tree views, dnd and layout managers in particular I find rather frustrating) and it’d be good to try something else.
Anyone any suggestions/advice for what things to look into? Or any big advantages or disadvantages I’ve missed?
Cheers.