This is a hotfix release addressing an issue with the warpingAdjustment variable, which was previously renamed to _warpingAdjustment without using the [FormerlySerializedAs] attribute. This resulted in the adjustment value reverting back to its default value, which was 60. The recommended value for PC experiences is 17, and so this introduced a 43-millisecond difference in the warping effects, causing significant swim when the user moved their head.
Renamed the variable, again without using the [FormerlySerializedAs] attribute. This is intentional so that any bad values that have been saved into developer's scenes get discarded and overwritten by the new good default, 17.
Made it so that unless _allowManualTimeAlignment is checked, the adjustment value will do NOTHING. Instead the value is driven by a constant. This is so that if we want to push out a new value for the default adjustment value in the future, we can just update the constant and all developer's scenes will be automatically updated.
Upgraded Core Assets to expect Unity 2017.1.0p4, a version that patch-fixes a security vulnerability allowing arbitrary code execution. See UNITY-SEC-844. Unity 5.6 and above remain supported.
Leap Hands
Adjusted the default pose offset of the Leap Motion Controller from a tracked headset to be 12 cm forward (previously 10 cm) and a 5 degree tilt downward (previously 0 degrees). This change is expected to improve hand alignment for most VR devices.
Added a checkbox to allow manual Leap Motion Controller pose alignment on the LeapVRTemporalWarping script. Available parameters are forward offset, vertical offset, and upward/downward tilt. These settings are tied to the application, not the headset, so these settings should only be used under circumstances where the application will be run in a known headset configuration.
Fixed a bug where Attachment Hands could null-reference when iterating through all available attachment points.
Query (Garbageless LINQ)
Added Min and Max query operations for queries on collections of IComparables.
Added support Query()-ing 2D arrays.
Utilities
Added the Maybe\<T\> and Either<U, V> data structures.
Added the AnimationCurveUtil, providing static methods that can compress AnimationCurve objects, with a parameterized maximum error.
Added SerializableType, which allows you to serialize Type references.
Added ProgressBar, an easy way to produce progress bars for long operations in-editor.
Added AssetFolder, an intelligent serializable reference to a folder.
Visual Studio compilation for LeapCSharp has been fixed, bringing back the breakpoints workflow for debugging.
It is now possible to choose between two poses at edit-time by the Edit-Time Pose option in the LeapServiceProvider's inspector.
The device type setting has been removed; we now always assume Leap Motion Controller settings.
The isHeadMounted property is now validated at runtime and automatically set to an appropriate value when the LeapServiceProvider script is added to a GameObject.
The HandUtils static class now only requires a LeapProvider rather than a LeapServiceProvider, better supporting edge-cases where users desire, for example, recorded playback via custom service provider scripts.
Modified the focalPlaneOffset value for the Leap Motion Controller to produce better hand presence.
HandFader.cs has been removed, as it was unused.
A handful of new utilities have been added to support IE and GR development.
Pressing X on initial gravity and timestep warnings no longer dismisses the warnings forever.
Example 7 has been added, demonstrating how to set up a scene to support putting the player in a moving reference frame and still have user interfaces function properly.
SceneSettings have been removed from Example 2, preventing project settings from getting clobbered.
Sliders have had their inspectors organized more neatly.
Fixed an issue where, at low physics timesteps, buttons moved too slowly.
Interaction objects are no longer required to exist on the Interaction layer. Layers with interaction objects on them are tracked and still filtered for physics optimization.
Interaction buttons and sliders can now be constructed based upon where they relax to or where they depress to.
Added a warning when RigidRoundHand scripts are detected in the scene, as these scripts break proper physics functionality.
Fixed physical and visual instability when grasping buttons.
Fixed instability when grasping objects with centers of mass that are offset from the Rigidbody transform position.
Interaction Controllers now provide warnings in their inspectors if they are added to a scene but not beneath an InteractionManager.
Fixed exception when adding an InteractionBehaviour component at runtime
Fixed a bug with AnchorableBehaviours where inspector utility buttons were incorrectly grayed out when only a single object was selected.
SetRuntimeTint now features a string-based overload taking in HTML color strings, allowing UnityEvents to target the method in the inspector.
Graphics now prefer the group they were originally added to, better supporting scenarios where graphics are enabled or disabled at runtime.
Fixed a bug where graphic settings were not duplicated properly when an entire Graphic Renderer was duplicated.
Fixed a bug where text glyphs were not being refreshed properly.
Added LeapBoxGraphic and LeapPanelOutlineGraphic alongside the LeapPanelGraphic as additional procedural mesh generators built-in to the Graphic Renderer.
The AttachmentHands script reproduces the functionality of the Attachments Module with a more intuitive Inspector interface and Hierarchy behavior. Add it to a GameObject beneath your VR object rig to get started.
MultiTypedList/MultiTypedReference allow you to serialize (but not draw) data that is of multiple different types.
Deprecate the AutoFind attribute.
Added SerializableHashSet to mirror SerializableDictionary.
Added ReadonlyHashSet, for when you just don’t want anybody messin’ around with your HashSets.