Level Editor GUI Design (OpenGL or not)

Hello all.
I am designing a level editor for a game I am making with JOGL. My question is this, how are level editor gui’s made like Unreal Edit, World Craft, ect?

It looks to me like they use a 2D library for all the buttons, boxes, scroll bars, ect and have 1 to 3 windows that have the 3D stuff in it?
I think Maya, AC3D, Blender, ect all work this way too.

I think some of these programs utilize SDL which has all the gui stuff in there for you right?

So what would u guys do? Develop your own GUI components and use all JOGL to do your editor? Or use a 2D component like Swing or J2D to do all the GUI stuff and just have 1 3D rendered window?

Why choose one method over the other?

Thanks

Well you could do worse than take a peak at V-Script. :wink:

Basically its an OpenGL display wrapped up with a Swing gui around it. Nowt stopping you having 4 OpenGL displays and a swing surround either if you want the classical 3d projection (although I think QuArK’s way of doing it with 2 2d views and a small 3d view is much better way of doing things). Having said that I’ve done a level editor before that was just an OpenGL display with a set of custom GUI components transparently overlaid.

One is not much different to the other really, but if you use Swing you’ll save yourself a lot of time and you instantly get something that people are familiar with. Blender has all custom GUI widgets and the interface is frankly horrible because the widgets are so inconsistant.

In-game GUIs and menu screens are another matter. You don’t want a familiar look and feel there because you want it to stand out :slight_smile:

UnrealEd was orignally written with VB, but was later rewritten (UEd 2) on top of MFC - so it uses the Win32 API and not custom drawn widgets like Blender. The rest, I assume, make use of Win32 on windows as well. And no, SDL does not have any GUI stuff. There are some libraries which implement GUIs using SDL, but nothing complex or feature rich.

With Java, you have two GUI APIs available to you. Save the custom bit for the in-game stuff so you can keep it simple and use Swing or AWT for the editors (unless you really, really, really want an in-game editor).

I think most windowed based level editors, 3d applications use the MFC to do traditional ui stuff and have several viewports that render the GL image. There are 3rd party ui libaries for opengl too (so you dont have to write your own). I wrote a set of ui wigets before (button, list boxes, text fields, text areas, event handling.etc…) but it was more hassel then what it was worth (its an extensive project on its own). Using opengl to do 2d ui components in your application allows you to go full screen and still beable to interact with your widgits. Advantages to using gl built ui components would also allow you to customize the look and functionality of your widgets. Using a the standard foundation classes would generally make your application to look like every other windowed application. At work we develop for MAC OS X and use the Cocoa Framework to do all our buttons, its easy to do and the drag and drop tools makes for rapid assebly of gui’s (this is the same for JFC and MFC). I’m not sure if there are tools to allow for visual creation of opengl UI’s based on the those 3rd party gl ui libaries. Persionall if i had a chose i would stick with the traditional foundataion classes (swing, mfc, Cocoa…etc) since those libraries are tried tested and true, and have a standard look and feel, i guess another advantage would is a gl ui’s are more plateform independent but since where deaing with swing, thats a non-issue. A problem with them would be that they may be nostandard and learning the application that was implemneted with these UI would be more difficult, (Blender is trickier to learn).

Thanks for all your input!!!

Since I am most familure with Swing I have decieded based on your recomindations to use Swing.

Thanks again!