Пример #1
0
        internal unsafe MouseState(IMouse mouse)
        {
            Name        = mouse.Name;
            Index       = mouse.Index;
            IsConnected = mouse.IsConnected;
            var buttons = mouse.SupportedButtons;

            _buttonCount        = buttons.Count;
            _buttons            = (MouseButton *)Marshal.AllocHGlobal(_buttonCount * sizeof(MouseButton));
            _pressedButtons     = (MouseButton *)Marshal.AllocHGlobal(_buttonCount * sizeof(MouseButton));
            _pressedButtonCount = 0;
            for (var i = 0; i < _buttonCount; i++)
            {
                _buttons[i] = buttons[i];
                if (mouse.IsButtonPressed(_buttons[i]))
                {
                    _pressedButtons[_pressedButtonCount++] = _buttons[i];
                }
            }

            _pressedButtons = (MouseButton *)Marshal.ReAllocHGlobal
                                  ((IntPtr)_pressedButtons, (IntPtr)(_pressedButtonCount * sizeof(MouseButton)));
            var wheels = mouse.ScrollWheels;

            _scrollWheelCount = wheels.Count;
            _scrollWheels     = (ScrollWheel *)Marshal.AllocHGlobal(_scrollWheelCount * sizeof(ScrollWheel));
            for (var i = 0; i < _scrollWheelCount; i++)
            {
                _scrollWheels[i] = wheels[i];
            }

            Position = mouse.Position;
        }
Пример #2
0
 public unsafe GlfwMouse()
 {
     _scrollWheel = (ScrollWheel *)Marshal.AllocHGlobal(sizeof(ScrollWheel));
     ScrollWheels = new GlfwReadOnlyList <ScrollWheel>(_scrollWheel, 1);
 }