1. Neos VR
  2. News
  3. 2020.12.8.638 - Controller Battery Level access in LogiX, virtual haptic sampler

2020.12.8.638 - Controller Battery Level access in LogiX, virtual haptic sampler

Sorry for smaller build, hopefully there are some useful goodies! You can now create virtual samplers for the haptic system for testing or building NPC's with them (and I imagine many other use-cases), you can now access your controller battery level with LogiX and there are new options exposed on the VideoTexture provider for loading videos from online services.

The eye tracking and Oculus SDK's were updated as well and this build also has a regenerated precache, so the new MTC loads quick for new users. There are a bunch of other smaller tweaks and bugfixes as well.

[h2]New Features:[/h2]
- Added "VirtualHapticPointSampler" (under Input/Haptics) which samples and outputs the haptic sensations in the environment (based on feedback by @guillefix)
-- This can be used for testing the haptic system of building virtual NPC on top of it, that are able to "sense"
- Added "Battery Level" property to all controllers (accessible through Standard Controller or specific controller nodes) (requested by @emiru)
-- Battery level is reported in range 0...1
-- Negative values mean that battery level isn't available
-- Note that not all controllers/API's might support getting the battery level. Even though the property is available
- Added MaxWidth and MaxHeight optional overrides to VideoTextureProvider, which will try to load variant that doesn't exceed given size (requested by @LeDrascol)
-- Currently this only works with online streaming services, as other video assets don't have variants generated at this point (this will likely change in the future)
-- When both of those are null, online services are implicitly limited to 1920x1080 for stability. By setting either one of those you can increase the limit (e.g. force it to load 4K YouTube videos assuming a valid stream is available)
- Added "Prefer Audio Only" to VideoTextureProvider, which will try to pick audio only versions when loading media from a streaming service (e.g. YouTube) (requested by @LeDrascol)
-- Note that this is subject to availability of the streams and accuracy of extracted listing of the streams. Some streams that report no video actually contain a low resolution video data anyway

[h2]Tweaks:[/h2]
- EnumInput`1 LogiX node now uses the new generic type preset selection (based on report by kazu0617 on GitHub)
- Added several more common enum types to the presets for enum nodes
- Categorized some uncategorized components (including most suggested by @Alex from Alaska)
- Conformed all UI icons/sprites to 256x256, reducing memory/VRAM usage on some that were 1024x1024
- Upgraded SRAnipal SDK (Vive Pro Eye & Lip tracking) to v1.3.1.1 (from v1.3.3.0) (new version notified by @Danyy59)
- Upgraded OVRPlugin (Oculus SDK) to 1.55.0 (from 1.52.1)
- Regenerated Precache data to include the new MTC and fonts for quick loading for new users
- Moved NeosClassroom configuration file location to the app folder, rather than root on Quest
-- This fixes access denied exception on Quest 2 despite being granted access permission (reported by @Karel | CEO)
- Lasers now start in disabled state, preventing their unitialized visual being shown if the controller is disabled (based on feedback by @Ralii The Avali)

- Merged French locale additions, tweaks and formatting cleanup Python script by @xqua
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Polish locale additions by @art0007i
- Merged Russian locale tweaks by @Shadow Panther [RU/EN, UTC+3]
- Merged Korean locale additions and tweaks by @MirPASEC
- Merged Esperanto locale fixes by @Melnus
- Published Czech Steam Store translation by by @rampa_3 (UTC +1, DST UTC +2)
- Published Chinese Steam Store translation by @Melnus

[h2]Bugfixes:[/h2]
- NeosSlider will now filter NaN values quietly, to avoid severe performance degradation by excessive logging (based on report by @Shadow Panther [RU/EN, UTC+3] and @Shifty | Quality Control Lead)
- BoundingBoxDriver will now filter invalid values before assigning them, preventing errors from propagating further and causing logspam (based on report by @Shadow Panther [RU/EN, UTC+3] and @Shifty | Quality Control Lead)
- Added invalid input filtering to Light component to prevent visual artifacts with invalid values (e.g. NaN) based on report by @Shadow Panther [RU/EN, UTC+3])
- SyncPlayback now supports non-looped backwards playback (when speed is negative), properly reporting IsPlaying state and starting from the end when "Play" command is issued
- Added extra diagnostics for audio buffer read/copy operations (based on log from @Tekno Catron#8745)
- UpdatesDelayWithValue node will now sanitize the value if the value is a reference type that has been destroyed in the meanwhile (this fixes some background errors, found in log from @Tekno Catron#8745)
- Fixed cyclic reference in AvatarObjectComponentProxy causing crash (reported by @Hayden (PolyLogiX Studio))
- Fixed Static Asset Providers not always unloading asset when the URL is rapidly changed while a load process is still running
-- This fixes the provider randomly keeping the asset still loaded, even though the URL is null (reported by @Enverex)