Renderer/src/main/java/electrosphere/controls/ControlCallback.java

47 lines
1.4 KiB
Java

package electrosphere.controls;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWKeyCallbackI;
import electrosphere.logger.LoggerInterface;
public class ControlCallback implements GLFWKeyCallbackI {
static final int KEY_VALUE_ARRAY_SIZE = 512;
boolean[] keyValues = new boolean[KEY_VALUE_ARRAY_SIZE];
@Override
public void invoke(long window, int key, int scancode, int action, int mods) {
if(key >= 0 && key < KEY_VALUE_ARRAY_SIZE){
if(action == GLFW.GLFW_PRESS || action == GLFW.GLFW_REPEAT){
keyValues[key] = true;
} else {
keyValues[key] = false;
}
}
// if(key == GLFW.GLFW_KEY_D){
// System.out.println("[D]Action: " + action + " keyValues: " + keyValues[key]);
// }
// if(key == GLFW.GLFW_KEY_W){
// System.out.println("[W]Action: " + action + " keyValues: " + keyValues[key]);
// }
}
/**
* !!!WARNING!!!, will silently fail if
* @param keycode
* @return
*/
public boolean getKey(int keycode){
if(keycode >= 0 && keycode < KEY_VALUE_ARRAY_SIZE){
return keyValues[keycode];
} else {
LoggerInterface.loggerEngine.WARNING("Trying to get key state where keycode is undefined (<0 or >400)");
}
return false;
}
}