Searching the forum already led to several findings, but these are already two years old and I guess much changed in the meantime.
So here is my question: What is the strategy for structuring and drawing a complex user interface in gamma? - with nested layouts, preventing events from passing through layers and separating logic and interaction from the rendering?
I’ve had really good experiences working with Notuiv by @microdee in beta in the past. Is there something similar already that I missed? Or is the simple answer, that I have to patch a structure like that on my own? Any other hints?
Hi @chk, have you heard of Elementa yet? I believe this is the strongest solution we currently have for UI in gamma, it has a lot of nice features and recently had a significant performance boost.
Sure I heard of Elementa - but what if I want to build a custom UI using hit detections and nested overlays in Stride?
Let’s say I have a fullscreen area that reacts on touch and changes some state of the application. But this area also contains several buttons that lead to other state changes - and these buttons should prevent the interaction being delivered to the area behind.
I am talking of an approach that is easily scalable to bigger applications.
Have you looked into porting this to gamma? @microdee did mention that this should be doable. Elementa is really nice but have also been thinking the lack of a such a system for 3D / Stride is limiting for some cases.
As a disclaimer you might have noticed that the last commits are from 2018 and since then I don’t agree with myself on a lot of design decisions I’ve made in that library. So it is provided unsupported “as-is”. I don’t have time anymore unfortunately to answer implementation specific questions, or questions about general usage. Basically you’re on your own when using this library, and you’re free to fork it.
Yeah atm I have a draft for Notui 2 in C# (not public yet) using entity component system paradigm, and it would allow much more freedom and better performance, but I will restart it for C++ actually, where I spend more of my time nowadays. For both I’m designing declarative syntax for UI building exploiting various language features (designated initializers, indexers, operator overloads, etc.). So as you can see the paradigms are not dead so far, but I have so many other things on my backlog and work to do I’m not sure when I will have time coming back to this (read in the following years)