Y.A.I.S.E. - Yet another Irrlicht scene editor

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
Brainsaw
Posts: 1239
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Brainsaw »

Hello Irrlicht community,

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
The things I want to add next
  • 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
My goal in the end is that there is a new scene editor which can easily be used and expanded by anyone who needs a custom editor. I am also planning to move the code I already have for my MarbleGP Track Editor over (as a separate branch), for one that I can release an editor and that there is a working example on how to expand the base.

What do you think of it?

Image

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
Last edited by Brainsaw on Wed Jan 08, 2025 5:33 am, edited 1 time in total.
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
n00bc0de
Posts: 116
Joined: Tue Oct 04, 2022 1:21 am

Re: Y.A.S.I.E. - Yet another Irrlicht scene editor

Post by n00bc0de »

This is a clean looking editor.

If you are still having issues with the drag and drop, you should look into wxWidgets. I am using it for my editor and its got a lot of flexibility. The only issue is it does add dependency bloat so its definitely not for everyone.
Brainsaw
Posts: 1239
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Brainsaw »

I want to avoid adding any libraries, for this particular problem I might use the "rightclick --> assign parent" option if i don't get anywhere with drag and drop. I think the interfaces I implemented are flexible enough so that any developer who wants to use wxWidgets can add it.
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
Noiecity
Posts: 314
Joined: Wed Aug 23, 2023 7:22 pm
Contact:

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Noiecity »

Interesting, you can really work on quite a few things just using the irrlicht library. Although it is a challenge to build an application without graphical aids(like QT), once you learn to master the build the rest is usually easier, and the performance is usually better....

I think you can copy MSVC files which compiles c++ in irrlicht projects for windows, and include it in your project to compile irrlicht from a scene editor like yours... although you would need to produce code in c++, I think that would be convenient in an editor in the future.
**
If you are looking for people with whom to develop your game, even to try functionalities, I can help you, free. CC0 man.

Image
**
Noiecity
Posts: 314
Joined: Wed Aug 23, 2023 7:22 pm
Contact:

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Noiecity »

By the way, good name lmao
**
If you are looking for people with whom to develop your game, even to try functionalities, I can help you, free. CC0 man.

Image
**
CuteAlien
Admin
Posts: 9923
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by CuteAlien »

Interesting project and nice test for Irrlicht UI. Drag & drop for trees might need more functions in the IGUITreeView. I suppose at least something similar to the getItemAt function which the listbox has for example (aka finding IGUITreeViewNode below mouse). If you make a patch I can apply them. Maybe you might even want to add an option to directly allow drag&dropping elements in the tree. I've started using treeview myself a bit last year and it got a bunch of fixes, so I hope you use svn trunk version.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Brainsaw
Posts: 1239
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Brainsaw »

I'll keep that in mind, and I've been searching for a "getItemAt" method anyways ;). First of all I want to add some missing functions, then I'll tackle that.

I am working with a locally compiled version, but it's not up to date so I'll also get the latest trunk version when compiling a new lib
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
CuteAlien
Admin
Posts: 9923
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by CuteAlien »

OK, if it's older than ~9 month, then definitely update first before you touch that class. If I remember right I might also have added some functions. Thought biggest changes were about speed - old tree was so slow that when I used it for a larger scenegraph it was slower than rendering the scene itself.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Brainsaw
Posts: 1239
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Brainsaw »

It is definetly older. At the moment I am doing some changes, mainly creating a GUI element of my own for editing attributes so it will take a while until I update ;) . I think the next push to the repository will come this weekend, and at that point you have a scene editor if you clone the repository and compile it. Another "do that first" change is to add project managment - one thing which always annoyed my in IrrEdit. I want the user to be able to define some projects, mainly the working directory, and some settings will be project-specific (e.g. the last opened scene)
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
CuteAlien
Admin
Posts: 9923
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by CuteAlien »

You may want to take a look at the GUIEditor in Irrlicht for elements to edit attributes.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Brainsaw
Posts: 1239
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Brainsaw »

I have just pushed an update to sourceforge - actually many commits, but thanks to GIT it's all just one push to get it on the server.

YAISE is now more or less a complete editor. I have added the following (plus what I forgot ;)):
  • you can now add scene nodes
  • you can delete scene nodes
  • I have added projects. For a project you define a working directory so that you can seamlessly switch between projects you are working on
  • every operation (unless I forgot some) have undo / redo
  • you can load and save scenes
  • I have added a class "IDataHub" which is given to the command constructors. This interface provides access to all necessary objects to reduce the number of parameters I pass
  • it is now possible to define attributes in the attribute editor instances which point to files (e.g. the "Mesh" attribute). For these attributes a button is added which leads to a file open dialog
  • The fun thing: I have added factories for unknown scene nodes and unknown animators. This way you can open scene files of projects you may not even have access to. In MarbleGP I use custom scene nodes for a lot of things (e.g. defining the physics parameters of an object), and I can load and save the tracks without breaking them. These unknown scene nodes are just used for loading, but they to not offer the creation of these elements later on
Next I'll give the update to the Irrlicht Tree View we discussed about earlier a try. When I'm done with that I still have some missing features:
  • cloning of nodes is not yet possible
  • I have started with a log display today but it leads to too many memory leaks so I disables it for the moment. IIRC there is some code floating around in the forum for a text field with colored text - I guess that would be a better idea than using lots of static text elements
Here is a screenshot of the awesome and breathtaking project management dialog of YAISE:
Image.

I hope you like the changes I implemented
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
Brainsaw
Posts: 1239
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Brainsaw »

I have implemented a first draft of the drag and drop functionality for the tree view and started a thread in the "Code Snippets" forum: viewtopic.php?t=53101
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
Brainsaw
Posts: 1239
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Brainsaw »

I just pushed some commits to the repository with the following changes:
  • Added a log display (see screenshot)
  • Fixed an issue with the camera controller consuming the mouse wheel events when it shouldn't
  • I added a "preferences" dialog with some quite limited settings at the moment (font size and logging)
  • Added a "clone scene node" command
  • Added some undo / redo items which I forgot (if you move a scene node with the mouse you can now undo it)
  • Updated to my experimental version of Irrlicht with the drag / drop functionality in the tree view. This is not (yet?) part of the official Irrlicht repo, but I wanted to try it in a real project, and at first glance it seems to do the job
The next step will be to add a possibility to select from multiple renderers, I think I'll add an XEffects renderer just to show how it works. Once I'm done with that I think I'll create a branch and see if my plan works, i.e. to easliy modify the editor for project-specific editors, in the case "TrackEd - the MarbleGP track editor"

In this screenshot you see how a MarbleGP track looks when rendering it with Irrlicht. You can also see log messages from the Unknown Scene Node factory (also the Unknown Scene Node Animator Factory had some work), otherwise you wouldn't see much as I'm using custom scene nodes for the physics definitions.
Image
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
Brainsaw
Posts: 1239
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by Brainsaw »

Another push to the repository. This time it's just a single update: I have implemented a way to select the renderer, and it comes with the default Irrlicht renderer and a XEffects one as well (though this doesn't use it's potential, it's just in for demo).

I have introduced a new interface "IRenderer" which (in the default renderer) calls SceneManager->drawall(). The instances are created by the command factories, identified by a string. In the "Preferences" dialog a combobox with the available renderers is shown, and if one provides extra settings they are shown as well. Originally I wanted a dedicated "RendererRegistry", but I had some C++ problems with this so I turned to the command factory.

Btw: I noticed today that the app does not compile out of the box, it has a single dependency besides Irrlicht: the FreeType font library. I am using vcpkg (great tool) so I didn't realize until I tried on a PC without. I think I'll add the library to the repo in the near future

Image
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
chronologicaldot
Competition winner
Posts: 699
Joined: Mon Sep 10, 2012 8:51 am

Re: Y.A.I.S.E. - Yet another Irrlicht scene editor

Post by chronologicaldot »

Thank you for sharing this!
I haven't used it yet, but it's nice that it's available.
Post Reply