UNPKG

com.rwth.unity.omilaxr

Version:

This is the base package for OmiLAXR ecosystem. This package has shareable code for all OmiLAXR packages.

209 lines (159 loc) 8.61 kB
# Changelog ## [2.1.0] - 2025-06-12 ### Added - **Utils** - `CsvFormat` to manage CSV structures in memory. - `CsvFile` for improved CSV writing. - `Scheduler` system with `IntervalTicker` and `TimeoutTicker`. - Includes `SetTimeout(Action, float)` and `SetInterval(Action, float)` for scheduling logic in tracking behaviours. - `InteractionEventHandler` to detect `OnPress`, `OnRelease`, `OnHover`, and `OnUnhover`. - **Listeners** - Global threshold settings from `TransformWatcher` added to the main camera's `Transform Listener`. - **Tracking Behaviours** - `HeartRateTrackingBehaviour` added, based on interval logic. - New options for `TransformTrackingBehaviour`: - `interval`: for interval-based triggering. - `detectOnChange`: flag for delta-based detection. - `ignore`: selectively ignore transform axes. - `TrackingBehaviourEvent.Bind()` now supports `Action<T>` delegates. - Added `Hand` information to `TeleportationTrackingBehaviour` and `InteractableTrackingBehaviour`. - **Endpoints** - **Buffered batch sending** introduced: - `MaxBatchSize` can be overridden to control batch limits. - `LocalFileEndpoint` renamed to **(JSON) File Endpoint**, now writes `.jsonl` instead of `.txt`. - Output now supports: - Browsable folder path for statement output (via Unity Editor). - One file per composer via `oneFilePerComposer = true`. - File/folder naming via configurable `identifier`. - Custom `FormatLine(IStatement)` override for each log line. - Statement preview UI added for all endpoints. - `CsvLocalFileEndpoint` added for CSV exports: - Shares all features of `LocalFileEndpoint`. - Optionally flattens headers (`flatten = true`) for wide compatibility. - Added `PrintStatement` types (Default, Short, CSV, CSVFlat, JSON). - Make Endpoints work with Threads instead of BackgroundWorker. - Added `FlushQueue()`. - **Inspector & Preview** - Statement previews added to endpoints. - Visual component tree previews added to pipelines and data providers. ### Changed - `Composers<T>` now supports multiple `TrackingBehaviours`. - Use `SendStatement(ITrackingBehaviour owner, IStatement statement, bool immediate = false)` instead of `SendStatement(IStatement, bool)` if needed. - `Mouse` and `Keyboard` composers are now disabled by default. - Prefab setup updated: - Added `(JSON) File Endpoint` to default prefab. - Improved UI for `LocalFileEndpoint`, including folder selection and data previews. - Enhanced fallback behaviour if xAPI registry is missing or invalid. ### Fixed - Threshold comparison logic in `TransformWatcher`. - Composers now process multiple `TrackingBehaviours` correctly. - Incorrect context version metadata has been corrected. - UI components no longer trigger change events unless directly interacted with (e.g., sliders). - `BeforeStoppedPipeline` errors resolved. - Optimized pipeline lifecycle performance. ### Deprecated - `ObjectlessTrackingBehaviour` is now obsolete — use `TrackingBehaviour` instead. - `Composers<T>` usage pattern changed: - **If supporting multiple matching behaviours**, use `SendStatement(ITrackingBehaviour statementOwner, IStatement statement)` instead of the legacy method. - If not using multi-behaviour composers, your current implementation remains valid. --- ## [2.0.18] - 2025-06-06 ### Changed - Renamed `EventTrackingBehaviour` to `ObjectlessTrackingBehaviour` to avoid confusion with `TrackingBehaviourEvent`. - **Need for action:** If your project extends `EventTrackingBehaviour`, update it to use `ObjectlessTrackingBehaviour`. - Made existing `TrackingBehaviour` classes more easily extendable by marking key methods as `protected` and `virtual`. - Ensured full compatibility with Unity ≥2020.3.15f — the package now appears in the Unity Package Manager for Unity 2020. --- ## [2.0.13 - 2.0.17] - 2025-05-21 ### Added - `InputSystemTrackingBehaviour` and `TeleportationTrackingBehaviour` components. - `SessionManager`, `SessionTrackingBehaviour`, and `SessionComposer` for managing actor-specific session lifecycle. - Generalized internal structures in preparation for `OmiLAXR.UnityXR`. ### Changed - Removed the need to manually set InputSystem to "Both". - Reorganized the `Prefabs` folder for better structure. - Installation order no longer affects package behavior. ### Fixed - `LrsCredentialsLoader` no longer starts if it is disabled. --- ## [2.0.13 - 2.0.17] - 2025-05-21 ### Added - `InputSystemTrackingBehaviour` and `TeleportationTrackingBehaviour` components. - `SessionManager`, `SessionTrackingBehaviour`, and `SessionComposer` to manage the lifecycle of tracking sessions per actor. - Generalized functionality in preparation for `OmiLAXR.UnityXR`. ### Changed - Removed the need to manually set InputSystem to "Both". - Reorganized `Prefabs` folder structure. - Package installation order no longer causes errors. ### Fixed - `LrsCredentialsLoader` no longer starts if it is disabled. ### Deprecated - None. --- ## [2.0.11] - 2024-11-25 ### Added - `[Global Settings]` component added to the OmiLAXR prefab. - Support for path-based tracking names via `obj.GetTrackingName()` when enabled in `[Global Settings]`. ### Changed - `LocalEndpoint` now allows selection of storage location: `persistentDataPath`, `temporaryCachePath`, or a custom path. ### Fixed - Fixed incorrect path for `example.credentials.json`. ### Deprecated - None. --- ## [2.0.10] - 2024-11-11 ### Fixed - Fixed compatibility errors for Unity 2021. ### Changed - Updated README files. ### Added - None. ### Deprecated - None. --- ## [2.0.9] - 2024-11-11 ### Added - `ActorDataProvider` for storing global actor data (e.g. heart rate results). - `Detect<T>()` method in tracking behaviours uses `FindObjectsOfType<T>` and passes objects to `Found()`. - `AutoListener<T>` base class automatically uses `Detect<T>()` — calling `StartListening()` is no longer required. - Short `Bind()` notation for `TrackingBehaviorEvent` with default invoker: e.g. `OnClickedButton.Bind(button.onClick, this, button)`. - `HeartRateMonitor` component for adding heart rate to context via an `ActorDataProvider`. Extend `HeartRateProvider` and override `int GetHeartRate()` for your heart rate system. - Example `Simulator` classes for heart rate. - `ExcludeFromTracking` component and corresponding pipeline filter to skip marked GameObjects. - Menu item **OmiLAXR / Create credentials.json file** to auto-generate credentials in `StreamingAssets`. ### Changed - `protected Pipeline` field renamed to `public Pipeline`. - Need for action: Rename usages if affected by this visibility change. - Renamed internal field access patterns in tracking components for better support of `enabled` flag. - Ensured compatibility with Unity 2020, 2021, 2022, 2023, and Unity 6 (6000). ### Fixed - Tracking components now respect the `enabled` property consistently. - `HigherComposer` now includes a `SendStatement` method. ### Deprecated - None. ### Notes - Need for action: Ensure you're using the latest xAPI Registry JSON files. See: https://gitlab.com/learntech-rwth/xapi/-/merge_requests/43/diffs --- ## [2.0.7] - 2024-10-14 ### Added - Custom timestamp support via `WithTimestamp(DateTime timestamp)` in `xApiStatement`. - `Dispatch(Action action)` method to `Endpoint` for main thread dispatching. - `SendImmediate` method to `Endpoint` for high-priority xAPI statements. - `StatementPrinter` endpoint added to `OmiLAXR Data Provider` prefab (disabled by default). - `UnityComponentFilter` added by default to `LearnerPipeline` prefab. - `enabled` checkbox added to: `BasicAuthFileLoader`, `TrackingBehaviour`, and `Listener`. ### Changed - Inspector menu paths updated for several components. - `"System start"`, `"pause"`, `"resumed"`, and `"quit"` statements are now sent immediately. - `Found(Object[] objects)` in `Listener` now accepts a single object instead of requiring an array. - Need for action: `TransferStatement()` in `Endpoint` renamed to `HandleQueue()`. A method named `TransferStatement()` still exists for other purposes. - Need for action: Capitalization of some event names — update event handler method names accordingly. - Need for action: `GetAuthor()` must now be `public` instead of `protected`. ### Fixed - Incorrect `"System started Game"` statement has been fixed. ### Deprecated - Need for action: `BindedComposer` removed and replaced by `IComposer` interface. - Need for action: `AfterComposed` now includes an additional property: `bool immediate`.