This is a screenshot from the world editor (the "Immortal Editor") i'm developing for my 3D game engine ("Undead Engine"). It actually shows the basic GUI (viewports, 3d preview) and a small scene made of solids with different materials. Also in the viewports you can see the "camera position" (Top viewport also shows where the camera looks) and the "pivot" which is used for some editing operations as the "center" of the operation (for example when toy rotate some vertices, they'll be rotated around this point).
Currently the editor itself (that is, the "editing code") is in a very early stage - it's basically work of a few days (see below). However, the editor is already able to be used for the creation of simple Quake1-like worlds, since it supports:
* solid creation/deletion
* multiple selections of faces
* moving of whole faces or individual vertices
* rotation around the "pivot"
* scaling from the "pivot"
* manual and automatic UV mapping for faces
* ability to convert solids to "rooms" (aka the "Hollow" operation in most editors :-)
* client/server approach for editing
* internal editing language which can be used with the "Console" to edit the world data (actually the GUI actions are translated to IEL commands and 'sent' to the editor server)
The editor is based on SDL and BSGUI, a crossplatform (ideally) OpenGL-based GUI toolkit i started two months ago. And of course it uses the Undead Engine :-).
The world data manipulation code is one of the most recent things (i started coding them a few days ago), while other stuff is a bit older. For example the "Undead Engine project" is 1y2m (although i had some great 'holes' of some months in it's development - and the engine was written from scratch three times).
There are lots of things i would like to put in it to be able to safely say that it is "production ready". The major thing will be to be able to use the engine for a "test walk" in the map (in other words, "make the 'Full Preview' button do something"). This requires Undead to be able to render full worlds (it can do that, but currently it just sends the whole level data... it must use a occlusion culling/hidden surface rejection/pvs set of algorithms to speed up things).
Other things are new world editing features, such as duplication, extrusion of faces, prefabs, paths, curves, etc.
Also i would like to add code for real client/server situations: make the editor listen for connections in a socket (server) and other editors to be able to connect to that and work on the data that it has. While the current design supports that (and i'm carefully trying not to break it), it isn't a big priority (the "protocol" isn't good for slow internet connections - if for internet at all actually, and i only have a dialup, so not much use for me now).
That was it for now. I will upload some more stuff as time goes and development proceeds :-).