The new implementation uses a message-only window to register raw input events.
XInput is still used when possible, but raw input is being used to handle device detection. (XInput is only enabled when an XInput device is plugged in, which also prevents us from having to load and poll the XInput library unnecessarily.)
For raw devices, the Windows HID parser library is used to parse the raw data. Unfortunately, the Windows 7.1 SDK does not ship hid.lib (which is in the WDK 7.1.0), so I am dynamically loading hid.dll to prevent pulling in a dependency on the WDK. (But perhaps we can ship hid.lib in the thirdparty libraries?)
Input devices other than XInput gamepads and the 3D mouse have not been tested very well yet. Adding keyboard and mouse support is still a TODO.
This also splits out the Windows implementation of InputDeviceManager into a separate subclass; it is intended that the other implementations will follow suit.
In particular it seems that decomposition is slow, so the code to handle the transformation of the normal column now tries harder to avoid it, especially in the case of a scale of 1.
Also see #222
This prevents exposed joints from not being affected by a transform directly on the Character node. See panda3d/panda3d#221 for more details.
Fixes#221
This fixes error messages being generated of the form:
AL lib: (WW) alSetError: Error generated on context 0x801cf8800, code 0xa003
This is caused by alSourceUnqueueBuffers being called without first checking whether processed buffers are available using alGetSourcei.
Fixes#180
Allows accessing `base` object and several other builtins from the ShowBaseGlobal module.
It doesn't bother with builtins that are available as members of the base object such as `render` and `loader`.
Fixes#182
This is required to make the test suite run with pipelining enabled.
It's necessary to let the draw thread do these tasks because that's where the OpenGL context is bound to. However, we need to let it access the data from the calling thread, so we have to temporarily change the pipeline stage of the draw thread.
I'm not really happy about this solution; it would be better to temporarily make the context current to the app thread, but we need a window for that, which we don't currently require to be passed into that method.