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 .

Masing-masing sistem yang tercantum 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 lihat artikel Layanan ekstensi .

Agar dapat diakses oleh MRTK, layanan ekstensi didaftarkan dan dikonfigurasi menggunakan bagian Ekstensi dari profil konfigurasi komponen MixedRealityToolkit.

Mengonfigurasi layanan ekstensi

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 di 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.

Penyedia data sistem input

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.

Penyedia data sistem kesadaran spasial

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.

Lihat juga