Also habe ich diesen Code bekam:SDL2 Joystick Ereignistriggerung nicht
void Engine::Run() {
// initialize all components
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK))
throw Exception("couldn't initialize SDL\n" + string(SDL_GetError()), 1);
// other code
run = true;
SDL_Event event;
while (run) {
// other code
uint32 timeout = SDL_GetTicks() + 50;
while (SDL_PollEvent(&event) && timeout - SDL_GetTicks() > 0)
HandleEvent(event);
}
}
void Engine::HandleEvent(const SDL_Event& event) {
switch (event.type) {
case SDL_KEYDOWN:
inputSys->KeyDownEvent(event.key);
break;
case SDL_KEYUP:
inputSys->KeyUpEvent(event.key);
break;
case SDL_JOYBUTTONDOWN:
cout << "button" << endl;
break;
case SDL_JOYHATMOTION:
cout << "hat" << endl;
break;
case SDL_JOYAXISMOTION:
cout << "axis" << endl;
break;
case SDL_JOYDEVICEADDED: case SDL_JOYDEVICEREMOVED:
inputSys->UpdateControllers();
break;
// other code
}
}
Das Problem ist, dass die einzigen Ereignisse, die nicht genannt werden, sind die Joystick-Taste, Hut und Achse Ereignisse. Die anderen zwei Joystick-bezogenen Ereignisse funktionieren gut.
Ich verwende den exakt gleichen Code in einem anderen Projekt, wo alle Joystick-Ereignisse ohne Problem aufgerufen werden, aber seit ich den Code in mein neues Projekt verschoben habe, werden sie nicht mehr aufgerufen.
SDL erkennt den eingesteckten Controller und ich kann Funktionen wie SDL_JoystickGetAxis verwenden, aber aus irgendeinem Grund scheinen diese drei Ereignisse nicht zu funktionieren. Irgendeine Idee warum das ist?