Skip to main content
Version: 2.1.1

← Back to index page

2.0.0 Changelog

Dependencies

  • Haply Inverse Runtime SDK version 2.0.0
    • haply-inverse-service.exe: version 2.0.0 minimum (must be running in the background)
    • haply-inverse-c.dll: version 2.0.0 (included)
  • Haply.Inverse.dll: version 2.0.0 (included)

Breaking Changes

  • Replaced HapticThread and HandleThread with Inverse3 and VerseGrip.
  • Replaced the Run(callback) method with the DeviceStateChanged(device) high-frequency event for subscription.
  • Replaced hapticThread.onInitialized event with Inverse3.DeviceOpened.
  • Replaced handleThread.onInitialized event with VerseGrip.DeviceOpened.
  • Cursor position and velocity are no longer passed in haptic callback parameters.
  • Removed thread-safe managed AdditionalData in favor of user-defined data handling.

New Features

  • Monitoring window (Window > Haply > Connection Monitor) for visualizing the status of connected devices.
  • Haply creation menu (GameObject > Haply > Haptic Rig) for easy scene setup with all required GameObjects.
  • DeviceMapper for auto-assigning Inverse3 and VerseGrip devices.
  • Client Configuration component for specific connection use cases and controlling the desired haptic loop frequency.
  • Inverse3 component (replaces HapticThread) for positioning the Inverse3 device in space, retrieving its position, and controlling force in a high-frequency thread.
    • Inverse3.DeviceStateChanged event, triggered in a separate haptic thread running at high frequency.
    • Automatic conversion from device local space to scene world space with thread-safe cached transformation matrices LocalToWorldMatrix and WorldToLocalMatrix.
    • Inverse3.LocalPosition and Inverse3.LocalVelocity provide unprocessed cursor coordinates in device local space.
    • Inverse3.Position and Inverse3.Velocity offer world space transformed cursor coordinates.
    • Inverse3.SetLocalForce and Inverse3.SetLocalPosition methods for controlling the device using local coordinates.
    • Inverse3.SetForce and Inverse3.SetPosition methods for controlling the device using world coordinates.
    • Inverse3.JointsSetTorque for direct motor control.
    • Inverse3.JointsSetAngles for direct control of the device's arm positions.
    • Inverse3.WorkspaceCenter provides workspace center coordinates based on handedness.
  • VerseGrip component (replaces HandleThread) for retrieving the VerseGrip orientation in a high-frequency thread, along with button states and attachment status.
    • VerseGrip.DeviceStateChanged event, triggered in a separate haptic thread running at high frequency.
    • VerseGrip.GetButton, VerseGrip.GetButtonDown, and VerseGrip.GetButtonUp methods for use within the haptic thread, following the same logic as UnityEngine.Input.
    • Unity events triggered on the main thread for scene and UI interactions: VerseGrip.ButtonDown, VerseGrip.ButtonUp, VerseGrip.Attached, and VerseGrip.Detached.
  • Inverse3Cursor and VerseGripCursor components for visualizing cursor position and orientation in the scene and managing models.
  • HapticOrigin GameObject for facilitating workspace scaling and positioning.
  • Device position, orientation, and handedness visualization with gizmos.
  • Reachable workspace visualization with gizmos.
  • Filtered logging.
  • Tutorial samples.
  • Experimental samples.

Bug Fixes and Improvements

  • Provided Inverse3 handedness upon device detection. Opening the device to query handedness is no longer necessary.
  • Automatic device detection (with Haply Inverse Service and DeviceMapper)
  • Increased haptic loop frequency from ~1000Hz to ~4000kHz.

← Back to index page