c# gesture multi-touch monogame

c# - ¿Es posible obtener gestos "contextuales" en Monogame/XNA?



gesture multi-touch (1)

Esa característica no está integrada en MonoGame, ya que no es parte de XNA original. Esencialmente, querría que se definiera más de un panel táctil "lógico" por su sub-rectángulo de la ventana. Sin embargo, TouchPanel es estático, por lo tanto, solo hay uno para todo el juego en XNA predeterminado.

La buena noticia es que MonoGame hace su propio reconocimiento de gestos. Entonces, el código está ahí, solo necesitas hacer algunos cambios en MonoGame.

P.ej...
-Hacer TouchPanel una clase no estática que se puede asignar con un subrect dado.
-Agregar versiones no estáticas de todos los métodos de TouchPanel.
-Los métodos estáticos se redirigen a un singleton / instancia de TouchPanel, preservando la API antigua.
... ahora puede asignar opcionalmente más TouchPanel (s) que NO ESTÁN en toda la pantalla.

Nota: esto no le ayuda, pero MonoGame le permite tener más de una ventana del sistema operativo (solo en windows afaik) en cuyo caso el panel táctil estático es la primera ventana y hay una API independiente para acceder a las entradas / gestos táctiles para Cualquier ventana adicional.

Estoy trabajando en una aplicación multitáctil utilizando Monogame, donde varios usuarios pueden trabajar en una pantalla multitáctil más grande con documentos / imágenes / videos separados simultáneamente, y me preguntaba si es posible hacer gestos "sensibles al contexto", es decir dos dedos que pellizcan un documento en un lado de la pared no deberían afectar a alguien que esté barriendo el otro lado de la pared.

La forma en que funciona Monogame es que todos los puntos de entrada se traducen en gestos, que se pueden leer utilizando:

if (TouchPanel.IsGestureAvailable) { var gesture = TouchPanel.ReadGesture(); // do stuff }

¿Hay una manera de hacer gestos limitados a un cierto punto en la pantalla, o necesito implementarlo yo mismo? Por ejemplo, al mirar el código fuente, parece que la clase TouchPanelState hace todo el trabajo, pero desafortunadamente sus constructores son internal .