System podstawowy

Sercem systemu wejściowego jest system InputSystem, który jest usługą odpowiedzialną za inicjowanie i obsługę wszystkich funkcji związanych z wprowadzaniem skojarzonych z mrTK.

Uwaga

Zakłada się, że czytelnicy już przeczytali i mają podstawową wiedzę na temat sekcji terminologii.

Ta usługa jest odpowiedzialna za:

  • Odczytywanie profilu systemu wejściowego
  • Uruchamianie skonfigurowanych dostawców danych (na przykład i Windows Mixed Reality Device Manager OpenVR Device Manager ).
  • Wystąpienia elementu GazeProvider, który jest składnikiem odpowiedzialnym za dostarczanie informacji o spojrzeniach głowy HoloLens (1. generacji) oprócz informacji o spojrzeniach o stylu HoloLens 2.
  • Wystąpienia obiektu FocusProvider, który jest składnikiem odpowiedzialnym za określanie obiektów, które mają fokus. Opisano to bardziej szczegółowo w sekcji wskaźników i fokusu w dokumentacji.
  • Zapewnianie punktów rejestracji dla wszystkich zdarzeń wejściowych (jako odbiorników globalnych).
  • Zapewnianie możliwości wysyłania zdarzeń dla tych zdarzeń wejściowych.

Zdarzenia wejściowe

Zdarzenia wejściowe są zwykle wyzjemniane na dwóch różnych kanałach:

Obiekty w centrum uwagi

Zdarzenia mogą być wysyłane bezpośrednio do obiektu GameObject, który ma fokus. Na przykład obiekt może mieć skrypt, który implementuje IMixedRealityTouchHandler element . Ten obiekt będzie miał zdarzenia dotykowe, gdy będzie skoncentrowany przy ręki, która znajduje się w pobliżu. Tego typu zdarzenia są "w górę" hierarchii GameObject do momentu, gdy znajdzie ona projekt GameObject, który jest w stanie obsługi zdarzenia.

Jest to wykonywane przy użyciu funkcji ExecuteHierarchy z domyślnej implementacji systemu wejściowego.

Odbiorniki globalne

Zdarzenia mogą być wysyłane do odbiorników globalnych. Można zarejestrować wszystkie zdarzenia wejściowe przy użyciu interfejsu systemu IMixedRealityEventSystem wejściowego. Zaleca się używanie metody RegisterHandler do rejestrowania zdarzeń globalnych — przestarzała funkcja spowoduje, że odbiorniki będą powiadamiane o WSZYSTKICH zdarzeniach wejściowych, a nie tylko zdarzeniach wejściowych określonego typu (gdzie typ jest definiowany przez interfejs Register zdarzeń).

Należy pamiętać, że odbiorniki rezerwowe są innym typem odbiorników globalnych, które również nie są zalecane, ponieważ odbierają każde pojedyncze zdarzenie wejściowe, które nie zostało obsłużone w innym miejscu sceny.

Kolejność wysyłania zdarzeń

Ogólnie rzecz biorąc, zdarzenia są wysyłane do odbiorników w następujący sposób. Pamiętaj, że jeśli którykolwiek z poniższych kroków oznaczy zdarzenie jako obsłużone,proces wysyłania zdarzeń zostanie zatrzymany.

  1. Zdarzenie jest wysyłane do odbiorników globalnych.
  2. Zdarzenie jest wysyłane do modalnych okien dialogowych obiektu ukierunkowanego.
  3. Zdarzenie jest wysyłane do obiektu ukierunkowanego.
  4. Zdarzenie jest wysyłane do odbiorników rezerwowych.

Menedżerowie urządzeń i dostawcy danych

Te jednostki są odpowiedzialne za pośrednictwem interfejsów API niższego poziomu (takich jak interfejsy API Windows Mixed Reality lub interfejsy API OpenVR) i tłumaczenie danych z tych systemów na te, które pasują do abstrakcji danych wejściowych wyższego poziomu mrTK. Są one odpowiedzialne za wykrywanie i tworzenie kontrolerów oraz zarządzanie nimi.

Podstawowy przepływ menedżera urządzeń obejmuje:

  1. Menedżer urządzeń jest wystąpieniami usługi systemu wejściowego.
  2. Menedżer urządzeń rejestruje się w bazowym systemie (na przykład menedżer Windows Mixed Reality urządzenia zarejestruje się w celu obsługi zdarzeń wejściowych i gestów.
  3. Tworzy kontrolery, które odnajduje w bazowym systemie (na przykład dostawca może wykryć obecność usterek)
  4. W pętli Update() wywołaj updateController(), aby sondować nowy stan systemu bazowego i zaktualizować jego reprezentację kontrolera.