2020.10.1.1403 - Optimized moved Hierarchy event system, UIX & skinmesh bugfixes
Another chunk of optimization is done! The system that runs the moved hierarchy events has been reworked to the newer one, utilizing the more efficient hierarchy event framework originally made for dynamic variables. This should help reduce a lot of overhead and wasted cycles, particularly with avatars and worlds where there large parts of hierarchy disabled.
There might be some unexpected side effects of this change. We did some thorough testing and things seem to be running fine, but if you notice anything broken, please let us know!
Also some UIX bugfixes, fixes for the blendshape splitting, locale updates and more!
[h2]Optimizations:[/h2]
- Reworked the Slot Moved Event system to utilize the new hierarchy event system (originally made for the dynamic variable system)
-- This decouples the moved events from other events like Activation or slot changes, preventing the moved events from having to propagate to disabled parts of hierarchy in many cases (this should help with avatars that have a lot of local stuff on the avatar)
-- It also makes propagation a lot more efficient in cases where there are a lot of children under a single parent, but only some of them are listening on moved events
-- It also provides more elegant framework for these events and paves way to more planned future optimizations
- Decoupled Slot world transform events from slot changed events, reducing wasted cycles and unecessary registrations for moved events even when not needed
-- ReferenceNode will now register world moved events only when it's active. As a result it won't cause unecessary LogiX updates on users where it's on locally deactivated parts of hierarchy
- Added event cleanup to relay references on disposal, preventing potential memory leaks and wasted CPU cycles
[h2]Tweaks:[/h2]
- Reworked scheduling of rendering to texture to run after Neos' update loop, rather than immediatelly
-- This could potentially fix some rendering issues and artifacts
- Removed obsolete Menu anchor from avatar creator (reported by @Shifty | Quality Control Lead)
- Merged Spanish locale additions by @Skywind Kitsune
- Merged Japanese locale additions by @Melnus
- Merged German locale additions by @Elektrospy
[h2]Bugfixes:[/h2]
- Fixed UIX GraphicChunk assignement/removal not properly invalidating the layout, resulting in corrupt visuals (e.g. when toggling Mask on and off) (based on relayed report through @Karel | CEO for Neos Classroom)
- Fixed UIX GraphicChunks not getting hidden and disabled correctly in some scenarios when part of hierarchy is disabled
-- This fixes UIX getting corrupted reported by @SmolCookie and @Shifty | Quality Control Lead
- Fixed splitting mesh by blendshapes breaking if the mesh has no blendshapes or if all vertices are affected by blendshapes
- Fixed splitting mesh by blendshapes incorrectly assigning materials to the split parts in some cases (reported by @Shifty | Quality Control Lead)
- Fixed world browser showing incompatible sessions fetched through the contacts (reported by @Gunnar0 and investigated by @Shifty | Quality Control Lead)
- Fixed Interactive camera control Focus visual blocking the camera control buttons underneath (reported by @MirPASEC)
- GrabbableReceiverSurface will now cancel the animation when the object is grabbed or otherwise parented (based on report from @EvawdnousCimota#2730)
- Updated old version of cloud background worker to newer one, fixing issue where storage quota was calculated incorrectly for translators (reported by @Beaned, @jeana through @Shifty | Quality Control Lead)

There might be some unexpected side effects of this change. We did some thorough testing and things seem to be running fine, but if you notice anything broken, please let us know!
Also some UIX bugfixes, fixes for the blendshape splitting, locale updates and more!
[h2]Optimizations:[/h2]
- Reworked the Slot Moved Event system to utilize the new hierarchy event system (originally made for the dynamic variable system)
-- This decouples the moved events from other events like Activation or slot changes, preventing the moved events from having to propagate to disabled parts of hierarchy in many cases (this should help with avatars that have a lot of local stuff on the avatar)
-- It also makes propagation a lot more efficient in cases where there are a lot of children under a single parent, but only some of them are listening on moved events
-- It also provides more elegant framework for these events and paves way to more planned future optimizations
- Decoupled Slot world transform events from slot changed events, reducing wasted cycles and unecessary registrations for moved events even when not needed
-- ReferenceNode will now register world moved events only when it's active. As a result it won't cause unecessary LogiX updates on users where it's on locally deactivated parts of hierarchy
- Added event cleanup to relay references on disposal, preventing potential memory leaks and wasted CPU cycles
[h2]Tweaks:[/h2]
- Reworked scheduling of rendering to texture to run after Neos' update loop, rather than immediatelly
-- This could potentially fix some rendering issues and artifacts
- Removed obsolete Menu anchor from avatar creator (reported by @Shifty | Quality Control Lead)
- Merged Spanish locale additions by @Skywind Kitsune
- Merged Japanese locale additions by @Melnus
- Merged German locale additions by @Elektrospy
[h2]Bugfixes:[/h2]
- Fixed UIX GraphicChunk assignement/removal not properly invalidating the layout, resulting in corrupt visuals (e.g. when toggling Mask on and off) (based on relayed report through @Karel | CEO for Neos Classroom)
- Fixed UIX GraphicChunks not getting hidden and disabled correctly in some scenarios when part of hierarchy is disabled
-- This fixes UIX getting corrupted reported by @SmolCookie and @Shifty | Quality Control Lead
- Fixed splitting mesh by blendshapes breaking if the mesh has no blendshapes or if all vertices are affected by blendshapes
- Fixed splitting mesh by blendshapes incorrectly assigning materials to the split parts in some cases (reported by @Shifty | Quality Control Lead)
- Fixed world browser showing incompatible sessions fetched through the contacts (reported by @Gunnar0 and investigated by @Shifty | Quality Control Lead)
- Fixed Interactive camera control Focus visual blocking the camera control buttons underneath (reported by @MirPASEC)
- GrabbableReceiverSurface will now cancel the animation when the object is grabbed or otherwise parented (based on report from @EvawdnousCimota#2730)
- Updated old version of cloud background worker to newer one, fixing issue where storage quota was calculated incorrectly for translators (reported by @Beaned, @jeana through @Shifty | Quality Control Lead)


