这是此插件的第二篇文章,第一章链接如下:冯海亮:ue4 Windows RawInput Pluginzhuanlan.zhihu.com
关于此插件所有代码如下:Lynnvon/RawInputPluginForUE4github.com第一章主要解决了HIDStatusBufferTooSmall的错误和增加axis与button数量的问题,这篇文章主要解决原生插件不支持多设备的问题。
通过阅读原生插件源代码,发现原插件在注册HID设备时,只注册找到的第一个设备,如果你只有一个USB 设备,那没有任何问题,但当你的设备为2个甚至更多时,原插件是没有注册后边的设备的,这导致了当你的设备多于1个时,多个设备的数据相互混合了(虽然没有注册设备,但获取获取并没有区分是否注册,而是获取所有设备的数据),完全无法使用。
那思路就很简单了,只需要在RawInputWindows.cpp的RegisterInputDevice方法内修改为注册全部设备,然后在ProcessMessage方法内进行DeviceName比对,就可以区分开不同设备的数据。
RegisterInputDevice方法内:
QueryConnectedDevices();
// If this doesn't already exist in our internal list add itDeviceHandle = FindRegisteredDeviceHandle(DeviceData);
if (DeviceHandle == INDEX_NONE)<