Basissysteem

De kern van het invoersysteem is InputSystem.Dit is een service die verantwoordelijk is voor het initialiseren en gebruiken van alle invoergerelateerde functionaliteit die is gekoppeld aan de MRTK.

Notitie

Er wordt van uitgegaan dat lezers de terminologiesectie al hebben gelezen en basiskennis hebben.

Deze service is verantwoordelijk voor:

  • Het invoersysteemprofiel lezen
  • De geconfigureerde gegevensproviders starten Windows Mixed Reality Device Manager (bijvoorbeeld en OpenVR Device Manager ).
  • Instantiëring van de StarProvider,een onderdeel dat verantwoordelijk is voor het leveren van informatie over de hoofd staring in HoloLens-stijl (eerste generatie), naast informatie over HoloLens 2 stijl-oogcontacten.
  • Instantiëring van de FocusProvider,een onderdeel dat verantwoordelijk is voor het bepalen van objecten die de focus hebben. Dit wordt uitgebreid beschreven in de sectie met aanwijzers en focus van de documentatie.
  • Het leveren van registratiepunten voor alle invoergebeurtenissen (als globale listeners).
  • Het bieden van mogelijkheden voor het verzenden van gebeurtenissen voor deze invoergebeurtenissen.

Invoergebeurtenissen

Invoergebeurtenissen worden over het algemeen op twee verschillende kanalen aan gegeven:

Objecten in focus

Gebeurtenissen kunnen rechtstreeks worden verzonden naar een GameObject met de focus. Een object kan bijvoorbeeld een script hebben dat IMixedRealityTouchHandler implementeert. Dit object krijgt aanraakgebeurtenissen wanneer deze zijn gericht op een hand die zich in de buurt ervan richt. Deze typen gebeurtenissen gaan 'omhoog' in de GameObject-hiërarchie totdat er een GameObject wordt gevonden dat de gebeurtenis kan verwerken.

Dit wordt gedaan met behulp van ExecuteHierarchy vanuit de standaardinvoersysteem-implementatie.

Globale listeners

Gebeurtenissen kunnen worden verzonden naar globale listeners. Het is mogelijk om u te registreren voor alle invoergebeurtenissen met behulp van de interface van het IMixedRealityEventSystem invoersysteem. Het is raadzaam om de RegisterHandler-methode te gebruiken voor registratie voor globale gebeurtenissen. De afgeschafte functie zorgt ervoor dat listeners op de hoogte worden gesteld van ALLE invoergebeurtenissen in plaats van alleen invoergebeurtenissen van een bepaald type (waarbij het type wordt gedefinieerd door de Register gebeurtenisinterface).

Houd er rekening mee dat terugvallisteners een ander type globale listeners zijn die ook worden afgeraden, omdat ze elke invoergebeurtenis ontvangen die niet elders in de scène is verwerkt.

Volgorde van de verzending van gebeurtenissen

Over het algemeen worden gebeurtenissen op de volgende manier naar listeners verzonden. Houd er rekening mee dat als een van de onderstaande stappen de gebeurtenis als verwerktmarkeren, het proces voor het verzenden van gebeurtenissen stopt.

  1. De gebeurtenis wordt verzonden naar globale listeners.
  2. Gebeurtenis wordt verzonden naar modale dialoogvensters van het gerichte object.
  3. De gebeurtenis wordt verzonden naar het gerichte object.
  4. De gebeurtenis wordt verzonden naar terugvallisteners.

Apparaatbeheerders en gegevensproviders

Deze entiteiten zijn verantwoordelijk voor de samenwerking met API's op een lager niveau (zoals Windows Mixed Reality API's of OpenVR API's) en het omzetten van gegevens van deze systemen naar systemen die passen bij de invoerabstracties op een hoger niveau van de MRTK. Ze zijn verantwoordelijk voor het detecteren, maken en beheren van de levensduur van controllers.

De basisstroom van een apparaatbeheer omvat:

  1. Het apparaatbeheer wordt gemaakt door de invoersysteemservice.
  2. Het apparaatbeheer registreert zich bij het onderliggende systeem (de apparaatbeheerder Windows Mixed Reality bijvoorbeeld registreren voor invoer- en bewegingsgebeurtenissen.
  3. Er worden controllers gemaakt die worden gedetecteerd vanuit het onderliggende systeem (de provider kan bijvoorbeeld de aanwezigheid van verwoorde handen detecteren)
  4. Roep in de update()-lus UpdateController() aan om de nieuwe status van het onderliggende systeem te peilen en de controllerweergave bij te werken.