示例#1
0
        internal override void UpdateInput(bool isActive)
        {
            UpdateRawInputStatistics();

            intermediatePositions.Clear();
            intermediatePositions.AddRange(intermediatePositionsNextFrame);
            intermediatePositionsNextFrame.Clear();

            // The rest of the code in this method is in theory COMPLETELY unnecessary since SetPosition is going to be called in the next frame
            // in the base mouse handler anyways.
            // SetPosition however happens to not work reliably on windows 8.1 and thus this extra call increases the chances of the cursor
            // not doing weird jumps at window boundaries.
            Point pixelPosition = new Point((int)Math.Round(position.X), (int)Math.Round(position.Y));

            if (isActive && !AbsoluteMovement && !MouseManager.PosInWindow(pixelPosition, 1))
            {
                Point nativeMousePosition = MouseManager.GetNativePosition();

                if (!MouseManager.PosInWindow(nativeMousePosition))
                {
                    position.X = nativeMousePosition.X;
                    position.Y = nativeMousePosition.Y;
                }
                else
                {
                    MouseManager.SetNativePosition(pixelPosition);
                }
            }
        }
示例#2
0
        private void HandleCalibration(TouchPoint tp)
        {
            Thread.Sleep(50);
            Point nativeMousePosition = MouseManager.GetNativePosition();

            if (ratioBase1.X == 0)
            {
                if (nativeMousePosition.X < 200)
                {
                    ratioBase1.X  = tp.X;
                    ratioBase1S.X = nativeMousePosition.X;
                }
            }
            else
            {
                if (nativeMousePosition.X > 600)
                {
                    ratioBase2.X  = tp.X;
                    ratioBase2S.X = nativeMousePosition.X;
                }
            }

            if (ratioBase1.Y == 0)
            {
                if (nativeMousePosition.Y < 200)
                {
                    ratioBase1.Y  = tp.Y;
                    ratioBase1S.Y = nativeMousePosition.Y;
                }
            }
            else
            {
                if (nativeMousePosition.Y > 600)
                {
                    ratioBase2.Y  = tp.Y;
                    ratioBase2S.Y = nativeMousePosition.Y;
                }
            }

            if (ratioBase2.X > 0 && ratioBase2.Y > 0)
            {
                Calibrated = true;

                rawRatio.X = (float)(ratioBase2.X - ratioBase1.X) / (ratioBase2S.X - ratioBase1S.X);
                rawRatio.Y = (float)(ratioBase2.Y - ratioBase1.Y) / (ratioBase2S.Y - ratioBase1S.Y);

                rawOffset.X = ratioBase1.X - (ratioBase1S.X * rawRatio.X);
                rawOffset.Y = ratioBase1.Y - (ratioBase1S.Y * rawRatio.Y);

                ConfigManager.sTouchCalibration = rawRatio.X.ToString(GameBase.nfi) + ":" + rawRatio.Y.ToString(GameBase.nfi) + ":" + rawOffset.X.ToString(GameBase.nfi) + ":" + rawOffset.Y.ToString(GameBase.nfi);

                NotificationManager.ShowMessageMassive("Touchscreen Calibration Complete!", 2000);
            }
        }
示例#3
0
        internal override void UpdateInput(bool isActive)
        {
            Point nativeMousePosition = MouseManager.GetNativePosition();

            if (!isActive)
            {
                wasActive   = false;
                position.X += nativeMousePosition.X - previousNativeMousePosition.X;
                position.Y += nativeMousePosition.Y - previousNativeMousePosition.Y;

                previousNativeMousePosition = nativeMousePosition;
                return;
            }

            previousNativeMousePosition = nativeMousePosition;

            if (!wasActive)
            {
                if (GameBase.TotalFramesRendered == 0 || !MouseManager.PosInWindow(nativeMousePosition))
                {
                    position.X = nativeMousePosition.X;
                    position.Y = nativeMousePosition.Y;
                }
                else
                {
                    Point pixelPosition = new Point((int)Math.Round(position.X), (int)Math.Round(position.Y));

                    MouseManager.SetNativePosition(pixelPosition, true);
                    nativeMousePosition = MouseManager.GetNativePosition();
                }
            }

            wasActive = true;

            if (ConfigManager.sMouseSpeed != 1 && !MouseManager.showMouse && !ConfigManager.sRawInput)
            {
                Point pixelPosition = new Point((int)Math.Round(position.X), (int)Math.Round(position.Y));

                if (MouseManager.PosInWindow(new Point(nativeMousePosition.X, nativeMousePosition.Y)))
                {
                    position.X += (nativeMousePosition.X - pixelPosition.X) * (float)ConfigManager.sMouseSpeed;
                    position.Y += (nativeMousePosition.Y - pixelPosition.Y) * (float)ConfigManager.sMouseSpeed;

                    pixelPosition = new Point((int)Math.Round(position.X), (int)Math.Round(position.Y));
                }
                else
                {
                    position.X = nativeMousePosition.X;
                    position.Y = nativeMousePosition.Y;

                    //the input stream is sometimes hooked by crappy mouse drivers. so we want to equalize
                    //both changes and non changes in sensitivity mode.
                    pixelPosition = new Point(nativeMousePosition.X, nativeMousePosition.Y);
                }

                MouseManager.SetNativePosition(pixelPosition);
                nativeMousePosition = MouseManager.GetNativePosition();

                // Windows might restrict our mouse cursor's movement. In this case we adjust to windows' position.
                // (This is relevant for cursor clamping at monitor boundaries in full-screen and clamping to the osu! window in windowed mode)
                if (pixelPosition.X != nativeMousePosition.X)
                {
                    Debug.Print("X position disparity detected.");
                    position.X += nativeMousePosition.X - pixelPosition.X;
                }

                if (pixelPosition.Y != nativeMousePosition.Y)
                {
                    Debug.Print("Y position disparity detected.");
                    position.Y += nativeMousePosition.Y - pixelPosition.Y;
                }
            }
            else
            {
                position.X = nativeMousePosition.X;
                position.Y = nativeMousePosition.Y;
            }
        }
示例#4
0
 internal override bool Initialize()
 {
     previousNativeMousePosition = MouseManager.GetNativePosition();
     return(true);
 }