I was hoping someone else on the project had OSX access but that's looking unlikely. The changes look fairly benign so I'm just going to merge this in. Move fast and break things right :)
Khronos stopped supporting .spec files in 2013. They're now over a year
old without support. As such it's not worth us continuing to support
them either.
Adds properties to KeyboardState, MouseState, JoystickState and GamePadState
(GamePadButtons), to see if any key or button is down. This should be faster
than iterating over all the public IsDown properties as we can make use of the
internal bit fields.
GamePadButtons uses IsButtonPressed rather than IsButtonDown like the others as
it more closely matches it's current interface (no down methods).
If the legacy keyboard device receives a key down event with IsRepeat set it
will only raise it's own key down event if it's KeyRepeat field is set to true.
This is as documented, regression casused by refactoring. Fixes issue #201.
Also change the GameWindowState example to show setting of KeyRepeat to true
and false and how that changes the event counts for the legacy and new keyboard
devices.
When running under NUnit GetEntryAssembly returns null. In this case we instead
search through the AppDomain for an assembly that matches the AppDomain name.
Fixes warnings [#61] by disabling unused field warnings for two structures in
HidProtocol. These fields aren't currently used by OpenTK but the stuctures are
used in native marshalling so must match the documented structures perfectly.
Issue reported at http://www.opentk.com/node/3805
We must not throw exceptions from a finalizer, as this leads to the
runtime forcibly taking down the application.
WinFactory.Dispose() could crash with a NRE when the joystick driver has
not been initialized. Fixed by checking for null before disposing the
input driver.
HIDInput.Dispose() would remove elements from a DeviceCollection during
iteration. This results in an exception.
We are now using a plain for-loop instead.
`DeviceCollection.GetEnumerator()` now returns a struct IEnumerable<T>
directly to avoid boxing.
Additionally, we can now use `DeviceCollection[int]` as a shortcut to
`FromIndex(int)`.