47 lines
1.4 KiB
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;
|
|
}
|
|
|
|
}
|