Hoi Tweakers,
Ik ben radeloos en blijkbaar werkt het voor iedereen 100% de eerste keer want ik kan letterlijk niks vinden hierover. Ik probeer tegen mijn stuurtje te praten met DirectInput, dit gehannes gebeurt in een .dll die door wat magie (ScriptHookV) door GTA V wordt geladen. Alles wel en kommer, ik kan prima het ding pollen en aflezen. Komen we bij het Force Feedback gedeelte.
Per Microsoft's voorbeeld: (FFJoy project)
Ik doe het volgende op het gevonden apparaatje via het DirectInput object:
En ja hoor, het ding geeft geen S_OK of iets dergelijks terug. Mijn logje zegt dit:
Dit komt dus niet voor in winerror.h.
Hier wordt de DirectX SDK van juni 2010 gebruikt, voor XInput en DirectInput, winerror.h is dus ook daarvan.
Ik heb nog uit radeloosheid gewoon "nullptr" neergeplempt waar GetForegroundWindow() staat, maar ik krijg dezelfde error terug. Alles wat ik op Google vind hierover is "Resource is in use", maar dat is enkel bij .NET applicaties. Zelf denk ik dat dit aan GetForegroundWindow() kan liggen - dat deze niet goed het window met GTA V op geeft. De waarde is in ieder geval geen 0.
Buiten dit werkt het als een zonnetje, enkel de initialisatie van het nodige gebeuren voor DInput FF gaat fout. Als je mijn loodgieter-gehacksel wilt bekijken -
https://github.com/E66666666/GTAVManualTransmission
De klasse die hierover gaat is WheelDirectInput, InitWheel is de method die dit gebeuren initialiseert. Source code zit in Gears - als je het bouwen uit wilt proberen - je hebt de dingen nodig die in de links staan + je moet de natives.h even updaten/aanpassen.
Ik ben radeloos en blijkbaar werkt het voor iedereen 100% de eerste keer want ik kan letterlijk niks vinden hierover. Ik probeer tegen mijn stuurtje te praten met DirectInput, dit gehannes gebeurt in een .dll die door wat magie (ScriptHookV) door GTA V wordt geladen. Alles wel en kommer, ik kan prima het ding pollen en aflezen. Komen we bij het Force Feedback gedeelte.
Per Microsoft's voorbeeld: (FFJoy project)
code:
1
| // Exclusive access is required in order to perform force feedback. |
Ik doe het volgende op het gevonden apparaatje via het DirectInput object:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| // ergens heulemaal bovenaan: #define FAILED(hr) (((HRESULT)(hr)) < 0) // per winerror.h HRESULT hr; if (FAILED( hr = e->diDevice->SetCooperativeLevel( GetForegroundWindow(), DISCL_EXCLUSIVE | DISCL_FOREGROUND))) { std::stringstream ss; ss << std::hex << hr; logger.Write("Error " + ss.str()); return false; } |
En ja hoor, het ding geeft geen S_OK of iets dergelijks terug. Mijn logje zegt dit:
code:
1
| [21:32:11.124] Error 800700aa |
Dit komt dus niet voor in winerror.h.
Hier wordt de DirectX SDK van juni 2010 gebruikt, voor XInput en DirectInput, winerror.h is dus ook daarvan.
Ik heb nog uit radeloosheid gewoon "nullptr" neergeplempt waar GetForegroundWindow() staat, maar ik krijg dezelfde error terug. Alles wat ik op Google vind hierover is "Resource is in use", maar dat is enkel bij .NET applicaties. Zelf denk ik dat dit aan GetForegroundWindow() kan liggen - dat deze niet goed het window met GTA V op geeft. De waarde is in ieder geval geen 0.
Buiten dit werkt het als een zonnetje, enkel de initialisatie van het nodige gebeuren voor DInput FF gaat fout. Als je mijn loodgieter-gehacksel wilt bekijken -
https://github.com/E66666666/GTAVManualTransmission
De klasse die hierover gaat is WheelDirectInput, InitWheel is de method die dit gebeuren initialiseert. Source code zit in Gears - als je het bouwen uit wilt proberen - je hebt de dingen nodig die in de links staan + je moet de natives.h even updaten/aanpassen.