Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
193 stars 9 forks source link

optimize inspector/other long UIX lists with RecyclerView/UICollectionView-clone #3887

Open mpmxyz opened 1 year ago

mpmxyz commented 1 year ago

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

Inspecing root takes... ages... to... complete... The reason is that UIX elements are generated even if they are far far away from being visible.

Your smartphone solves that by UI elements that "recycle" individual items before reuse. (limiting UI generation to only a bit more than is visible)

Relevant issues

208 describes manual paging.

This request would basically automate paging in a way that the user wouldn't notice.

Describe the solution you'd like

A component that works together with a ScrollRect component to trigger loading/unloading new UI automatically. Instead of doing too much magic behind the scenes it would do the following whenever the ScrollRect is moved or the Layout has changed:

  1. check if you almost reached the end of content -> loadNext()/loadPrev()
  2. check if you can safely remove UI outside the buffer zone around the visible area -> unload(elem:Slot)

loadNext(), loadPrev() and unload(elem:Slot) are callbacks that can trigger the UI generation/cleanup. Allowing LogiX to handle those callbacks would make this feature even more powerful.

Describe alternatives you've considered

If you are willing to risk a (not yet reported) Mask+OrderOffset change bug and to endure visual glitches by a moving yet not moving ScrollRect content, you can already do the thing using plain UIX and LogiX. This does not optimize inspectors though: neosdb:///2bd21c4844eee8d1ce4d51adf5defb065c823fcbd2e4d8d9294c95ceb534d626.7zbson (Don't ask how much work and LogiX rewrites were necessary! lol)

Additional context

No response