I have been thinking about (3D) editor UI layouts. They are always a grand compromise, since things get more complex over time.

My pet peeve is fiddling with all the docking stuff.

I've come to like Rider, since it has just 3 areas divided into 2 for tool windows (plus you can split the docs as you wish).

Godot has similar strict setup, but the limitations are sometimes on the way (many fixes recently, though).

Maybe there's a version that works?

Micha posted recently a picture of Keen games engine, which is really interesting:
https://mastodon.gamedev.place/@vurtun/116154638361530734

It goes really well from simple to complex assets. Their data model allows some flexibility that other engines may not achieve (the project view goes down to a single object).

One of the things I also experimented in my data inheritance demo was custom layout for Dear ImGui.

https://github.com/memononen/data_inheritance/blob/main/src/imgui_utils.h#L114

I used rect cut, and accepting that most things are multiple of ImGui's frame-height anyways, makes reasoning about the layout easy.

The code takes row or widget content rect as starting point and packs items to start or end, or based on a percentage.

Another interesting thing that came out of that testing was that having fixed height makes it easy make container widgets, like a simple property row here: https://github.com/memononen/data_inheritance/blob/main/src/edit_shape.c#L31

That example packs widget label and revert button and returns the rect where to put your labels in.

I'm not sure if that is lazy or awesome, but it did solve a composition issue I've had with many of my own imguis. Of course works only if some of the content size is known.

data_inheritance/src/edit_shape.c at main · memononen/data_inheritance

Data Inheritance proto. Contribute to memononen/data_inheritance development by creating an account on GitHub.

GitHub