Sistema principal — MRTK2

No centro do sistema de entrada está o InputSystem, que é um serviço responsável por inicializar e operar toda a funcionalidade relacionada à entrada associada ao MRTK.

Observação

Supõe-se que os leitores já tenham lido e tenham uma compreensão básica da seção terminologia .

Esse serviço é responsável por:

  • Lendo o perfil do sistema de entrada
  • Iniciando os provedores de dados configurados (por exemplo, Windows Mixed Reality Device Manager e OpenVR Device Manager).
  • Instanciação do GazeProvider, que é um componente responsável por fornecer informações de foco de cabeça de estilo HoloLens (1ª geração), além de HoloLens 2 informações de foco ocular de estilo 2.
  • Instanciação do FocusProvider, que é um componente responsável por determinar objetos que têm foco. Isso é descrito com mais profundidade nos ponteiros e na seção de foco da documentação.
  • Fornecendo pontos de registro para todos os eventos de entrada (como ouvintes globais).
  • Fornecendo recursos de expedição de eventos para esses eventos de entrada.

Eventos de entrada

Eventos de entrada geralmente são acionados em dois canais diferentes:

Objetos em foco

Os eventos podem ser enviados diretamente para um GameObject que tenha foco. Por exemplo, um objeto pode ter um script que implementa IMixedRealityTouchHandler. Esse objeto obteria eventos de toque quando focado por uma mão que está perto dele. Esses tipos de eventos vão "para cima" a hierarquia GameObject até encontrar um GameObject que seja capaz de lidar com o evento.

Isso é feito usando ExecuteHierarchy de dentro da implementação padrão do sistema de entrada.

Ouvintes globais

Os eventos podem ser enviados para ouvintes globais. É possível registrar-se para todos os eventos de entrada usando a interface do sistema de IMixedRealityEventSystem entrada. É recomendável usar o método RegisterHandler para se registrar em eventos globais - a função preterida Register fará com que os ouvintes sejam notificados de TODOS os eventos de entrada, em vez de apenas eventos de entrada de um tipo específico (em que o tipo é definido pela interface do evento).

Observe que os ouvintes de fallback são outro tipo de ouvintes globais que também são desencorajados porque receberão todos os eventos de entrada que não foram tratados em outros lugares da cena.

Ordem de expedição de evento

Geralmente, os eventos são enviados aos ouvintes da seguinte maneira. Observe que, se qualquer uma das etapas abaixo marcar o evento como manipulado, o processo de expedição de eventos será interrompido.

  1. O evento é enviado para ouvintes globais.
  2. O evento é enviado para caixas de diálogo modais do objeto focado.
  3. O evento é enviado para o objeto focado.
  4. O evento é enviado aos ouvintes de fallback.

Gerenciadores de dispositivos e provedores de dados

Essas entidades são responsáveis por interfigurar com APIs de nível inferior (como APIs Windows Mixed Reality ou APIs OpenVR) e traduzir dados desses sistemas em aqueles que se encaixam nas abstrações de entrada de nível superior do MRTK. Eles são responsáveis por detectar, criar e gerenciar o tempo de vida dos controladores.

O fluxo básico de um gerenciador de dispositivos envolve:

  1. O gerenciador de dispositivos é instanciado pelo serviço do sistema de entrada.
  2. O gerenciador de dispositivos se registra com seu sistema subjacente (por exemplo, o gerenciador de dispositivos Windows Mixed Reality se registrará para eventos de entrada e gesto.
  3. Ele cria controladores que descobre do sistema subjacente (por exemplo, o provedor pode detectar a presença de mãos articuladas)
  4. Em seu loop Update(), chame UpdateController() para sondar o novo estado do sistema subjacente e atualizar sua representação do controlador.