2020.11.27.104 - Nameplate, voice config, reflection probe tweaks and bugfixes
Sorry for smaller build again focusing on bHaptics mostly, but here are some important additions, tweaks and bugfixes. The new nameplate hiding mechanism should behave better now, there are some important bugfixes for the audio system (should fix many cases of background exceptions with playback and voice, causing audio stutters and performance degradations), physics world crash bugfixes, unityfing the voice audio configuration to the new system and some bugfixes for the ReflectionProbes too and more.
[h2]New Features:[/h2]
- AvatarAudioOutputManager now uses the same configuration structure as AvatarAudioConfiguration for Whisper, Normal, Shout and Broadcast, exposing every property for each of the modes
-- This unifies and expands the configuration options, allowing you to adjust/drive your default MinScale and other properties for all modes
-- The old properties are now deprecated, but will be automatically transfered on load
-- Note that Normal, Shout and Broadcast config can be overriden by presence of AvatarAudioConfiguration
[h2]Tweaks:[/h2]
- When nameplate visibility is set to Non-Contacts only, the own nameplate will now be hidden as well (based on suggestion by @Enverex, @Tatsu Kimiero, @Shifty | Quality Control Lead and others)
- Added "AlwaysShowToContacts" to AvatarNameplateVisibilityDriver, which will show the nameplate to contacts even when Non-Contact only mode is on
-- This can be used to show certain parts of the badge that are desirable to be visible even if the name itself is not, like heartrate monitors and similar (hiding all badges will still hide it)
- AvatarNameplateVisibilityDriver now supports explicit local hiding of specific badge by assigning False to the driven visibility field
-- This is mainly to fix certain items that temporary hide badges (e.g. when capturing a screenshot of the user)
-- The badge is hidden only for user who has assigned the value, it will still be visible to everyone else
- Added Key enum type to the EnumToInt and IntToEnum default templates
- Fixed ability to bypass SimpleAvatarProtection using ExternalSlotSaver (reported by @rhenium_75)
- Permission system security improvements (based on feedback by @Cyro)
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Russian locale additions by @Shadow Panther [RU/EN, UTC+3]
- Merged Korean locale additions by @MirPASEC
- Merged Japanese, Esperanto and Chinese locale additions and tweaks by @Melnus
[h2]Bugfixes:[/h2]
- Reworked the audio buffer resampling algorithm to fix incorrect sample count calculations in certain scenarios as well as errors introduced by floating point imprecision (based on log and report by @Turk)
-- This fixes various cases of exceptions being thrown in the background when playing/processing audio (both audio clips and realtime voice for example), causing performance degradation and audio glitchiness
- Added type checks to ValueNode, to avoid instantiating versions with wrong type argument (based on report by @Cyro)
- Fixed AvatarAudioOutputManager not linking the properties properly in some cases
- Fixed exceptions when loading certain avatars with VRIKAvatar, when those avatars contain slots with null names (found in a log from @Turk)
- Fixed AvatarNameplateVisibilityDriver not updating visibility in some cases (e.g. on spawn as reported by @Enverex)
- Fixed BoxGizmo not being sized properly with the developer tooltip when it's in the size-only mode and not at the world's origin
-- This fixes the range of Reflection Probes misbehaving when resized with the dev tool (reported by @Cyro and @Shifty | Quality Control Lead)
- Added sanitization of NaN values for collider primitives, resulting in world crashes (based on report and sample world by @Shadow Panther [RU/EN, UTC+3])

[h2]New Features:[/h2]
- AvatarAudioOutputManager now uses the same configuration structure as AvatarAudioConfiguration for Whisper, Normal, Shout and Broadcast, exposing every property for each of the modes
-- This unifies and expands the configuration options, allowing you to adjust/drive your default MinScale and other properties for all modes
-- The old properties are now deprecated, but will be automatically transfered on load
-- Note that Normal, Shout and Broadcast config can be overriden by presence of AvatarAudioConfiguration
[h2]Tweaks:[/h2]
- When nameplate visibility is set to Non-Contacts only, the own nameplate will now be hidden as well (based on suggestion by @Enverex, @Tatsu Kimiero, @Shifty | Quality Control Lead and others)
- Added "AlwaysShowToContacts" to AvatarNameplateVisibilityDriver, which will show the nameplate to contacts even when Non-Contact only mode is on
-- This can be used to show certain parts of the badge that are desirable to be visible even if the name itself is not, like heartrate monitors and similar (hiding all badges will still hide it)
- AvatarNameplateVisibilityDriver now supports explicit local hiding of specific badge by assigning False to the driven visibility field
-- This is mainly to fix certain items that temporary hide badges (e.g. when capturing a screenshot of the user)
-- The badge is hidden only for user who has assigned the value, it will still be visible to everyone else
- Added Key enum type to the EnumToInt and IntToEnum default templates
- Fixed ability to bypass SimpleAvatarProtection using ExternalSlotSaver (reported by @rhenium_75)
- Permission system security improvements (based on feedback by @Cyro)
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Russian locale additions by @Shadow Panther [RU/EN, UTC+3]
- Merged Korean locale additions by @MirPASEC
- Merged Japanese, Esperanto and Chinese locale additions and tweaks by @Melnus
[h2]Bugfixes:[/h2]
- Reworked the audio buffer resampling algorithm to fix incorrect sample count calculations in certain scenarios as well as errors introduced by floating point imprecision (based on log and report by @Turk)
-- This fixes various cases of exceptions being thrown in the background when playing/processing audio (both audio clips and realtime voice for example), causing performance degradation and audio glitchiness
- Added type checks to ValueNode, to avoid instantiating versions with wrong type argument (based on report by @Cyro)
- Fixed AvatarAudioOutputManager not linking the properties properly in some cases
- Fixed exceptions when loading certain avatars with VRIKAvatar, when those avatars contain slots with null names (found in a log from @Turk)
- Fixed AvatarNameplateVisibilityDriver not updating visibility in some cases (e.g. on spawn as reported by @Enverex)
- Fixed BoxGizmo not being sized properly with the developer tooltip when it's in the size-only mode and not at the world's origin
-- This fixes the range of Reflection Probes misbehaving when resized with the dev tool (reported by @Cyro and @Shifty | Quality Control Lead)
- Added sanitization of NaN values for collider primitives, resulting in world crashes (based on report and sample world by @Shadow Panther [RU/EN, UTC+3])


