Sistem, layanan ekstensi, dan penyedia data — MRTK2
Dalam Mixed Reality Toolkit, banyak fitur yang dikirimkan dalam bentuk layanan. Layanan dikelompokkan ke dalam tiga kategori utama: sistem, layanan ekstensi, dan penyedia data.
Sistem
Sistem adalah layanan yang menyediakan fungsionalitas inti Mixed Reality Toolkit. Semua sistem adalah implementasi antarmuka IMixedRealityService
.
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
Masing-masing sistem yang terdaftar muncul di profil konfigurasi komponen MixedRealityToolkit.
Ekstensi
Layanan ekstensi adalah komponen yang memperluas fungsionalitas Mixed Reality Toolkit. Semua layanan ekstensi harus menentukan bahwa mereka mengimplementasikan IMixedRealityExtensionService
antarmuka.
Untuk informasi tentang membuat layanan ekstensi, silakan referensikan artikel Layanan ekstensi .
Agar dapat diakses oleh MRTK, layanan ekstensi didaftarkan dan dikonfigurasi menggunakan bagian Ekstensi dari profil konfigurasi komponen MixedRealityToolkit.
Penyedia data
Penyedia data adalah komponen yang, sesuai namanya, menyediakan data ke layanan Mixed Reality Toolkit. Semua penyedia data harus menentukan bahwa mereka mengimplementasikan IMixedRealityDataProvider
antarmuka.
Catatan
Tidak semua layanan akan memerlukan penyedia data. Dari sistem Mixed Reality Toolkit, sistem Input dan Kesadaran Spasial adalah satu-satunya layanan yang menggunakan penyedia data.
Agar dapat diakses oleh layanan MRTK tertentu, penyedia data terdaftar di profil konfigurasi layanan.
Kode aplikasi mengakses penyedia data melalui IMixedRealityDataProviderAccess
antarmuka . Untuk menyederhanakan akses, penyedia data juga dapat diambil melalui kelas pembantu CoreServices
.
var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);
Penting
Meskipun IMixedRealityDataProvider
mewarisi dari IMixedRealityService
, penyedia data tidak terdaftar dengan MixedRealityServiceRegistry
. Untuk mengakses penyedia data, kode aplikasi harus mengkueri instans layanan tempat mereka terdaftar (misalnya: sistem input).
Input
Sistem input MRTK hanya menggunakan penyedia data yang mengimplementasikan IMixedRealityInputDeviceManager
.
Contoh berikut menunjukkan mengakses penyedia simulasi input dan beralih ke properti SmoothEyeTracking.
IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;
if (dataProviderAccess != null)
{
IInputSimulationService inputSimulation =
dataProviderAccess.GetDataProvider<IInputSimulationService>();
if (inputSimulation != null)
{
inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
}
}
Mengakses penyedia data untuk sistem input inti juga dapat disederhanakan melalui penggunaan kelas pembantu CoreServices
.
var inputSimulationService = CoreServices.GetInputSystemDataProvider<IInputSimulationService>();
if (inputSimulationService != null)
{
// do something here
}
Catatan
Sistem input hanya mengembalikan penyedia data yang didukung untuk platform tempat aplikasi berjalan.
Untuk informasi tentang menulis penyedia data untuk sistem input MRTK, silakan lihat membuat penyedia data sistem input.
Kesadaran spasial
Sistem kesadaran spasial MRTK hanya menggunakan penyedia data yang mengimplementasikan IMixedRealitySpatialAwarenessObserver
antarmuka.
Contoh berikut menunjukkan mengakses penyedia data jala spasial terdaftar dan mengubah visibilitas jala.
IMixedRealityDataProviderAccess dataProviderAccess =
CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess;
if (dataProviderAccess != null)
{
IReadOnlyList<IMixedRealitySpatialAwarenessMeshObserver> observers =
dataProviderAccess.GetDataProviders<IMixedRealitySpatialAwarenessMeshObserver>();
foreach (IMixedRealitySpatialAwarenessMeshObserver observer in observers)
{
// Set the mesh to use the occlusion material
observer.DisplayOption = SpatialMeshDisplayOptions.Occlusion;
}
}
Mengakses penyedia data untuk sistem kesadaran spasial inti juga dapat disederhanakan melalui penggunaan kelas pembantu CoreServices
.
var dataProvider = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
if (dataProvider != null)
{
// do something here
}
Catatan
Sistem kesadaran spasial hanya mengembalikan penyedia data yang didukung untuk platform tempat aplikasi berjalan.
Untuk informasi tentang menulis penyedia data untuk sistem kesadaran spasial MRTK, silakan lihat membuat penyedia data sistem kesadaran spasial.