1. Neos VR
  2. News
  3. 0.8.19.41370 - More bugfixes for resource cleanup, memory usage optimizations

0.8.19.41370 - More bugfixes for resource cleanup, memory usage optimizations

More patch ups for bugs introduced by the rigorous resource cleanups and some more general memory/GC optimizations (especially when having lots of objects and LogiX)!

[h2]Optimizations:[/h2]
- Implemented SlimList internal data structure, a highly efficient list that avoids allocations when storing just 0 or 1 elements
-- LogiX Operators and Outputs now use this for their internal storage, making them in most cases a lot more memory efficient
-- Slots now use this for internal child management as well, removing allocations when they have only a single child (or none)

[h2]Bugfixes:[/h2]
- Added protection to instantiating the wrong generic type to some common components (based on feedback by @Anomalous)
-- This is just temporary solution that doesn't catch all cases, BE CAREFUL when picking a generic data type
- Disposed slots/workers will no longer return any components when queried, preventing bugs resulting from accessing disposed parts of hierarchy
-- This fixes lasers/tools/hand-menus breaking in some cases (reported by @Alex from Alaska, @Hayden (PolyLogiX - ZyroDesign) , @IAMERR0R404 and @alex derpy avali 🐦 )
- Slots, SyncBags, SyncLists and SyncDictionaries now clear their internal collections when disposed, this prevents more bugs and strange behaviors due to accidental accesses to disposed elements and allows for better GC by breaking up the references
- Fixed AvatarLiveIndicator preventing avatar badges from displaying and the default one not getting cleaned up properly (reported by @LeonClement and @Shifty)
- Fixed update and change events sometimes running on components that were disposed, but haven't gone through the destruction cycle yet
- Fixed Logix inputs not correctly unregistering themselves from inputs (this should fix crash/freeze when working with LogiX reported by @Vigilabo )
- Fixed TouchValueOption hover indicator getting stuck after the element is selected