Kärnsystem

I hjärtat av indatasystemet finns InputSystem, som är en tjänst som ansvarar för att initiera och använda alla indatarelaterade funktioner som är associerade med MRTK.

Anteckning

Det förutsätts att läsarna redan har läst och har grundläggande kunskaper om terminologiavsnittet.

Den här tjänsten ansvarar för:

  • Läsa indatasystemprofilen
  • Starta de konfigurerade dataproviders (till exempel Windows Mixed Reality Device Manager och OpenVR Device Manager ).
  • Instansiering av Blickprovider, som är en komponent som ansvarar för att tillhandahålla huvudinformation i HoloLens-format (första generationen) utöver HoloLens 2-stil med blickinformation.
  • Instansiering av FocusProvider, som är en komponent som ansvarar för att fastställa objekt som har fokus. Detta beskrivs mer ingående i avsnittet pekare och fokus i dokumentationen.
  • Tillhandahålla registreringsplatser för alla indatahändelser (som globala lyssnare).
  • Tillhandahålla funktioner för händelsesändning för dessa indatahändelser.

Indatahändelser

Indatahändelser utspelas vanligtvis på två olika kanaler:

Objekt i fokus

Händelser kan skickas direkt till ett GameObject som har fokus. Ett objekt kan till exempel ha ett skript som implementerar IMixedRealityTouchHandler . Det här objektet skulle få touch-händelser när det fokuseras av en hand som är nära den. De här typerna av händelser går "uppåt" i GameObject-hierarkin tills den hittar ett GameObject som kan hantera händelsen.

Detta görs med hjälp av ExecuteHierarchy inifrån standardimplementeringssystemet för indata.

Globala lyssnare

Händelser kan skickas till globala lyssnare. Det går att registrera för alla indatahändelser med hjälp av indatasystemets IMixedRealityEventSystem gränssnitt. Vi rekommenderar att du använder metoden RegisterHandler för att registrera för globala händelser – den inaktuella funktionen gör att lyssnare meddelas om ALLA indatahändelser, i stället för bara indatahändelser av en viss typ (där typen definieras av Register händelsegränssnittet).

Observera att återställningslyssnare är en annan typ av globala lyssnare som också rekommenderas eftersom de får varje enskild indatahändelse som inte har hanterats någon annanstans i scenen.

Order of event dispatch (Order of event dispatch)

I allmänhet skickas händelser till lyssnare på följande sätt. Observera att händelsesändningsprocessen stoppas om något av stegen nedanmarkerar händelsen som hanterad.

  1. Händelsen skickas till globala lyssnare.
  2. Händelsen skickas till modala dialogrutor för det fokuserade objektet.
  3. Händelsen skickas till det fokuserade objektet.
  4. Händelsen skickas till återställningslyssnare.

Enhetshanterare och dataleverantörer

Dessa entiteter ansvarar för att sammanfläta med API:er på lägre nivå (till exempel Windows Mixed Reality-API:er eller OpenVR-API:er) och översätta data från dessa system till sådana som passar MRTK:ns indataabstrahering på högre nivå. De ansvarar för att identifiera, skapa och hantera livslängden för kontrollanter.

Det grundläggande flödet för en enhetshanterare omfattar:

  1. Enhetshanteraren instansieras av indatasystemtjänsten.
  2. Enhetshanteraren registreras med det underliggande systemet (t.ex. Windows Mixed Reality enhetshanteraren registreras för indata- och gesthändelser.
  3. Den skapar kontrollanter som identifieras från det underliggande systemet (till exempel kan leverantören identifiera förekomsten av tydligt formulerade händer)
  4. I dess Update()-loop anropar du UpdateController() för att avssöka det underliggande systemets nya tillstånd och uppdatera dess kontrollantrepresentation.