input prog

This commit is contained in:
2026-03-07 22:11:11 -06:00
parent 71e6079054
commit 5c4537b2fa
9 changed files with 189 additions and 75 deletions
+59
View File
@@ -0,0 +1,59 @@
/**
* Copyright (c) 2026 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "input/input.h"
float_t inputButtonGetValue(const inputbutton_t button) {
switch(button.type) {
#ifdef DUSK_INPUT_KEYBOARD
case INPUT_BUTTON_TYPE_KEYBOARD: {
return INPUT.keyboardState[button.scancode] ? 1.0f : 0.0f;
}
#endif
#ifdef DUSK_INPUT_POINTER
case INPUT_BUTTON_TYPE_POINTER: {
switch(button.pointerAxis) {
case INPUT_POINTER_AXIS_X:
return INPUT.mouseX;
case INPUT_POINTER_AXIS_Y:
return INPUT.mouseY;
default:
assertUnreachable("Unknown pointer axis");
return 0.0f;
}
}
#endif
#ifdef DUSK_INPUT_GAMEPAD
case INPUT_BUTTON_TYPE_GAMEPAD: {
if(SDL_GameControllerGetButton(INPUT.controller, button.gpButton)) {
return 1.0f;
}
return 0.0f;
}
case INPUT_BUTTON_TYPE_GAMEPAD_AXIS: {
float_t value = 0.0f;
Sint16 axis = SDL_GameControllerGetAxis(INPUT.controller, button.gpAxis.axis);
value = (float_t)axis / 32767.0f;
if(!button.gpAxis.positive) value = -value;
if(value >= INPUT.deadzone) return value;
return 0.0f;
}
#endif
default: {
assertUnreachable("Unknown input button type");
return 0.0f;
}
}
}