Skip to main content
Version: 2.0.0

← Back to index page

2.1.1 Changelog

Dependencies

  • Updated haply-inverse-c.dll version 2.1.1 (require Inverse SDK >= 2.1)
  • Updated Haply.Inverse.dll version 2.1.1
  • Added com.unity.xr.core-utils version 2.3.0

Breaking Changes

  • Inverse3 and VerseGrip pass device as ConnectionStateChanged event first argument
    • ConnectionStateChanged(state, prevState) > ConnectionStateChanged(device, state, prevState)
    • ConnectionStateChangedAsync(state, prevState) > ConnectionStateChangedAsync(device, state, prevState)
  • DeviceMapper State property changed to readonly

New Features

  • Inverse3Body component apply the body orientation of an Inverse3 device to a specified GameObject.
  • Inverse3:
    • Device Data (inspector) displays ControlMode and last Force, Position or Angles sent to the device.
    • JointsAngles and JointsAngularVelocity.
    • Powered indicates whether the device is currently powered.
    • PowerSupplyStatusChanged unity event triggered whenever there is a change in the power supply status.
    • Orientation gets the current orientation of the Inverse3 device.
    • OrientationChangedAsync event triggered whenever the body orientation changes.
    • RequestOrientation() to manually request the body orientation.
    • ControlMode get the current control mode (CursorForce, CursorPosition, JointsTorques, JointsAngles).
    • ControlModeChanged unity event triggered whenever the control mode changes.
    • ForceOutput, PositionOutput, JointsTorqueOutput and JointsAnglesOutput get the current outputs.
    • Release() reset the device control by sending a null force (replace TryResetForce()).
    • CoordinateConverter to define coordinate conversion settings with preset file or direct value.
    • ErrorEvent fired (on main thread) when ClientConnection error event append with mapped device
  • VerseGrip:
    • CoordinateConverter to define coordinate conversion settings with preset file or direct value.
    • ErrorEvent fired (on main thread) when ClientConnection error event append with mapped device
  • DeviceMapper:
    • Map devices connected at runtime.
    • Gets Inverse3 Power Supply and Body Orientation for each Inverse3 devices.
    • DeviceInfoPollingMode modes Manual, Once (default) or Continuous
    • devicesInfoPollDelay with safe minimum set to 1sec if body orientation is requested, 0.5sec otherwise.
    • Initialize only on component enabled.
    • Filtered device getters:
      • GetInverse3Devices(handedness) retrieves Inverse3 devices filtered by the specified handedness.
      • GetVerseGripDevices(handedness) retrieves VerseGrip devices associated with Inverse3 devices that match the specified handedness.
      • GetInverse3(handedness) retrieves the first Inverse3 device that matches the specified handedness.
      • GetInverse3(verseGrip) retrieves the Inverse3 device associated with a given VerseGrip device.
      • GetVerseGrip(inverse3) retrieves the VerseGrip device associated with a specified Inverse3 device.
  • OrientationSettings added on VerseGripCursor and Inverse3Body components .
  • VerseGrip.Orientation replace VerseGrip.LocalRotation.
  • Explicit Inverse3Data type for Inverse3 cache:
    • cached states properties: CursorPosition, JointsAngles, JointsAngularVelocity, Orientation,
    • GravityCompensation, StatusPowerSupply, ConfigTorqueScaling
    • cached control output properties: ControlMode, CursorForceOutput, CursorPositionOutput, JointsTorqueOutput, JointsAnglesOutput.
    • coordinateConverter used to convert received and sent data with specified coordinate system.
    • cache subscribe to client to be updated automatically.
    • fire events on cache updates.
  • Explicit Joint3 struct with tree float members j0, j1 and j2 (used by JointsSetTorque and JointsSetAngles).
  • Explicit VerseGripData type for VerseGrip cache:
    • cached states properties: Orientation, IsAttached, ButtonCount.
    • cached button states.
    • cache subscribe to client to be updated automatically.
    • coordinateConverter used to convert received data with specified coordinate system.
    • fire events on cache updates.
  • CoordinateConverter (replace UnityConvert) to individually define how to convert device coordinate space into Unity coordinate space:
    • Inverse3CoordinateConverter to convert cursor coordinates and body orientation.
    • VerseGripCoordinateConverter to convert VerseGrip orientation.
    • Vector3Settings and QuaternionSettings structs used to store coordinate system conversion settings.
    • Create default coordinate converter presets for Inverse3 and VerseGrip from the components or Assets menu.
      • Inverse3 (Cursor front) converter with settings for device with the cursor facing the user, the LED on the side.
      • Inverse3 (LED front) converter with settings for device with the LED facing the user, the cursor on the side.
      • VerseGrip (default) converter for device pointing the screen with the Button on top.
  • ClientConnection gets FirmwareVersion, GravityCompensation and TorqueScaling on device opened.
  • ConnectionMonitor displays GravityCompensation, TorqueScaling and PowerSupply.

Bug Fixes

  • Inverse3.DeviceStateChanged triggered also with JointsSetTorque and JointsSetAngles.
  • Automatically reconnect device after disconnect.
  • Clean client polling thread on build exit.
  • Fixed bugs and improved stability.
  • Fixed device mapping after scene unload/load

Deprecated

  • ClientConnection.Configuration.HapticFrequencyHz replaced by HapticPollFrequency
  • ClientConnection.Configuration.PollDelayNs replaced by HapticPollDelayNs
  • DeviceBehaviour.ConnectionStateChangedAsync will be removed on next major release
  • Inverse3.Position replaced by Inverse3.CursorPosition
  • Inverse3.LocalPosition replaced by Inverse3.CursorLocalPosition
  • Inverse3.TryResetForce() replaced by Release()
  • VerseGrip.LocalRotation replaced by VerseGrip.Orientation
  • JointsSetTorque(Vector3) replaced by JointsSetTorques(Joint3)
  • JointsSetTorque(float, float, float) replaced by JointsSetTorques(float, float, float)
  • JointsSetAngles(Vector3) replaced by JointsSetAngles(Joint3)

← Back to index page