Add 'shf/' from commit 'b6c5a95b664aeb861d7b33ffc9eefe447ba99dd7'
git-subtree-dir: shf git-subtree-mainline:401408448fgit-subtree-split:b6c5a95b66
This commit is contained in:
119
shf/ffi/glfw-input.c
Normal file
119
shf/ffi/glfw-input.c
Normal file
@@ -0,0 +1,119 @@
|
||||
#include "mlton-glfw-export.h"
|
||||
#include "glad.h"
|
||||
#define GLFW_INCLUDE_NONE
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
int PRESS = GLFW_PRESS;
|
||||
int REPEAT = GLFW_REPEAT;
|
||||
int RELEASE = GLFW_RELEASE;
|
||||
int KEY_ESC = GLFW_KEY_ESCAPE;
|
||||
int KEY_ENTER = GLFW_KEY_ENTER;
|
||||
int KEY_BACKSPACE = GLFW_KEY_BACKSPACE;
|
||||
|
||||
int KEY_ARROW_LEFT = GLFW_KEY_LEFT;
|
||||
int KEY_ARROW_RIGHT = GLFW_KEY_RIGHT;
|
||||
int KEY_ARROW_UP = GLFW_KEY_UP;
|
||||
int KEY_ARROW_DOWN = GLFW_KEY_DOWN;
|
||||
|
||||
void framebufferSizeCallback(GLFWwindow* window, int width, int height) {
|
||||
glViewport(0, 0, width, height);
|
||||
mltonFramebufferSizeCallback(width, height);
|
||||
}
|
||||
|
||||
void setFramebufferSizeCallback(GLFWwindow* window) {
|
||||
glfwSetFramebufferSizeCallback(window, framebufferSizeCallback);
|
||||
}
|
||||
|
||||
void charCallback(GLFWwindow* window, unsigned int codepoint) {
|
||||
mltonCharCallback(codepoint);
|
||||
}
|
||||
|
||||
void setCharCallback(GLFWwindow* window) {
|
||||
glfwSetCharCallback(window, charCallback);
|
||||
}
|
||||
|
||||
void keyCallback(GLFWwindow *window, int key, int scancode, int action, int mods) {
|
||||
mltonKeyCallback(key, scancode, action, mods);
|
||||
}
|
||||
|
||||
void setKeyCallback(GLFWwindow *window) {
|
||||
glfwSetKeyCallback(window, keyCallback);
|
||||
}
|
||||
|
||||
// gamepad code
|
||||
GLFWgamepadstate state;
|
||||
float* axes;
|
||||
int axesCount = -1;
|
||||
|
||||
int getGamepadState(int joystickID) {
|
||||
if (glfwJoystickIsGamepad(joystickID) && glfwGetGamepadState(joystickID, &state)) {
|
||||
axes = glfwGetJoystickAxes(joystickID, &axesCount);
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
float getLeftJoystickXAxisState() {
|
||||
if (axesCount >= 2) {
|
||||
return axes[0];
|
||||
} else {
|
||||
return 99.0;
|
||||
}
|
||||
}
|
||||
|
||||
float getLeftJoystickYAxisState() {
|
||||
if (axesCount >= 2) {
|
||||
return axes[1];
|
||||
} else {
|
||||
return 99.0;
|
||||
}
|
||||
}
|
||||
|
||||
float getL2State() {
|
||||
return axes[2];
|
||||
}
|
||||
|
||||
float getR2State() {
|
||||
return axes[5];
|
||||
}
|
||||
|
||||
int isCrossButtonPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_CROSS];
|
||||
}
|
||||
|
||||
int isCircleButtonPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_CIRCLE];
|
||||
}
|
||||
|
||||
int isSquareButtonPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_SQUARE];
|
||||
}
|
||||
|
||||
int isTriangleButtonPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_TRIANGLE];
|
||||
}
|
||||
|
||||
int isR1ButtonPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER];
|
||||
}
|
||||
|
||||
int isL1ButtonPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_LEFT_BUMPER];
|
||||
}
|
||||
|
||||
int isDpadUpPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_DPAD_UP];
|
||||
}
|
||||
|
||||
int isDpadDownPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_DPAD_DOWN];
|
||||
}
|
||||
|
||||
int isDpadLeftPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_DPAD_LEFT];
|
||||
}
|
||||
|
||||
int isDpadRightPressed() {
|
||||
return state.buttons[GLFW_GAMEPAD_BUTTON_DPAD_RIGHT];
|
||||
}
|
||||
Reference in New Issue
Block a user