Changelog

Changelog

All notable changes to the Beam Eye Tracker SDK will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[2.2.0] - 2026-07-05

Compatibility

  • Compatible with Beam Eye Tracker 2.6.3 or newer. The SDK client library loads the Beam-provided runtime from the installed Beam Eye Tracker application.

Fixed

  • Potential crashes after accessing data from moved objects.

Added

  • New API method for sampling the smoothed sim game camera state from the consumer’s own loop (typically a game’s render thread):

    • C: EW_BET_API_SampleAndFillSmoothSimGameCameraState

    • C++: API::sample_smooth_sim_game_camera_state

    • C#: API.SampleSmoothSimGameCameraState

    • Python: API.sample_smooth_sim_game_camera_state

  • Linux and macOS SDK distributions (native shared libraries + Python wheels through PyPi). The Unity package continues to be Windows-only.

  • Beta Godot package for C# projects on Windows.

  • Beta JavaScript/WebAssembly package with browser samples.

  • Python 3.14 support.

Changed

  • Native SDK clients now use a loader/runtime model: the distributed client library keeps the public API surface shallow, while the Beam installation provides the platform runtime (.dll, .so, or .dylib) that contains the implementation. The loader depends on this Beam-provided runtime and verifies supported runtime candidates for security before loading them.

  • Sim game camera coordinate convention. The public euler angles convention used by the SDK is now intrinsic rotations z-y’-x’’, i.e. R = R_z(roll) · R_y(yaw) · R_x(pitch)), angles in radians, translations in meters. This applies to the new sample_smooth_sim_game_camera_state method as well as to the existing SimGameCameraState fields on TrackingStateSet. Consumers that mapped the previous convention into a game engine should re-validate the rotation order; values and signs are otherwise unchanged.

  • Samples and Unity wrappers updated to call sample_smooth_sim_game_camera_state from the consumer’s loop rather than reading TrackingStateSet::sim_game_camera_state(). The TrackingStateSet path remains valid for other data.

  • Unity BeamEyeTrackerInputDevice.cameraRotation now exposes a QuaternionControl backed by a Quaternion input state instead of Euler angles through a Vector3Control.

  • Unity camera input device now exposes camera-pose validity separately from tracking status. Its bundled camera control behaviour resets the controlled camera pose once when a previously valid camera pose becomes invalid.

  • Python support now starts at Python 3.8.

[2.1.0] - 2025-04-10

Added

  • Foveated rendering support

    • FoveatedRenderingState: gaze coordinates and radii that define high to low resolution areas

  • Unity support

    • BeamEyeTrackerInputDevice class that provides a custom input device based on Unity InputSystem

    • BeamEyeTrackerMonoBehaviour class that allows easy access to the input device

    • CameraControlBehaviour and ImmersiveHUDPanelBehaviour classes that implement the in-game camera control and immersive HUD features in Unity

    • BeamEyeTrackerControls.inputactions that define actions like camera recentering

  • Documentation

    • Added comprehensive documentation for SDK concepts

    • C/C++/C#/Python API references

    • Unity guide

Fixed

  • Potential crash on shutdown

[2.0.1] - 2025-02-15

Fixed

  • Fixed handling of paths containing non-Western characters

[2.0.0] - 2025-02-01

Added

  • Releasing brand new API with these features:

    • UserState: head pose and gaze coordinates parameters (now supporting multiple displays)

    • SimGameCameraState: ready to use 6 DOF camera controls

    • GameImmersiveHUDState: signal indicating if the user is looking at either 4 corners or edges

    • Synchronous, asynchronous and polling-based tracking data access

    • Privacy control - Beam app can manage data access per-client

    • Clients can launch the Beam and start the tracking/webcam

  • C/C++/C#/Python APIs

  • Future-proof design:

    • Features logic fully delegated to the Beam application (not hardcoded in the client)

      • Gives room to improve user experience without increasing client work load

    • C/C++ APIs designed to be ABI stable and easy to extend with new features

    • Forward and backward client compatibility with Beam app versions (from v2.4.0)

      • Handshaking mechanism

      • Per-client tracking data messaging filtering

      • Future-proof serialization

Changed

  • Complete API redesign focusing on stability and extensibility

  • Enhanced documentation and samples

Removed

  • API v1.0