internal void UpdateState() { VirtualMouse.GetState(); states = new Dictionary <ActionKeys, bool>(); shiftstates = new Dictionary <ShiftKeys, bool>(); currentState = InputState.GetState(); foreach (ActionKeys actionKey in Helpers.EnumExtensions.GetValues <ActionKeys>()) { states.Add(actionKey, currentState.CheckPressed(actionKey)); } foreach (ShiftKeys actionKey in SingularShiftKeys) { shiftstates.Add(actionKey, currentState.CheckShiftPressed(actionKey)); } TouchCollection touchCollection = TouchPanel.GetState(); if (touchCollection.Count == 1) { CurrentTouchLocation = touchCollection[0]; switch (touchCollection[0].State) { case TouchLocationState.Moved: { var xp = touchCollection[0].Position; if (xp.X > 0 && xp.Y > 0) { MousePosition = xp; } break; } case TouchLocationState.Pressed: { var xp = touchCollection[0].Position; if (xp.X > 0 && xp.Y > 0) { MousePosition = xp; } break; } } } if (touchCollection.Count > 2) { Vector2 p1 = touchCollection[0].Position; Vector2 p2 = touchCollection[1].Position; Vector2 p3 = Vector2.Lerp(p1, p2, 0.5f); MousePosition = p3; IsTwoFinger = true; } else { IsTwoFinger = false; } if (touchCollection.Count == 0) { CurrentTouchLocation = null; var xp = currentState.mouseState.Position.ToVector2(); if (xp.X > 0 && xp.Y > 0) { MousePosition = xp; } } if (Math.Abs(MousePosition.X - LastGoodXmouse) > 10 || Math.Abs(MousePosition.Y - LastGoodYmouse) > 10) { LastGoodXmouse = (int)MousePosition.X; LastGoodYmouse = (int)MousePosition.Y; mouseActive = true; } ScrollPos = currentState.ScrollPos; PressedKeys = currentState.PressedKeys; }