Side note: I'm currently having quite a busy week. Hope I can review and test your camera code further this week.
There are quite a few things that could work differently with your UI system, and with my experience from working on the camera system, I think I can handle this.
I think it's a good idea to enhance the UI framework of the engine. There are a lot of open issues on this topic and even more untracked potential enhancements. One thing that immediately comes to my mind is proper editor support for GUIComponents in the utiLITI editor. Depending on how far you want to take this, I think this is something that would make the engine way more beginner-friendly.
Instead of allowing multiple Screens at once, I could downgrade the GameScreen to a GuiComponent.
Then the GameScreen, or, I suppose, GameComponent, could be attached to a Screen.
Then a screen could be host to any number of GameComponent.
Actually, Screen
already extends GuiComponent
so, in theory, it could already be the child of another screen.
Then we could use either an existing package or a new layout configuration code could set the size and location of the components.
We try to avoid references to other packages whenever possible. Before using any external library, please consult with me.