/// <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
            };
        }
Esempio n. 2
0
        /// <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
                };
            }
        }
Esempio n. 3
0
        /// <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
            };
        }
Esempio n. 4
0
        /// <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
            };
        }