Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
134 stars 2 forks source link

Rework Inspectors to a customizable, modular system #563

Open Frooxius opened 10 months ago

Frooxius commented 10 months ago

Is your feature request related to a problem? Please describe.

Inspectors have a lot of accumulated cruft over time and most of their behaviors are hardcoded, not following newer design principles for Resonite UI. This makes them harder to extend and continue their development and hard to modify and customize by users.

Describe the solution you'd like

We will rework inspectors to be composed of a number of modular, shareable parts. Each part is going to be containerized in a facet - hierarchy view, component view, interaction buttons, navigation controls and so on.

Those individual parts will be composed together in a facet container and communicate via dynamic variable spaces to exchange functional information (e.g. which slot is currently selected).

With this, the inspectors can be mostly constructed and tweaked in-game. We will build a default basic template inspector, but that can be easily replaced or extended by users who wish to make their own. Using the entity interface system (same that's used for custom video players, audio and so on), users will be able to favorite their own inspector.

By having pieces modularized, they can also be easily reused, instead of needing several independent implementations for each - e.g. hierarchy view can be useful for a number of UI's - not just the inspector, but various wizards, other editors and so on. Better code & UI reuse will reduce workload and allow us to put more effort into each piece, rather than re-implementing each several times over.

Describe alternatives you've considered

N/A

Additional Context

No response

JackTheFoxOtter commented 1 month ago

Because @TisFoolish brought it up in #2780 I'm curious if the inspector re-work will change the fact that inspectors are always generated by the host, because that has some unpleasant side affects in the current implementation. Namely the slot name's color (transparent if non-active) being the one the host would see, not you would see, so if you're inspecting something in a culling zone that's culled for the host, but active for you, the hierarchy in the inspector is shown as if the hierarchy is disabled for you as well. There are also issues with the expand button icon not changing automatically when you aren't the host, making slots that have children appear as if they don't have any when collapsed.

JackTheFoxOtter commented 1 month ago

Ah, nvm I've just seen your comment in #638, which answers my question.