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); }
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; }
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; }
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); }
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); }