Vehicle Connection UI
The Vehicle Connection UI package provides a modular user interface built on Unity’s UI Toolkit (UIElements) to manage vehicle telemetry connections. It allows end-users to search for, scan, and connect standalone headsets or mobile devices to physical or simulated vehicle sensors.
The package uses a decoupled, interface-based model binding pattern. The UI is separated into six distinct sub-panels that automatically register and synchronize with the active StateReceiver backend to handle permission checks, server discovery, sensor selection, and diagnostic recording.
Installation
- Open the Unity Package Manager.
- Install the
com.holoride.elasticsdk.vehicleconnectionuipackage. - Ensure that its dependencies, namely the core package
com.holoride.elasticsdkand the Android service packagecom.holoride.elasticsdk.servicesdk.android, are active in your project.
Usage
- In your project window, navigate to:
Packages > ElasticSDK Vehicle Connection UI Extension > Runtime > Prefabs - Drag and drop the
Vehicle Connection UIprefab directly into your active scene hierarchy. - Enter Play Mode. The UI will automatically detect the active
StateReceiverScriptableObject backend and bind all modular sub-panels dynamically.
The Binding Architecture (BaseStateReceiverUI<T>)
Every modular sub-panel in the package subclasses BaseStateReceiverUI<T>, where T represents a specific telemetry backend interface:
- Dynamic Binding: Binds itself to
StateReceiver.OnBackendChangedevents and hooks into standardINotifyPropertyChangednotifications. - Property Filtering: Limits UI code-visibility strictly to the required interface members, maximizing separation of concerns.
Core UI Modules & Sub-Controllers
The UI consists of six distinct, decoupled modules:
| Sub-Panel Controller | Target Interface | Template Root Name | Description |
|---|---|---|---|
ConnectorSelectionUI |
IConnectorSelection |
connector-selection-template-root |
Displays a dropdown selector (connectors-dropdown) listing available adapters (such as WiFi, Bluetooth, or simulated playback) and handles selecting the active protocol. |
SensorScannerUI |
ISensorScanner |
sensor-scanner-template-root |
Orchestrates scans for nearby vehicle-bound tracking servers and BLE devices, rendering dynamic progress states. |
SensorSelectionUI |
ISensorSelection |
sensor-selection-template-root |
Lists discovered tracking sources and handles selecting the correct physical vehicle or server. |
SensorDataSettingsUI |
ISensorDataSettings |
sensor-data-settings-template-root |
Exposes calibration settings, zeroing thresholds, coordinate formats, and coordinate damping offsets. |
ServiceValidationUI |
IServiceValidation |
service-validation-template-root |
Handles licensing agreements, system permission validations (such as Android Bluetooth/Location), and service handshakes. |
LoggingSettingsUI |
ILoggingSettings |
logging-settings-template-root |
Toggles the recording of diagnostic telemetry, allowing developers to save real-time vehicle motion profiles. |