while coding on the track editor for MarbleGP I added some functions to allow adding decoration elements. When I was finished with this I thought that what I had coded there was more or less a scene editor, so I started a new project and put the code in there: YAISE (though this name might already have been used). My goal is to write an extensible scene editor which anyone can use as a basis for an own editor. It is available on sourceforge: https://sourceforge.net/projects/yaise/. For the moment just a few information on my architecture:
- It's all commands. Everything working in the editor is a command (see "commands/ICommand.h"), e.g. the camera movement or the scene renderer. Commands can be added later, they can be modified by other code (e.g. register buttons for the main menu) and so on.
- It might compile out-of-the-box. I have included everything necessary and hope that I didn't leave any absolute paths in.
- The Irrlicht version in the repo was compiled by me, by it only supports OpenGL (I don't want the old DirectX SDK)
- It's Irrlicht only, no other libraries needed (unless I forgot to remove something). That also means that I have to deal with some things that are not the best in the Irrlicht GUI, e.g. I'd like to drag and drop scene nodes in the tree to assign them to other parents, but I don't (yet) know it this works (had other stuff to code and look up so far)
- At the moment it doesn't contain much functionality. Today I added the undo / redo functions (which are quite important imho), but you can't save / load scenes are add / delete nodes to it, but you can use the input fields to modify the attributes of the nodes. Just make sure to press the Enter key to submit your input to the scene node (or Escape to revert it)
- New command factories to add / modify functions can be added without modifying the existing code. I had to look up some C++ magic, but at the bottom of the file "CCommandFactory_main.cpp" you see how new factories are registered
- some more functions (scene loading / saving, adding / removing nodes)
- add another renderer or two
- add the "Unknown scene node" and "Unkown scene node animator" factories and classes so that a scene can be loaded and saved even when it uses custom nodes. The scene nodes are just empty nodes which preserve the data, and the animator won't do anything either, just save the data from the loaded scene
What do you think of it?

I thought I now post it here as I don't know how much time I'll have in the coming weeks, but stay tuned for more happy days with updates and new functions


.
