public override bool Initialize(GameHost host)
        {
            host.InputThread.Scheduler.Add(scheduled = new ScheduledDelegate(delegate
            {
                if (host.Window.WindowState == WindowState.Minimized)
                {
                    return;
                }

                var state = OpenTK.Input.Mouse.GetCursorState();

                if (state.Equals(lastState))
                {
                    return;
                }

                lastState = state;

                Point point = host.Window.PointToClient(new Point(state.X, state.Y));

                Vector2 pos = new Vector2(point.X, point.Y);

                PendingStates.Enqueue(new InputState {
                    Mouse = new TkMouseState(state, pos, host.IsActive)
                });

                FrameStatistics.Increment(StatisticsCounterType.MouseEvents);
            }, 0, 0));

            return(true);
        }
Esempio n. 2
0
            public TkMouseState(OpenTK.Input.MouseState tkState, Vector2 position)
            {
                foreach (var b in ButtonStates)
                {
                    switch (b.Button)
                    {
                    case MouseButton.Left:
                        b.State |= tkState.LeftButton == OpenTK.Input.ButtonState.Pressed;
                        break;

                    case MouseButton.Middle:
                        b.State |= tkState.MiddleButton == OpenTK.Input.ButtonState.Pressed;
                        break;

                    case MouseButton.Right:
                        b.State |= tkState.RightButton == OpenTK.Input.ButtonState.Pressed;
                        break;

                    case MouseButton.Button1:
                        b.State |= tkState.XButton1 == OpenTK.Input.ButtonState.Pressed;
                        break;

                    case MouseButton.Button2:
                        b.State |= tkState.XButton2 == OpenTK.Input.ButtonState.Pressed;
                        break;
                    }
                }

                Wheel    = tkState.Wheel;
                Position = position;
            }
Esempio n. 3
0
        public override bool Initialize(BasicGameHost host)
        {
            host.InputScheduler.Add(new ScheduledDelegate(delegate
            {
                OpenTK.Input.MouseState state = OpenTK.Input.Mouse.GetCursorState();
                Point point = host.Window.PointToClient(new Point(state.X, state.Y));

                //todo: reimplement if necessary
                //Vector2 pos = Vector2.Multiply(point, Vector2.Divide(host.DrawSize, this.Size));

                Vector2 pos = new Vector2(point.X, point.Y);

                var tkState = new TkMouseState(state, pos);
                if (!host.IsActive)
                {
                    tkState.ButtonStates.ForEach(s => s.State = false);
                    tkState.Wheel = tkState.LastState?.Wheel ?? 0;
                }

                PendingStates.Enqueue(new InputState {
                    Mouse = tkState
                });
            }, 0, 0));

            return(true);
        }
            public TkMouseState(OpenTK.Input.MouseState tkState, Vector2 position, bool active)
            {
                WasActive = active;

                if (active && tkState.IsAnyButtonDown)
                {
                    addIfPressed(tkState.LeftButton, MouseButton.Left);
                    addIfPressed(tkState.MiddleButton, MouseButton.Middle);
                    addIfPressed(tkState.RightButton, MouseButton.Right);
                    addIfPressed(tkState.XButton1, MouseButton.Button1);
                    addIfPressed(tkState.XButton2, MouseButton.Button2);
                }

                Wheel    = tkState.Wheel;
                Position = position;
            }
Esempio n. 5
0
        protected OpenTKMouseState(OpenTK.Input.MouseState tkState, bool active, Vector2?mappedPosition)
        {
            WasActive = active;

            // While not focused, let's silently ignore everything but position.
            if (active && tkState.IsAnyButtonDown)
            {
                addIfPressed(tkState.LeftButton, MouseButton.Left);
                addIfPressed(tkState.MiddleButton, MouseButton.Middle);
                addIfPressed(tkState.RightButton, MouseButton.Right);
                addIfPressed(tkState.XButton1, MouseButton.Button1);
                addIfPressed(tkState.XButton2, MouseButton.Button2);
            }

            Wheel    = tkState.Wheel;
            Position = new Vector2(mappedPosition?.X ?? tkState.X, mappedPosition?.Y ?? tkState.Y);
        }
Esempio n. 6
0
        public override bool Initialize(GameHost host)
        {
            host.InputThread.Scheduler.Add(scheduled = new ScheduledDelegate(delegate
            {
                OpenTK.Input.MouseState state = OpenTK.Input.Mouse.GetCursorState();
                Point point = host.Window.PointToClient(new Point(state.X, state.Y));

                //todo: reimplement if necessary
                //Vector2 pos = Vector2.Multiply(point, Vector2.Divide(host.DrawSize, this.Size));

                Vector2 pos = new Vector2(point.X, point.Y);

                var tkState = new TkMouseState(state, pos, host.IsActive);

                PendingStates.Enqueue(new InputState {
                    Mouse = tkState
                });

                FrameStatistics.Increment(StatisticsCounterType.MouseEvents);
            }, 0, 0));

            return(true);
        }
        public override bool Initialize(GameHost host)
        {
            host.InputThread.Scheduler.Add(scheduled = new ScheduledDelegate(delegate
            {
                if (!host.Window.Visible)
                {
                    return;
                }

                var state = OpenTK.Input.Mouse.GetCursorState();

                if (state.Equals(lastState))
                {
                    return;
                }

                lastState = state;

                Point point = host.Window.PointToClient(new Point(state.X, state.Y));
                Vector2 pos = new Vector2(point.X, point.Y);

                // While not focused, let's silently ignore everything but position.
                if (!host.Window.Focused)
                {
                    state = new OpenTK.Input.MouseState();
                }

                PendingStates.Enqueue(new InputState {
                    Mouse = new TkMouseState(state, pos, host.IsActive)
                });

                FrameStatistics.Increment(StatisticsCounterType.MouseEvents);
            }, 0, 0));

            return(true);
        }