/// <summary> /// Creates a new mouse input device instance using an existing <see cref="OpenTK.GameWindow"/>. /// </summary> /// <param name="gameWindow">The game window providing mouse input.</param> public WinFormsMouseDeviceImp(Control gameWindow) { _form = gameWindow; _form.MouseDown += OnGameWinMouseDown; _form.MouseUp += OnGameWinMouseUp; _form.MouseWheel += OnMouseWheel; _currentWheel = 0; _btnLeftDesc = new ButtonImpDescription { ButtonDesc = new ButtonDescription { Name = "Left", Id = (int)Fusee.Engine.Common.MouseButtons.Left }, PollButton = false }; _btnMiddleDesc = new ButtonImpDescription { ButtonDesc = new ButtonDescription { Name = "Middle", Id = (int)Fusee.Engine.Common.MouseButtons.Middle }, PollButton = false }; _btnRightDesc = new ButtonImpDescription { ButtonDesc = new ButtonDescription { Name = "Right", Id = (int)Fusee.Engine.Common.MouseButtons.Right }, PollButton = false }; _wheelAxisDescription = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "Wheel", Id = (int)MouseAxes.Wheel, Direction = AxisDirection.Z, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound, MinValueOrAxis = float.NaN, MaxValueOrAxis = float.NaN }, // PollAxis = true PollAxis = false }; }
/// <summary> /// Implements a touch device for windows. /// </summary> /// <param name="canvas"></param> public TouchDeviceImp(object canvas) { _canvas = canvas; ConnectCanvasEvents(); _tpAxisDescs = new Dictionary <int, AxisImpDescription>(_nTouchPointsSupported * 2 + 5); _activeTouchpoints = new Dictionary <int, int>(_nTouchPointsSupported); _tpAxisDescs[(int)TouchAxes.ActiveTouchpoints] = new AxisImpDescription { AxisDesc = new AxisDescription { Name = $"Active Touchpoints", Id = (int)TouchAxes.ActiveTouchpoints, Direction = AxisDirection.Unknown, Nature = AxisNature.Unknown, Bounded = AxisBoundedType.Unbound }, PollAxis = true }; _tpAxisDescs[(int)TouchAxes.MinX] = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "MinX", Id = (int)TouchAxes.MinX, Direction = AxisDirection.X, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound, MinValueOrAxis = float.NaN, MaxValueOrAxis = float.NaN }, PollAxis = true }; _tpAxisDescs[(int)TouchAxes.MaxX] = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "MaxX", Id = (int)TouchAxes.MaxX, Direction = AxisDirection.X, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound, MinValueOrAxis = float.NaN, MaxValueOrAxis = float.NaN }, PollAxis = true }; _tpAxisDescs[(int)TouchAxes.MinY] = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "MinY", Id = (int)TouchAxes.MinY, Direction = AxisDirection.Y, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound, MinValueOrAxis = float.NaN, MaxValueOrAxis = float.NaN }, PollAxis = true }; _tpAxisDescs[(int)TouchAxes.MaxY] = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "MaxY", Id = (int)TouchAxes.MaxY, Direction = AxisDirection.Y, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound, MinValueOrAxis = float.NaN, MaxValueOrAxis = float.NaN }, PollAxis = true }; for (var i = 0; i < _nTouchPointsSupported; i++) { int id = 2 * i + (int)TouchAxes.Touchpoint_0_X; _tpAxisDescs[id] = new AxisImpDescription { AxisDesc = new AxisDescription { Name = $"Touchpoint {id} X", Id = id, Direction = AxisDirection.X, Nature = AxisNature.Position, Bounded = AxisBoundedType.OtherAxis, MinValueOrAxis = (int)TouchAxes.MinX, MaxValueOrAxis = (int)TouchAxes.MaxX }, PollAxis = false }; id++; _tpAxisDescs[id] = new AxisImpDescription { AxisDesc = new AxisDescription { Name = $"Touchpoint {id} Y", Id = id, Direction = AxisDirection.Y, Nature = AxisNature.Position, Bounded = AxisBoundedType.OtherAxis, MinValueOrAxis = (int)TouchAxes.MinY, MaxValueOrAxis = (int)TouchAxes.MaxY }, PollAxis = false }; } _tpButtonDescs = new Dictionary <int, ButtonImpDescription>(_nTouchPointsSupported); for (var i = 0; i < _nTouchPointsSupported; i++) { int id = i + (int)TouchPoints.Touchpoint_0; _tpButtonDescs[id] = new ButtonImpDescription { ButtonDesc = new ButtonDescription() { Name = $"Touchpoint {i} Active", Id = id, }, PollButton = false }; } }
/// <summary> /// Initializes a new instance of the <see cref="MouseDeviceImp" /> class. /// </summary> /// <param name="canvas">The (javascript) canvas object.</param> public MouseDeviceImp(object canvas) { _currentMouseWheel = 0; _canvas = canvas; ConnectCanvasEvents(); _btnLeftDesc = new ButtonImpDescription { ButtonDesc = new ButtonDescription { Name = "Left", Id = (int)MouseButtons.Left }, PollButton = false }; _btnMiddleDesc = new ButtonImpDescription { ButtonDesc = new ButtonDescription { Name = "Middle", Id = (int)MouseButtons.Middle }, PollButton = false }; _btnRightDesc = new ButtonImpDescription { ButtonDesc = new ButtonDescription { Name = "Right", Id = (int)MouseButtons.Right }, PollButton = false }; _mouseXDesc = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "X", Id = (int)MouseAxes.X, Direction = AxisDirection.X, Nature = AxisNature.Position, Bounded = AxisBoundedType.OtherAxis, MinValueOrAxis = (int)MouseAxes.MinX, MaxValueOrAxis = (int)MouseAxes.MaxX }, PollAxis = false }; _mouseYDesc = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "Y", Id = (int)MouseAxes.Y, Direction = AxisDirection.Y, Nature = AxisNature.Position, Bounded = AxisBoundedType.OtherAxis, MinValueOrAxis = (int)MouseAxes.MinY, MaxValueOrAxis = (int)MouseAxes.MaxY }, PollAxis = false }; }
/// <summary> /// Initializes a new instance of the <see cref="WindowsSpaceMouseInputDeviceImp" /> class. /// </summary> /// <param name="gameWindow">The game window to hook on to receive /// <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/hh454904(v=vs.85).aspx">WM_POINTER</a> messages.</param> public WindowsSpaceMouseInputDeviceImp(GameWindow gameWindow) { _gameWindow = gameWindow; _handle = new HandleRef(_gameWindow, _gameWindow.WindowInfo.Handle); try { _current3DConnexionDevice = new _3DconnexionDevice(_handle.ToString()); _current3DConnexionDevice.InitDevice((IntPtr)_handle); _current3DConnexionDevice.Motion += HandleMotion; ConnectWindowsEvents(); } catch (Exception ex) { Diagnostics.Warn("Trouble initializing the SpaceMouse. Probably due to missing driver.\n" + ex); _current3DConnexionDevice = null; } _TX = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "Translation X", Id = (int)SixDOFAxis.TX, Direction = AxisDirection.X, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound }, PollAxis = false }; _TY = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "Translation Y", Id = (int)SixDOFAxis.TY, Direction = AxisDirection.Y, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound }, PollAxis = false }; _TZ = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "Translation Z", Id = (int)SixDOFAxis.TZ, Direction = AxisDirection.Z, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound }, PollAxis = false }; _RX = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "Rotation Y", Id = (int)SixDOFAxis.RX, Direction = AxisDirection.Y, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound }, PollAxis = false }; _RY = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "Rotation X", Id = (int)SixDOFAxis.RY, Direction = AxisDirection.X, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound }, PollAxis = false }; _RZ = new AxisImpDescription { AxisDesc = new AxisDescription { Name = "Rotation Z", Id = (int)SixDOFAxis.RZ, Direction = AxisDirection.Z, Nature = AxisNature.Position, Bounded = AxisBoundedType.Unbound }, PollAxis = false }; }