Draft: Lua UI Position/Size Multipass Algorithm Rework
Originally authored by @uramer, work finished by me.
This uses Uramer's ui_multipass branch from his fork but rebases it to the current master which includes the updated Flex wrap and gap properties with the new track logic. Additionally, this finishes the work required to support the container widget and flex working together. Further, work was done to fix completely broken slot/templates not playing nicely with the new algorithm.
Tests have been done with popular UI mods
- Inventory Extender
- Stats Window Extender
Both of which use templates, slots, and MWUI (with Container widgets) heavily.
Additional tests were done on many flex standalones (video at the bottom).
However, more work is needed as the current implementation is almost twice as slow (Resizing the Inventory Extender mod's window is reporting 34ms LuaSync where the current master reports 19ms LuaSync). I haven't investigated the cause of this yet, but it seems this branch results in more pass calls than the previous implementation. This has been addressed and resolved.
- I have read the CONTRIBUTING guidelines
- My code runs locally
- My code passes CI on my fork