public void ProcessQueued() { TouchEvent ev; while (_queue.TryDequeue(out ev)) { TouchPanel.AddEvent(ev.Id, ev.State, ev.Pos, ev.IsMouse); } }
public void ProcessQueued() { lock (_queue) { for (var i = 0; i < _queue.Count; i++) { var ev = _queue[i]; TouchPanel.AddEvent(ev.Id, ev.State, ev.Pos, ev.IsMouse); } _queue.Clear(); } }
public void OnTouchEvent(MotionEvent e) { if (!Enabled) { return; } Vector2 position = Vector2.Zero; position.X = e.GetX(e.ActionIndex); position.Y = e.GetY(e.ActionIndex); UpdateTouchPosition(ref position); int id = e.GetPointerId(e.ActionIndex); switch (e.ActionMasked) { // DOWN case MotionEventActions.Down: case MotionEventActions.PointerDown: TouchPanel.AddEvent(id, TouchLocationState.Pressed, position); break; // UP case MotionEventActions.Up: case MotionEventActions.PointerUp: TouchPanel.AddEvent(id, TouchLocationState.Released, position); break; // MOVE case MotionEventActions.Move: for (int i = 0; i < e.PointerCount; i++) { id = e.GetPointerId(i); position.X = e.GetX(i); position.Y = e.GetY(i); UpdateTouchPosition(ref position); TouchPanel.AddEvent(id, TouchLocationState.Moved, position); } break; // CANCEL, OUTSIDE case MotionEventActions.Cancel: case MotionEventActions.Outside: for (int i = 0; i < e.PointerCount; i++) { id = e.GetPointerId(i); TouchPanel.AddEvent(id, TouchLocationState.Released, position); } break; } }
internal static void AddEvent(int id, TouchLocationState state, Vector2 position) { TouchPanel.AddEvent(id, state, position, false); }