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; }
public unsafe GlfwMouse() { _scrollWheel = (ScrollWheel *)Marshal.AllocHGlobal(sizeof(ScrollWheel)); ScrollWheels = new GlfwReadOnlyList <ScrollWheel>(_scrollWheel, 1); }