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
Markdown
# 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`.