2020.8.14.437 - Approximate comparison node, world search refactoring, fixes
Another small build sorry! Most of the work goes into the new World UI. There are a few tweaks and fixes that I don't want to be held up and approximate comparison node! You can play with the new World List UI if you want, but it's still very incomplete and very WIP!
[h2]New Features:[/h2]
- Reworked cloud backend for search to support proper pagination of results for arbitrary queries, rather than using date ranges
-- This means ranges of records can now be queried as well (this is crucial for the new world UI)
- Added approximate comparison node (≈) which returns whether to floating point numbers are approximately the same, with an optional epsilon input (I recommend leaving it default, the approximate comparison auto-adapts with the size of the values) (based on feedback by @Rue Shejn | Artist 3D and @Earthmark)
[h2]Work In Progress Features:[/h2]
- Implemented a new more efficient record (world/item) searching and pagination system with local caching of items for the new World UI
- The WorldListManager now supports toggling different soruces on and off (Local Worlds, Sessions, Published World), limiting how many items are visible and has proper uniform pagination control via "SkipItems"
[h2]Tweaks:[/h2]
- Optimized cloud storage quota update mechanism, to prevent certain operations (e.g. syncing many items or deleting folders in the inventory with many subitems) from starting multiple parallel copies, wasting resources and causing unnecessary cloud server usage
[h2]Bugfixes:[/h2]
- Fixed inventory folder deletion waiting for the cloud storage to be fully updated for each deletion task, making deleting folders with many subfolders and items a very slow process (based on report by @Enkiko)
- Fixed compound RecordId comparison against string always resulting in false, breaking all systems depending on this (e.g. not being able to correctly fetch current sessions for a world with given ID)
- Fixed world announcer incorrectly reporting that all sessions with given WorldID have ended, when only one of them has, in cases where there are multiple sessions running of particular world
- Fixed cloud server not caching world search results properly and throwing internal exceptions, resulting in slow loads of the world browser and increased sever load

[h2]New Features:[/h2]
- Reworked cloud backend for search to support proper pagination of results for arbitrary queries, rather than using date ranges
-- This means ranges of records can now be queried as well (this is crucial for the new world UI)
- Added approximate comparison node (≈) which returns whether to floating point numbers are approximately the same, with an optional epsilon input (I recommend leaving it default, the approximate comparison auto-adapts with the size of the values) (based on feedback by @Rue Shejn | Artist 3D and @Earthmark)
[h2]Work In Progress Features:[/h2]
- Implemented a new more efficient record (world/item) searching and pagination system with local caching of items for the new World UI
- The WorldListManager now supports toggling different soruces on and off (Local Worlds, Sessions, Published World), limiting how many items are visible and has proper uniform pagination control via "SkipItems"
[h2]Tweaks:[/h2]
- Optimized cloud storage quota update mechanism, to prevent certain operations (e.g. syncing many items or deleting folders in the inventory with many subitems) from starting multiple parallel copies, wasting resources and causing unnecessary cloud server usage
[h2]Bugfixes:[/h2]
- Fixed inventory folder deletion waiting for the cloud storage to be fully updated for each deletion task, making deleting folders with many subfolders and items a very slow process (based on report by @Enkiko)
- Fixed compound RecordId comparison against string always resulting in false, breaking all systems depending on this (e.g. not being able to correctly fetch current sessions for a world with given ID)
- Fixed world announcer incorrectly reporting that all sessions with given WorldID have ended, when only one of them has, in cases where there are multiple sessions running of particular world
- Fixed cloud server not caching world search results properly and throwing internal exceptions, resulting in slow loads of the world browser and increased sever load


