1. Neos VR
  2. News
  3. 0.8.17.37310 - Big bugfix update! With extra optimizations and additions on top

0.8.17.37310 - Big bugfix update! With extra optimizations and additions on top

Big bugfix update! Should get rid of the recent world crashes and other problems. Also some optimizations and small additions.

New Features:

- Added "Play & Wait" node which can start playback and then fire an impulse once it's finished
- Added "Play One Shot & Wait" node, which fires impulse when the clip finishes playing
- Added "AutoTarget" property to AutoLookAtUser which allows disabling the auto-targetting and assignigng the targetted user manually
- Added "AroundAxis" and "Axis" properties to AutoLookAtUser which allow restricting the rotation to a particular axis
- Added "InvariantCulture" and "CurrentCulture" LogiX nodes (under Formatting)

Optimizations:

- Optimized allocation block management in reference manager - this removes all memory allocations when allocating new objects/components, reducing CPU and memory usage and GC churn
- Reduced memory allocations when rendering to a texture asset (e.g. capturing thumbnails, photos and similar)
- Reduced memory allocations and CPU usage when duplicating objects

Tweaks:

- ToString and Parse nodes now accept IFormatProvider inputs and use invariant culture by default
-- This fixes system culture related issues (e.g. some systems using , instead of . for decimal point) (reported by @Bom "Bitman" bomb (PolyLogiX) and @Coffee)
- Gridspace ground texture now uses anisotropic filtering by default
- Added extra cleanup for duplicated LogiX node visuals which would prevent packing in some cases
- WebP encoding now uses exact mode, which preserves color information in fully transparent regions
-- This fixes texture operations and importing corrupting RGB data in some textures (e.g. splat-maps) (discovered by @Bom "Bitman" bomb (PolyLogiX))

Bugfixes:

- Fixed race condition in fetching permission validators, which could in rare cases cause a world crash or corruption of state (discovered in log from @H3BO3 )
- Fixed state corruption when duplicating element SyncBags (e.g. on objects with ValueUserOverride) causing world to crash or misbehave (also should fix headless crashes found in logs from @Medra )
- Added invalid value filter to LabelPointerMesh to prevent generating corrupt geometry
- Fixed exception when cleaning up registered events in ListEditor (found in log from @guillefix (OneWeirdOtter) )
- Fixed invalid generation of random strings in RandomX
- Fixed exception when rendering a static texture and one of the selectively rendered or excluded objects doesn't have a corresponding implementer instance
- Fixed exception when trying to fire UserReleased event on AvatarAnchor, when the user has been destroyed by another user
- Fixed exception when destroying slot gizmo and the target slot is already gone
- Fixed character parented trying to unparent destroyed user
- Added fatal world exceptions, which will crash the world immediatelly when the state gets corrupted, rather than letting it run and result in secondary errors and exceptions
- Fixed specific controller nodes lingering on the last user when the new user doesn't have particular controller on their system (e.g. Index Controller node is then fed user with Oculus Touch controllers) (reported by @H3BO3 )
- Fixed sync playback not correctly reporting IsPlaying status immediatelly after being instantiated and played
- Fixed repeatedly loading unsynced records for groups and trying to sync them (reported by @Hayden )
-- This should also fix degradation and some crashes with headless & grapahical server experienced by @Medra with Creator Jams
- Fixed WebP encoder not correctly switching to lossless mode. To use lossless mode use any quality higher than 100 (101 will work). This is now default for various in-engine recompressions