summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/camera.c (renamed from src/camera/camera.c)0
-rw-r--r--src/camera.h (renamed from src/camera/camera.h)2
-rw-r--r--src/common.h23
-rw-r--r--src/glm_bindings.c2
-rw-r--r--src/honey.h16
-rw-r--r--src/honey_lua.c273
-rw-r--r--src/input.c8
-rw-r--r--src/input.h4
-rw-r--r--src/input/input.c1355
-rw-r--r--src/input/input.h229
-rw-r--r--src/light.c (renamed from src/light/light.c)0
-rw-r--r--src/light.h (renamed from src/light/light.h)2
-rw-r--r--src/lua/honey_lua.h46
-rw-r--r--src/mesh.c (renamed from src/mesh/mesh.c)0
-rw-r--r--src/mesh.h (renamed from src/mesh/mesh.h)2
-rw-r--r--src/primitives.c (renamed from src/primitives/primitives.c)0
-rw-r--r--src/primitives.h (renamed from src/primitives/primitives.h)4
-rw-r--r--src/shader.c (renamed from src/shader/shader.c)86
-rw-r--r--src/shader.h (renamed from src/shader/shader.h)4
-rw-r--r--src/texture.c (renamed from src/texture/texture.c)0
-rw-r--r--src/texture.h (renamed from src/texture/texture.h)2
-rw-r--r--src/window.c (renamed from src/window/window.c)0
-rw-r--r--src/window.h (renamed from src/window/window.h)2
23 files changed, 278 insertions, 1782 deletions
diff --git a/src/camera/camera.c b/src/camera.c
index 44f480d..44f480d 100644
--- a/src/camera/camera.c
+++ b/src/camera.c
diff --git a/src/camera/camera.h b/src/camera.h
index b8d3b61..b3b9eed 100644
--- a/src/camera/camera.h
+++ b/src/camera.h
@@ -7,7 +7,7 @@
* and common camera variants.
*/
-#include "../common.h"
+#include "common.h"
enum honey_camera_projection {
HONEY_PERSPECTIVE,
diff --git a/src/common.h b/src/common.h
index 6ae1c40..f9bc64b 100644
--- a/src/common.h
+++ b/src/common.h
@@ -107,11 +107,6 @@ typedef enum {
HONEY_ANY
} honey_lua_type;
-typedef struct {
- honey_lua_type type;
- void* ptr;
-} honey_lua_argument_pair;
-
/** @brief Get arguments from a function, checking to ensure the types match.
*
* Each argument type should be specified as [# of args], type, ptr, type, ptr...,
@@ -137,7 +132,7 @@ typedef struct {
* @returns The zero-indexed index of the actual argument option used. Throws an
* error if no options matched the provided arguments.
*/
-int honey_lua_parse_arguments(lua_State* L, int n, ...);
+int honey_lua_parse_arguments(lua_State* L, unsigned int n, ...);
/** @brief Wrap C objects for lua. */
typedef struct honey_lua_element {
@@ -166,17 +161,25 @@ typedef struct honey_lua_element {
void honey_lua_push_element(lua_State* L,
honey_lua_element element);
-/** @brief Create a lua table populated with various elements.
+/** @brief Create and populate a lua table.
+ *
+ * This function expects a list of the form `type, name, element, type, name, element...`.
+ * In the case of a sub-table, the format is
+ * `type, name, n_elements, subtype, subname, subelement...`.
+ * This can be nested as deeply as one wishes.
+ *
+ * As userdata cannot be pushed from C, attempting to push HONEY_USERDATA will result in
+ * an error.
*
* @param[in] L The lua state to push the table to.
- * @param[in] elements Array of elements to populate the table.
* @param[in] n_elements The number of elements in the array.
+ * @param[in] ... Variadic list of table elements.
*
* @returns Nothing.
*/
void honey_lua_create_table(lua_State* L,
- honey_lua_element* elements,
- unsigned int n_elements);
+ unsigned int n_elements,
+ ...);
/** @brief Get the traceback for use after an error.
*/
diff --git a/src/glm_bindings.c b/src/glm_bindings.c
index cfd85e5..9fdd7f2 100644
--- a/src/glm_bindings.c
+++ b/src/glm_bindings.c
@@ -7,7 +7,7 @@ int honey_glm_mat4_mt_ref = LUA_NOREF;
void honey_setup_glm(lua_State* L)
{
- honey_lua_create_table(L, NULL, 0);
+ lua_pushnil(L);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/honey.h b/src/honey.h
index 0ca3d52..5401a47 100644
--- a/src/honey.h
+++ b/src/honey.h
@@ -8,15 +8,15 @@
#include "common.h"
-#include "camera/camera.h"
+#include "camera.h"
#include "glm_bindings.h"
-#include "input/input.h"
-#include "light/light.h"
-#include "mesh/mesh.h"
-#include "primitives/primitives.h"
-#include "shader/shader.h"
-#include "texture/texture.h"
-#include "window/window.h"
+#include "input.h"
+#include "light.h"
+#include "mesh.h"
+#include "primitives.h"
+#include "shader.h"
+#include "texture.h"
+#include "window.h"
/** @struct Helper struct to wrap command-line options. */
typedef struct {
diff --git a/src/honey_lua.c b/src/honey_lua.c
index 7730809..2469d37 100644
--- a/src/honey_lua.c
+++ b/src/honey_lua.c
@@ -2,14 +2,31 @@
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
- * Lua binding helper function definitions
+ * Helper structs
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
+struct argument_pair {
+ honey_lua_type type;
+ void* ptr;
+};
+
+struct argument_list {
+ unsigned int length;
+ struct argument_pair* args;
+};
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ *
+ * Lua binding helper function declarations
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* string must be able to hold at least 16 characters. */
-static void type_to_string(char* string,
- honey_lua_type type);
+static int type_to_string(char* string,
+ honey_lua_type type);
static bool check_argument(lua_State* L,
honey_lua_type type,
@@ -111,90 +128,198 @@ static void honey_lua_arg_error(lua_State* L,
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-int honey_lua_parse_arguments(lua_State* L, int n, ...)
+static bool check_arg_list(lua_State* L,
+ struct argument_list arg_list)
{
- va_list args;
- va_start(args, n);
+ struct argument_pair* args = arg_list.args;
+ for (int i=0; i<arg_list.length; i++) {
+ if (!check_argument(L, args[i].type, i+1))
+ return false;
+ }
+ return true;
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+static int arg_list_to_string(char* string,
+ int start_index,
+ struct argument_list arg_list)
+{
+ struct argument_pair* args = arg_list.args;
- for (int i=1; i<=n; i++) {
- honey_lua_type type = va_arg(args, honey_lua_type);
- void* destination = va_arg(args, void*);
- if (!check_argument(L, type, i))
- honey_lua_arg_error(L, type, i);
+ string[start_index] = '(';
- get_argument(L, destination, type, i);
+ int index = start_index + 1;
+
+ for (int i=0; i<arg_list.length; i++) {
+ index += type_to_string(string + index, args[i].type);
+ if (i != arg_list.length - 1) {
+ string[index + 1] = ',';
+ string[index + 2] = ' ';
+ index += 2;
+ }
}
-
- va_end(args);
+
+ string[index] = ')';
+
+ return index+1;
}
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * Table creation functions
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-void honey_lua_create_table(lua_State* L,
- honey_lua_element* elements,
- unsigned int n_elements)
+static void arg_lists_to_string(char** string,
+ int n,
+ struct argument_list* arg_lists)
{
- lua_createtable(L, 0, n_elements);
+ unsigned int size = 0;
+ for (int i=0; i<n; i++)
+ size += 18*arg_lists[i].length + 5;
+
+ *string = calloc(size, sizeof(char));
+ int index = 0;
+
+ for (int i=0; i<n; i++) {
+ index = arg_list_to_string(*string, index, arg_lists[i]);
+ if (i != n) {
+ *string[index] = '\n';
+ index++;
+ }
+ }
+}
- for (int i=0; i<n_elements; i++) {
- honey_lua_push_element(L, elements[i]);
- lua_setfield(L, -2, elements[i].name);
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+static void get_arg_list(lua_State* L,
+ struct argument_list arg_list)
+{
+ struct argument_pair* args = arg_list.args;
+ for (int i=0; i<arg_list.length; i++) {
+ get_argument(L, args[i].ptr, args[i].type, i+1);
}
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_lua_push_element(lua_State* L, honey_lua_element element)
+
+int honey_lua_parse_arguments(lua_State* L, unsigned int n, ...)
{
- switch(element.type) {
- case HONEY_INTEGER:
- lua_pushinteger(L, element.data.integer);
- break;
+ struct argument_list* arg_lists = malloc(n * sizeof(struct argument_list));
+ if (arg_lists == NULL)
+ honey_lua_throw_error(L, "failed to allocate memory for argument parsing!");
- case HONEY_NUMBER:
- lua_pushnumber(L, element.data.number);
- break;
+ va_list args;
+ va_start(args, n);
- case HONEY_STRING:
- lua_pushstring(L, element.data.string);
- break;
+ for (int i=0; i<n; i++) {
+ arg_lists[i].length = va_arg(args, int);
+ arg_lists[i].args = malloc(arg_lists[i].length * sizeof(struct argument_pair));
+ if (arg_lists[i].args == NULL)
+ honey_lua_throw_error(L, "failed to allocate memory for argument parsing!");
- case HONEY_FUNCTION:
- lua_pushcfunction(L, element.data.function);
- break;
+ for (int j=0; j<arg_lists[i].length; j++) {
+ honey_lua_type type = va_arg(args, honey_lua_type);
+ void* destination = va_arg(args, void*);
+ }
+ }
+
+ va_end(args);
- case HONEY_TABLE:
- honey_lua_create_table(L,
- element.data.table.elements,
- element.data.table.n_elements);
- break;
+ int index = 0;
+
+ for (; index<n; index++) {
+ if (check_arg_list(L, arg_lists[index])) {
+ get_arg_list(L, arg_lists[index]);
+ break;
+ }
+ }
- case HONEY_NIL:
- lua_pushnil(L);
- break;
+ if (index == n) {
+ /* no arguments match, throw error */
+ }
+
+
+ for (int i=0; i<n; i++)
+ free(arg_lists[i].args);
+ free(arg_lists);
- case HONEY_USERDATA:
- /* cannot push userdata, push nil */
- lua_pushnil(L);
- break;
+ return index;
+}
- case HONEY_LIGHTUSERDATA:
- lua_pushlightuserdata(L, element.data.pointer);
- break;
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ *
+ * Table creation functions
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
- default:
- // this should never happen
- break;
+static void build_table_recursively(lua_State* L,
+ unsigned int n,
+ va_list args)
+{
+ lua_createtable(L, 0, n);
+
+ for (int i=0; i<n; i++) {
+ honey_lua_type type = va_arg(args, honey_lua_type);
+ char* name = va_arg(args, char*);
+ switch(type) {
+ case HONEY_INTEGER:
+ lua_pushinteger(L, va_arg(args, int));
+ break;
+
+ case HONEY_NUMBER:
+ lua_pushnumber(L, va_arg(args, double));
+ break;
+
+ case HONEY_STRING:
+ lua_pushstring(L, va_arg(args, char*));
+ break;
+
+ case HONEY_FUNCTION:
+ lua_pushcfunction(L, va_arg(args, int (*)(lua_State* L)));
+ break;
+
+ case HONEY_TABLE:
+ build_table_recursively(L, va_arg(args, int), args);
+ break;
+
+ case HONEY_NIL:
+ lua_pushnil(L);
+ break;
+
+ case HONEY_USERDATA:
+ /* cannot push userdata from C, skip */
+ continue;
+
+ case HONEY_LIGHTUSERDATA:
+ lua_pushlightuserdata(L, va_arg(args, void*));
+ break;
+
+ default:
+ // this should never happen
+ break;
+ }
+ lua_setfield(L, -2, name);
}
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+void honey_lua_create_table(lua_State* L,
+ unsigned int n_elements,
+ ...)
+{
+ va_list args;
+ va_start(args, n_elements);
+ build_table_recursively(L, n_elements, args);
+ va_end(args);
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ *
+ * Lua pcall wrapping
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
int honey_lua_traceback(lua_State* L)
{
if (!lua_isstring(L, 1))
@@ -252,58 +377,58 @@ int honey_exit(lua_State* L)
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
- * Lua binding helper functions
+ * Lua binding helper function definitions
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* string must be able to hold at least 16 characters. */
-static void type_to_string(char* string,
- honey_lua_type type)
+static int type_to_string(char* string,
+ honey_lua_type type)
{
switch(type) {
case HONEY_BOOLEAN:
memcpy(string, "boolean", 8);
- break;
+ return 7;
case HONEY_INTEGER:
memcpy(string, "integer", 8);
- break;
+ return 7;
case HONEY_NUMBER:
memcpy(string, "number", 7);
- break;
+ return 6;
case HONEY_STRING:
memcpy(string, "string", 7);
- break;
+ return 6;
case HONEY_FUNCTION:
memcpy(string, "function", 9);
- break;
+ return 8;
case HONEY_TABLE:
memcpy(string, "table", 6);
- break;
+ return 5;
case HONEY_NIL:
memcpy(string, "nil", 4);
- break;
+ return 3;
case HONEY_USERDATA:
memcpy(string, "userdata", 9);
- break;
+ return 8;
case HONEY_LIGHTUSERDATA:
memcpy(string, "light userdata", 16);
- break;
+ return 15;
case HONEY_ANY:
memcpy(string, "any", 4);
- break;
+ return 3;
default:
- break;
+ return 0;
}
}
diff --git a/src/input.c b/src/input.c
index 576adf5..3b0b286 100644
--- a/src/input.c
+++ b/src/input.c
@@ -154,10 +154,10 @@ void honey_setup_input(lua_State* L)
HONEY_INTEGER, "right_alt", HONEY_KEY_RIGHT_ALT,
HONEY_INTEGER, "right_super", HONEY_KEY_RIGHT_SUPER,
HONEY_INTEGER, "menu", HONEY_KEY_MENU,
- HONEY_FUNCTION, "is_down", .function = honey_key_down,
- HONEY_FUNCTION, "bind", .function = honey_key_bind,
- HONEY_FUNCTION, "unbind", .function = honey_key_unbind,
- HONEY_FUNCTION, "unbind_all", .function = honey_key_unbind_all,
+ HONEY_FUNCTION, "is_down", honey_key_down,
+ HONEY_FUNCTION, "bind", honey_key_bind,
+ HONEY_FUNCTION, "unbind", honey_key_unbind,
+ HONEY_FUNCTION, "unbind_all", honey_key_unbind_all,
HONEY_TABLE, "mouse", 4,
diff --git a/src/input.h b/src/input.h
index 7fd3293..5b7f2cc 100644
--- a/src/input.h
+++ b/src/input.h
@@ -6,7 +6,7 @@
* @brief Wrap GLFW input functions for honey.
*/
-#include "../common.h"
+#include "common.h"
#define HONEY_KEY_UNKNOWN 0
#define HONEY_KEY_SPACE 1
@@ -137,7 +137,7 @@
#define HONEY_MOUSE_MODE_NORMAL GLFW_CURSOR_NORMAL
#define HONEY_MOUSE_MODE_HIDDEN GLFW_CURSOR_HIDDEN
-#define HONEY_MOUSE_MODE_DISABLED GLFW_CURSOR_DISABLED
+#define HONEY_MOUSE_MODE_CAPTURED GLFW_CURSOR_DISABLED
unsigned int honey_key_states[HONEY_N_KEYS];
static int honey_key_callbacks[HONEY_N_KEYS];
diff --git a/src/input/input.c b/src/input/input.c
deleted file mode 100644
index a0ccbdc..0000000
--- a/src/input/input.c
+++ /dev/null
@@ -1,1355 +0,0 @@
-#include "input.h"
-
-int honey_mouse_movement_callback_ref = LUA_NOREF;
-int honey_mouse_movement_callback_data_ref = LUA_NOREF;
-
-static void honey_glfw_mouse_movement_callback(honey_window window,
- double x_pos, double y_pos);
-static void honey_glfw_keyboard_callback(honey_window window,
- int key, int scancode,
- int action, int mods);
-
-void honey_setup_keyboard()
-{
- memset(honey_key_states, 0, sizeof(honey_key_states));
- memset(honey_key_callbacks, LUA_NOREF, sizeof(honey_key_callbacks));
- memset(honey_key_callbacks_data, LUA_NOREF, sizeof(honey_key_callbacks_data));
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_setup_input(lua_State* L)
-{
- honey_setup_keyboard();
-
- lua_rawgeti(L, LUA_REGISTRYINDEX, honey_window_info_ref);
- honey_window_information* info = lua_touserdata(L, -1);
- lua_pop(L, 1);
-
- glfwSetKeyCallback(info->window, honey_glfw_keyboard_callback);
- glfwSetCursorPosCallback(info->window, honey_glfw_mouse_movement_callback);
-
- honey_lua_element key_elements[] = {
- { "unknown", HONEY_INTEGER, { HONEY_KEY_UNKNOWN } },
- { "space", HONEY_INTEGER, { HONEY_KEY_SPACE } },
- { "apostrophe", HONEY_INTEGER, { HONEY_KEY_APOSTROPHE } },
- { "comma", HONEY_INTEGER, { HONEY_KEY_COMMA } },
- { "minus", HONEY_INTEGER, { HONEY_KEY_MINUS } },
- { "period", HONEY_INTEGER, { HONEY_KEY_PERIOD } },
- { "slash", HONEY_INTEGER, { HONEY_KEY_SLASH } },
- { "0", HONEY_INTEGER, { HONEY_KEY_0 } },
- { "1", HONEY_INTEGER, { HONEY_KEY_1 } },
- { "2", HONEY_INTEGER, { HONEY_KEY_2 } },
- { "3", HONEY_INTEGER, { HONEY_KEY_3 } },
- { "4", HONEY_INTEGER, { HONEY_KEY_4 } },
- { "5", HONEY_INTEGER, { HONEY_KEY_5 } },
- { "6", HONEY_INTEGER, { HONEY_KEY_6 } },
- { "7", HONEY_INTEGER, { HONEY_KEY_7 } },
- { "8", HONEY_INTEGER, { HONEY_KEY_8 } },
- { "9", HONEY_INTEGER, { HONEY_KEY_9 } },
- { "semicolon", HONEY_INTEGER, { HONEY_KEY_SEMICOLON } },
- { "equal", HONEY_INTEGER, { HONEY_KEY_EQUAL } },
- { "a", HONEY_INTEGER, { HONEY_KEY_A } },
- { "b", HONEY_INTEGER, { HONEY_KEY_B } },
- { "c", HONEY_INTEGER, { HONEY_KEY_C } },
- { "d", HONEY_INTEGER, { HONEY_KEY_D } },
- { "e", HONEY_INTEGER, { HONEY_KEY_E } },
- { "f", HONEY_INTEGER, { HONEY_KEY_F } },
- { "g", HONEY_INTEGER, { HONEY_KEY_G } },
- { "h", HONEY_INTEGER, { HONEY_KEY_H } },
- { "i", HONEY_INTEGER, { HONEY_KEY_I } },
- { "j", HONEY_INTEGER, { HONEY_KEY_J } },
- { "k", HONEY_INTEGER, { HONEY_KEY_K } },
- { "l", HONEY_INTEGER, { HONEY_KEY_L } },
- { "m", HONEY_INTEGER, { HONEY_KEY_M } },
- { "n", HONEY_INTEGER, { HONEY_KEY_N } },
- { "o", HONEY_INTEGER, { HONEY_KEY_O } },
- { "p", HONEY_INTEGER, { HONEY_KEY_P } },
- { "q", HONEY_INTEGER, { HONEY_KEY_Q } },
- { "r", HONEY_INTEGER, { HONEY_KEY_R } },
- { "s", HONEY_INTEGER, { HONEY_KEY_S } },
- { "t", HONEY_INTEGER, { HONEY_KEY_T } },
- { "u", HONEY_INTEGER, { HONEY_KEY_U } },
- { "v", HONEY_INTEGER, { HONEY_KEY_V } },
- { "w", HONEY_INTEGER, { HONEY_KEY_W } },
- { "x", HONEY_INTEGER, { HONEY_KEY_X } },
- { "y", HONEY_INTEGER, { HONEY_KEY_Y } },
- { "z", HONEY_INTEGER, { HONEY_KEY_Z } },
- { "left_bracket", HONEY_INTEGER, { HONEY_KEY_LEFT_BRACKET } },
- { "backslash", HONEY_INTEGER, { HONEY_KEY_BACKSLASH } },
- { "right_bracket", HONEY_INTEGER, { HONEY_KEY_RIGHT_BRACKET } },
- { "grave_accent", HONEY_INTEGER, { HONEY_KEY_GRAVE_ACCENT } },
- { "world_1", HONEY_INTEGER, { HONEY_KEY_WORLD_1 } },
- { "world_2", HONEY_INTEGER, { HONEY_KEY_WORLD_2 } },
- { "escape", HONEY_INTEGER, { HONEY_KEY_ESCAPE } },
- { "enter", HONEY_INTEGER, { HONEY_KEY_ENTER } },
- { "tab", HONEY_INTEGER, { HONEY_KEY_TAB } },
- { "backspace", HONEY_INTEGER, { HONEY_KEY_BACKSPACE } },
- { "insert", HONEY_INTEGER, { HONEY_KEY_INSERT } },
- { "delete", HONEY_INTEGER, { HONEY_KEY_DELETE } },
- { "right", HONEY_INTEGER, { HONEY_KEY_RIGHT } },
- { "left", HONEY_INTEGER, { HONEY_KEY_LEFT } },
- { "down", HONEY_INTEGER, { HONEY_KEY_DOWN } },
- { "up", HONEY_INTEGER, { HONEY_KEY_UP } },
- { "page_up", HONEY_INTEGER, { HONEY_KEY_PAGE_UP } },
- { "page_down", HONEY_INTEGER, { HONEY_KEY_PAGE_DOWN } },
- { "home", HONEY_INTEGER, { HONEY_KEY_HOME } },
- { "end", HONEY_INTEGER, { HONEY_KEY_END } },
- { "caps_lock", HONEY_INTEGER, { HONEY_KEY_CAPS_LOCK } },
- { "scroll_lock", HONEY_INTEGER, { HONEY_KEY_SCROLL_LOCK } },
- { "num_lock", HONEY_INTEGER, { HONEY_KEY_NUM_LOCK } },
- { "print_screen", HONEY_INTEGER, { HONEY_KEY_PRINT_SCREEN } },
- { "pause", HONEY_INTEGER, { HONEY_KEY_PAUSE } },
- { "f1", HONEY_INTEGER, { HONEY_KEY_F1 } },
- { "f2", HONEY_INTEGER, { HONEY_KEY_F2 } },
- { "f3", HONEY_INTEGER, { HONEY_KEY_F3 } },
- { "f4", HONEY_INTEGER, { HONEY_KEY_F4 } },
- { "f5", HONEY_INTEGER, { HONEY_KEY_F5 } },
- { "f6", HONEY_INTEGER, { HONEY_KEY_F6 } },
- { "f7", HONEY_INTEGER, { HONEY_KEY_F7 } },
- { "f8", HONEY_INTEGER, { HONEY_KEY_F8 } },
- { "f9", HONEY_INTEGER, { HONEY_KEY_F9 } },
- { "f10", HONEY_INTEGER, { HONEY_KEY_F10 } },
- { "f11", HONEY_INTEGER, { HONEY_KEY_F11 } },
- { "f12", HONEY_INTEGER, { HONEY_KEY_F12 } },
- { "f13", HONEY_INTEGER, { HONEY_KEY_F13 } },
- { "f14", HONEY_INTEGER, { HONEY_KEY_F14 } },
- { "f15", HONEY_INTEGER, { HONEY_KEY_F15 } },
- { "f16", HONEY_INTEGER, { HONEY_KEY_F16 } },
- { "f17", HONEY_INTEGER, { HONEY_KEY_F17 } },
- { "f18", HONEY_INTEGER, { HONEY_KEY_F18 } },
- { "f19", HONEY_INTEGER, { HONEY_KEY_F19 } },
- { "f20", HONEY_INTEGER, { HONEY_KEY_F20 } },
- { "f21", HONEY_INTEGER, { HONEY_KEY_F21 } },
- { "f22", HONEY_INTEGER, { HONEY_KEY_F22 } },
- { "f23", HONEY_INTEGER, { HONEY_KEY_F23 } },
- { "f24", HONEY_INTEGER, { HONEY_KEY_F24 } },
- { "f25", HONEY_INTEGER, { HONEY_KEY_F25 } },
- { "kp_0", HONEY_INTEGER, { HONEY_KEY_KP_0 } },
- { "kp_1", HONEY_INTEGER, { HONEY_KEY_KP_1 } },
- { "kp_2", HONEY_INTEGER, { HONEY_KEY_KP_2 } },
- { "kp_3", HONEY_INTEGER, { HONEY_KEY_KP_3 } },
- { "kp_4", HONEY_INTEGER, { HONEY_KEY_KP_4 } },
- { "kp_5", HONEY_INTEGER, { HONEY_KEY_KP_5 } },
- { "kp_6", HONEY_INTEGER, { HONEY_KEY_KP_6 } },
- { "kp_7", HONEY_INTEGER, { HONEY_KEY_KP_7 } },
- { "kp_8", HONEY_INTEGER, { HONEY_KEY_KP_8 } },
- { "kp_9", HONEY_INTEGER, { HONEY_KEY_KP_9 } },
- { "kp_decimal", HONEY_INTEGER, { HONEY_KEY_KP_DECIMAL } },
- { "kp_divide", HONEY_INTEGER, { HONEY_KEY_KP_DIVIDE } },
- { "kp_multiply", HONEY_INTEGER, { HONEY_KEY_KP_MULTIPLY } },
- { "kp_subtract", HONEY_INTEGER, { HONEY_KEY_KP_SUBTRACT } },
- { "kp_add", HONEY_INTEGER, { HONEY_KEY_KP_ADD } },
- { "kp_enter", HONEY_INTEGER, { HONEY_KEY_KP_ENTER } },
- { "kp_equal", HONEY_INTEGER, { HONEY_KEY_KP_EQUAL } },
- { "left_shift", HONEY_INTEGER, { HONEY_KEY_LEFT_SHIFT } },
- { "left_control", HONEY_INTEGER, { HONEY_KEY_LEFT_CONTROL } },
- { "left_alt", HONEY_INTEGER, { HONEY_KEY_LEFT_ALT } },
- { "left_super", HONEY_INTEGER, { HONEY_KEY_LEFT_SUPER } },
- { "right_shift", HONEY_INTEGER, { HONEY_KEY_RIGHT_SHIFT } },
- { "right_control", HONEY_INTEGER, { HONEY_KEY_RIGHT_CONTROL } },
- { "right_alt", HONEY_INTEGER, { HONEY_KEY_RIGHT_ALT } },
- { "right_super", HONEY_INTEGER, { HONEY_KEY_RIGHT_SUPER } },
- { "menu", HONEY_INTEGER, { HONEY_KEY_MENU } },
- { "is_down", HONEY_FUNCTION, { .function = honey_key_down } },
- { "bind", HONEY_FUNCTION, { .function = honey_key_bind } },
- { "unbind", HONEY_FUNCTION, { .function = honey_key_unbind } },
- { "unbind_all", HONEY_FUNCTION, { .function = honey_key_unbind_all } },
- };
-
- honey_lua_element mouse_mode_elements[] = {
- { "normal", HONEY_INTEGER, { .integer = HONEY_MOUSE_MODE_NORMAL } },
- { "hidden", HONEY_INTEGER, { .integer = HONEY_MOUSE_MODE_HIDDEN } },
- { "disabled", HONEY_INTEGER, { .integer = HONEY_MOUSE_MODE_DISABLED } },
- };
-
- honey_lua_element mouse_elements[] = {
- { "mode", HONEY_TABLE, { .table = { 3, mouse_mode_elements } } },
- { "set_mode", HONEY_FUNCTION, { .function = honey_mouse_set_mode } },
- { "bind_movement", HONEY_FUNCTION, { .function = honey_mouse_movement_bind } },
- { "unbind_movement", HONEY_FUNCTION, { .function = honey_mouse_movement_unbind } },
- };
-
- honey_lua_element input_elements[] = {
- { "key", HONEY_TABLE, { .table={ HONEY_N_KEYS+4, key_elements } } },
- { "mouse", HONEY_TABLE, { .table={ 4, mouse_elements } } },
- };
-
- honey_lua_create_table(L, input_elements, 2);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-int honey_key_down(lua_State* L)
-{
- if (!lua_isnumber(L, 1))
- return 0;
-
- int key = lua_tointeger(L, 1);
- if (key < 0 || key >= HONEY_N_KEYS)
- lua_pushboolean(L, false);
- else
- lua_pushboolean(L, honey_key_states[key]);
-
- return 1;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-int honey_key_bind(lua_State* L)
-{
- /* lua params: (int) key, (func) callback, (arb) data */
- int n_args = lua_gettop(L);
- if (n_args == 3) {
- if (!honey_lua_validate_types(L, 3, HONEY_INTEGER, HONEY_FUNCTION, HONEY_ANY)) {
- lua_error(L);
- }
- }
- else if (n_args == 2) {
- if (!honey_lua_validate_types(L, 2, HONEY_INTEGER, HONEY_FUNCTION)) {
- lua_error(L);
- }
- }
- else {
- char* error_message;
- honey_format_string(&error_message, "expected 2 or 3 arguments; received %d instead", n_args);
- lua_pushstring(L, error_message);
- free(error_message);
- lua_error(L);
- }
-
- int key = lua_tointeger(L, 1);
- lua_pushvalue(L, 2);
- int callback = luaL_ref(L, LUA_REGISTRYINDEX);
- lua_pushvalue(L, 3);
- int data = luaL_ref(L, LUA_REGISTRYINDEX);
-
- /* avoid potential memory leak */
- lua_pushcfunction(L, honey_key_unbind);
- lua_pushinteger(L, key);
- honey_lua_pcall(L, 1, 0);
-
- if (key >= 0 && key < HONEY_N_KEYS) {
- honey_key_callbacks[key] = callback;
- honey_key_callbacks_data[key] = data;
- }
-
- return 0;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-int honey_key_unbind(lua_State* L)
-{
- /* lua params: (int) key */
- if (!honey_lua_validate_types(L, 1, HONEY_INTEGER))
- lua_error(L);
-
- int key = lua_tointeger(L, 1);
-
- if (key >=0 && key < HONEY_N_KEYS) {
- honey_key_callbacks[key] = LUA_NOREF;
- honey_key_callbacks_data[key] = LUA_NOREF;
- }
- else {
- char* error_message;
- honey_format_string(&error_message, "'%d' is not a valid keycode", key);
- lua_pushstring(L, error_message);
- free(error_message);
- lua_error(L);
- }
- return 0;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-int honey_key_unbind_all(lua_State* L)
-{
- for (int i=0; i<HONEY_N_KEYS; i++) {
- honey_key_callbacks[i] = LUA_NOREF;
- honey_key_callbacks_data[i] = LUA_NOREF;
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-int honey_mouse_set_mode(lua_State* L)
-{
- if (!honey_lua_validate_types(L, 1, HONEY_INTEGER))
- lua_error(L);
-
- int cursor_mode = lua_tointeger(L, 1);
-
- if (honey_window_info_ref == LUA_NOREF ||
- honey_window_info_ref == LUA_REFNIL) {
- lua_pushstring(L, "ERROR: no window set!");
- lua_error(L);
- }
-
- lua_rawgeti(L, LUA_REGISTRYINDEX, honey_window_info_ref);
- honey_window_information* info = lua_touserdata(L, -1);
-
- glfwSetInputMode(info->window, GLFW_CURSOR, cursor_mode);
-
- return 0;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-int honey_mouse_movement_bind(lua_State* L)
-{
- if (!honey_lua_validate_types(L, 2, HONEY_FUNCTION, HONEY_ANY))
- lua_error(L);
-
- honey_mouse_movement_unbind(L); /* avoid memory leaks! */
-
- lua_pushvalue(L, 1);
- honey_mouse_movement_callback_ref = luaL_ref(L, LUA_REGISTRYINDEX);
- lua_pushvalue(L, 2);
- honey_mouse_movement_callback_data_ref = luaL_ref(L, LUA_REGISTRYINDEX);
- return 0;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-int honey_mouse_movement_unbind(lua_State* L)
-{
- int callback = honey_mouse_movement_callback_ref;
- int data = honey_mouse_movement_callback_data_ref;
-
- if (callback != LUA_NOREF || callback != LUA_REFNIL) {
- lua_pushnil(L);
- lua_rawseti(L, LUA_REGISTRYINDEX, callback);
- }
-
- if (data != LUA_NOREF || data != LUA_REFNIL) {
- lua_pushnil(L);
- lua_rawseti(L, LUA_REGISTRYINDEX, data);
- }
-
- honey_mouse_movement_callback_ref = LUA_NOREF;
- honey_mouse_movement_callback_data_ref = LUA_NOREF;
- return 0;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-static void honey_glfw_mouse_movement_callback(honey_window window,
- double x_pos, double y_pos)
-{
- int callback = honey_mouse_movement_callback_ref;
- int data = honey_mouse_movement_callback_data_ref;
- lua_State* L = glfwGetWindowUserPointer(window);
-
- if (callback == LUA_NOREF || callback == LUA_REFNIL)
- return;
-
- lua_rawgeti(L, LUA_REGISTRYINDEX, callback);
- lua_pushnumber(L, x_pos);
- lua_pushnumber(L, y_pos);
-
- if (data == LUA_NOREF || data == LUA_REFNIL)
- lua_pushnil(L);
- else
- lua_rawgeti(L, LUA_REGISTRYINDEX, data);
-
- honey_lua_pcall(L, 3, 0);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-static void execute_lua_key_callback(lua_State* L, int callback, int action, int data)
-{
- if (callback != LUA_NOREF) {
- lua_rawgeti(L, LUA_REGISTRYINDEX, callback);
- lua_pushinteger(L, action);
- if (data != LUA_REFNIL)
- lua_rawgeti(L, LUA_REGISTRYINDEX, data);
- else
- lua_pushnil(L);
- honey_lua_pcall(L, 2, 0);
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-static void honey_glfw_keyboard_callback(honey_window window,
- int key, int scancode,
- int action, int mods)
-{
- int callback, data;
- lua_State* L = glfwGetWindowUserPointer(window);
- switch (key) {
- case GLFW_KEY_UNKNOWN:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_UNKNOWN] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_UNKNOWN] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_UNKNOWN];
- data = honey_key_callbacks_data[HONEY_KEY_UNKNOWN];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_SPACE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_SPACE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_SPACE] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_SPACE];
- data = honey_key_callbacks_data[HONEY_KEY_SPACE];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_APOSTROPHE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_APOSTROPHE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_APOSTROPHE] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_APOSTROPHE];
- data = honey_key_callbacks_data[HONEY_KEY_APOSTROPHE];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_COMMA:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_COMMA] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_COMMA] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_COMMA];
- data = honey_key_callbacks_data[HONEY_KEY_COMMA];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_MINUS:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_MINUS] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_MINUS] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_MINUS];
- data = honey_key_callbacks_data[HONEY_KEY_MINUS];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_PERIOD:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PERIOD] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PERIOD] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_PERIOD];
- data = honey_key_callbacks_data[HONEY_KEY_PERIOD];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_SLASH:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_SLASH] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_SLASH] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_SLASH];
- data = honey_key_callbacks_data[HONEY_KEY_SLASH];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_0:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_0] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_0] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_0];
- data = honey_key_callbacks_data[HONEY_KEY_0];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_1:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_1] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_1] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_1];
- data = honey_key_callbacks_data[HONEY_KEY_1];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_2:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_2] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_2] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_2];
- data = honey_key_callbacks_data[HONEY_KEY_2];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_3:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_3] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_3] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_3];
- data = honey_key_callbacks_data[HONEY_KEY_3];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_4:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_4] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_4] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_4];
- data = honey_key_callbacks_data[HONEY_KEY_4];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_5:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_5] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_5] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_5];
- data = honey_key_callbacks_data[HONEY_KEY_5];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_6:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_6] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_6] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_6];
- data = honey_key_callbacks_data[HONEY_KEY_6];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_7:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_7] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_7] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_7];
- data = honey_key_callbacks_data[HONEY_KEY_7];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_8:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_8] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_8] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_8];
- data = honey_key_callbacks_data[HONEY_KEY_8];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_9:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_9] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_9] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_9];
- data = honey_key_callbacks_data[HONEY_KEY_9];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_SEMICOLON:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_SEMICOLON] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_SEMICOLON] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_SEMICOLON];
- data = honey_key_callbacks_data[HONEY_KEY_SEMICOLON];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_EQUAL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_EQUAL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_EQUAL] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_EQUAL];
- data = honey_key_callbacks_data[HONEY_KEY_EQUAL];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_A:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_A] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_A] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_A];
- data = honey_key_callbacks_data[HONEY_KEY_A];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_B:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_B] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_B] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_B];
- data = honey_key_callbacks_data[HONEY_KEY_B];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_C:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_C] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_C] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_C];
- data = honey_key_callbacks_data[HONEY_KEY_C];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_D:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_D] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_D] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_D];
- data = honey_key_callbacks_data[HONEY_KEY_D];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_E:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_E] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_E] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_E];
- data = honey_key_callbacks_data[HONEY_KEY_E];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F];
- data = honey_key_callbacks_data[HONEY_KEY_F];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_G:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_G] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_G] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_G];
- data = honey_key_callbacks_data[HONEY_KEY_G];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_H:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_H] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_H] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_H];
- data = honey_key_callbacks_data[HONEY_KEY_H];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_I:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_I] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_I] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_I];
- data = honey_key_callbacks_data[HONEY_KEY_I];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_J:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_J] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_J] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_J];
- data = honey_key_callbacks_data[HONEY_KEY_J];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_K:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_K] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_K] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_K];
- data = honey_key_callbacks_data[HONEY_KEY_K];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_L:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_L] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_L] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_L];
- data = honey_key_callbacks_data[HONEY_KEY_L];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_M:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_M] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_M] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_M];
- data = honey_key_callbacks_data[HONEY_KEY_M];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_N:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_N] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_N] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_N];
- data = honey_key_callbacks_data[HONEY_KEY_N];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_O:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_O] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_O] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_O];
- data = honey_key_callbacks_data[HONEY_KEY_O];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_P:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_P] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_P] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_P];
- data = honey_key_callbacks_data[HONEY_KEY_P];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_Q:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_Q] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_Q] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_Q];
- data = honey_key_callbacks_data[HONEY_KEY_Q];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_R:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_R] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_R] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_R];
- data = honey_key_callbacks_data[HONEY_KEY_R];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_S:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_S] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_S] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_S];
- data = honey_key_callbacks_data[HONEY_KEY_S];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_T:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_T] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_T] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_T];
- data = honey_key_callbacks_data[HONEY_KEY_T];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_U:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_U] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_U] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_U];
- data = honey_key_callbacks_data[HONEY_KEY_U];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_V:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_V] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_V] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_V];
- data = honey_key_callbacks_data[HONEY_KEY_V];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_W:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_W] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_W] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_W];
- data = honey_key_callbacks_data[HONEY_KEY_W];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_X:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_X] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_X] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_X];
- data = honey_key_callbacks_data[HONEY_KEY_X];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_Y:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_Y] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_Y] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_Y];
- data = honey_key_callbacks_data[HONEY_KEY_Y];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_Z:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_Z] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_Z] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_Z];
- data = honey_key_callbacks_data[HONEY_KEY_Z];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_LEFT_BRACKET:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_BRACKET] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_BRACKET] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_LEFT_BRACKET];
- data = honey_key_callbacks_data[HONEY_KEY_LEFT_BRACKET];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_BACKSLASH:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_BACKSLASH] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_BACKSLASH] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_BACKSLASH];
- data = honey_key_callbacks_data[HONEY_KEY_BACKSLASH];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_RIGHT_BRACKET:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_BRACKET] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_BRACKET] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_RIGHT_BRACKET];
- data = honey_key_callbacks_data[HONEY_KEY_RIGHT_BRACKET];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_GRAVE_ACCENT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_GRAVE_ACCENT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_GRAVE_ACCENT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_GRAVE_ACCENT];
- data = honey_key_callbacks_data[HONEY_KEY_GRAVE_ACCENT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_WORLD_1:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_WORLD_1] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_WORLD_1] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_WORLD_1];
- data = honey_key_callbacks_data[HONEY_KEY_WORLD_1];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_WORLD_2:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_WORLD_2] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_WORLD_2] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_WORLD_2];
- data = honey_key_callbacks_data[HONEY_KEY_WORLD_2];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_ESCAPE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_ESCAPE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_ESCAPE] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_ESCAPE];
- data = honey_key_callbacks_data[HONEY_KEY_ESCAPE];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_ENTER:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_ENTER] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_ENTER] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_ENTER];
- data = honey_key_callbacks_data[HONEY_KEY_ENTER];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_TAB:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_TAB] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_TAB] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_TAB];
- data = honey_key_callbacks_data[HONEY_KEY_TAB];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_BACKSPACE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_BACKSPACE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_BACKSPACE] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_BACKSPACE];
- data = honey_key_callbacks_data[HONEY_KEY_BACKSPACE];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_INSERT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_INSERT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_INSERT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_INSERT];
- data = honey_key_callbacks_data[HONEY_KEY_INSERT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_DELETE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_DELETE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_DELETE] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_DELETE];
- data = honey_key_callbacks_data[HONEY_KEY_DELETE];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_RIGHT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_RIGHT];
- data = honey_key_callbacks_data[HONEY_KEY_RIGHT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_LEFT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_LEFT];
- data = honey_key_callbacks_data[HONEY_KEY_LEFT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_DOWN:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_DOWN] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_DOWN] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_DOWN];
- data = honey_key_callbacks_data[HONEY_KEY_DOWN];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_UP:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_UP] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_UP] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_UP];
- data = honey_key_callbacks_data[HONEY_KEY_UP];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_PAGE_UP:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PAGE_UP] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PAGE_UP] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_PAGE_UP];
- data = honey_key_callbacks_data[HONEY_KEY_PAGE_UP];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_PAGE_DOWN:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PAGE_DOWN] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PAGE_DOWN] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_PAGE_DOWN];
- data = honey_key_callbacks_data[HONEY_KEY_PAGE_DOWN];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_HOME:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_HOME] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_HOME] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_HOME];
- data = honey_key_callbacks_data[HONEY_KEY_HOME];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_END:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_END] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_END] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_END];
- data = honey_key_callbacks_data[HONEY_KEY_END];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_CAPS_LOCK:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_CAPS_LOCK] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_CAPS_LOCK] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_CAPS_LOCK];
- data = honey_key_callbacks_data[HONEY_KEY_CAPS_LOCK];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_SCROLL_LOCK:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_SCROLL_LOCK] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_SCROLL_LOCK] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_SCROLL_LOCK];
- data = honey_key_callbacks_data[HONEY_KEY_SCROLL_LOCK];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_NUM_LOCK:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_NUM_LOCK] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_NUM_LOCK] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_NUM_LOCK];
- data = honey_key_callbacks_data[HONEY_KEY_NUM_LOCK];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_PRINT_SCREEN:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PRINT_SCREEN] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PRINT_SCREEN] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_PRINT_SCREEN];
- data = honey_key_callbacks_data[HONEY_KEY_PRINT_SCREEN];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_PAUSE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PAUSE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PAUSE] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_PAUSE];
- data = honey_key_callbacks_data[HONEY_KEY_PAUSE];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F1:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F1] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F1] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F1];
- data = honey_key_callbacks_data[HONEY_KEY_F1];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F2:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F2] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F2] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F2];
- data = honey_key_callbacks_data[HONEY_KEY_F2];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F3:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F3] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F3] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F3];
- data = honey_key_callbacks_data[HONEY_KEY_F3];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F4:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F4] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F4] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F4];
- data = honey_key_callbacks_data[HONEY_KEY_F4];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F5:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F5] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F5] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F5];
- data = honey_key_callbacks_data[HONEY_KEY_F5];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F6:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F6] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F6] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F6];
- data = honey_key_callbacks_data[HONEY_KEY_F6];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F7:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F7] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F7] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F7];
- data = honey_key_callbacks_data[HONEY_KEY_F7];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F8:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F8] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F8] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F8];
- data = honey_key_callbacks_data[HONEY_KEY_F8];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F9:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F9] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F9] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F9];
- data = honey_key_callbacks_data[HONEY_KEY_F9];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F10:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F10] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F10] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F10];
- data = honey_key_callbacks_data[HONEY_KEY_F10];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F11:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F11] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F11] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F11];
- data = honey_key_callbacks_data[HONEY_KEY_F11];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F12:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F12] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F12] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F12];
- data = honey_key_callbacks_data[HONEY_KEY_F12];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F13:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F13] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F13] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F13];
- data = honey_key_callbacks_data[HONEY_KEY_F13];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F14:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F14] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F14] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F14];
- data = honey_key_callbacks_data[HONEY_KEY_F14];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F15:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F15] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F15] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F15];
- data = honey_key_callbacks_data[HONEY_KEY_F15];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F16:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F16] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F16] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F16];
- data = honey_key_callbacks_data[HONEY_KEY_F16];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F17:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F17] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F17] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F17];
- data = honey_key_callbacks_data[HONEY_KEY_F17];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F18:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F18] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F18] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F18];
- data = honey_key_callbacks_data[HONEY_KEY_F18];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F19:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F19] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F19] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F19];
- data = honey_key_callbacks_data[HONEY_KEY_F19];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F20:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F20] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F20] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F20];
- data = honey_key_callbacks_data[HONEY_KEY_F20];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F21:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F21] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F21] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F21];
- data = honey_key_callbacks_data[HONEY_KEY_F21];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F22:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F22] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F22] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F22];
- data = honey_key_callbacks_data[HONEY_KEY_F22];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F23:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F23] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F23] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F23];
- data = honey_key_callbacks_data[HONEY_KEY_F23];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F24:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F24] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F24] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F24];
- data = honey_key_callbacks_data[HONEY_KEY_F24];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_F25:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F25] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F25] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_F25];
- data = honey_key_callbacks_data[HONEY_KEY_F25];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_0:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_0] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_0] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_0];
- data = honey_key_callbacks_data[HONEY_KEY_KP_0];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_1:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_1] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_1] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_1];
- data = honey_key_callbacks_data[HONEY_KEY_KP_1];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_2:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_2] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_2] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_2];
- data = honey_key_callbacks_data[HONEY_KEY_KP_2];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_3:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_3] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_3] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_3];
- data = honey_key_callbacks_data[HONEY_KEY_KP_3];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_4:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_4] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_4] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_4];
- data = honey_key_callbacks_data[HONEY_KEY_KP_4];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_5:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_5] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_5] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_5];
- data = honey_key_callbacks_data[HONEY_KEY_KP_5];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_6:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_6] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_6] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_6];
- data = honey_key_callbacks_data[HONEY_KEY_KP_6];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_7:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_7] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_7] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_7];
- data = honey_key_callbacks_data[HONEY_KEY_KP_7];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_8:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_8] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_8] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_8];
- data = honey_key_callbacks_data[HONEY_KEY_KP_8];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_9:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_9] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_9] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_9];
- data = honey_key_callbacks_data[HONEY_KEY_KP_9];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_DECIMAL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_DECIMAL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_DECIMAL] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_DECIMAL];
- data = honey_key_callbacks_data[HONEY_KEY_KP_DECIMAL];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_DIVIDE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_DIVIDE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_DIVIDE] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_DIVIDE];
- data = honey_key_callbacks_data[HONEY_KEY_KP_DIVIDE];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_MULTIPLY:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_MULTIPLY] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_MULTIPLY] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_MULTIPLY];
- data = honey_key_callbacks_data[HONEY_KEY_KP_MULTIPLY];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_SUBTRACT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_SUBTRACT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_SUBTRACT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_SUBTRACT];
- data = honey_key_callbacks_data[HONEY_KEY_KP_SUBTRACT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_ADD:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_ADD] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_ADD] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_ADD];
- data = honey_key_callbacks_data[HONEY_KEY_KP_ADD];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_ENTER:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_ENTER] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_ENTER] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_ENTER];
- data = honey_key_callbacks_data[HONEY_KEY_KP_ENTER];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_KP_EQUAL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_EQUAL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_EQUAL] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_KP_EQUAL];
- data = honey_key_callbacks_data[HONEY_KEY_KP_EQUAL];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_LEFT_SHIFT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_SHIFT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_SHIFT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_LEFT_SHIFT];
- data = honey_key_callbacks_data[HONEY_KEY_LEFT_SHIFT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_LEFT_CONTROL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_CONTROL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_CONTROL] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_LEFT_CONTROL];
- data = honey_key_callbacks_data[HONEY_KEY_LEFT_CONTROL];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_LEFT_ALT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_ALT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_ALT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_LEFT_ALT];
- data = honey_key_callbacks_data[HONEY_KEY_LEFT_ALT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_LEFT_SUPER:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_SUPER] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_SUPER] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_LEFT_SUPER];
- data = honey_key_callbacks_data[HONEY_KEY_LEFT_SUPER];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_RIGHT_SHIFT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_SHIFT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_SHIFT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_RIGHT_SHIFT];
- data = honey_key_callbacks_data[HONEY_KEY_RIGHT_SHIFT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_RIGHT_CONTROL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_CONTROL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_CONTROL] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_RIGHT_CONTROL];
- data = honey_key_callbacks_data[HONEY_KEY_RIGHT_CONTROL];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_RIGHT_ALT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_ALT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_ALT] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_RIGHT_ALT];
- data = honey_key_callbacks_data[HONEY_KEY_RIGHT_ALT];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_RIGHT_SUPER:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_SUPER] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_SUPER] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_RIGHT_SUPER];
- data = honey_key_callbacks_data[HONEY_KEY_RIGHT_SUPER];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- case GLFW_KEY_MENU:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_MENU] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_MENU] = 0; }
- callback = honey_key_callbacks[HONEY_KEY_MENU];
- data = honey_key_callbacks_data[HONEY_KEY_MENU];
- execute_lua_key_callback(L, callback, action, data);
- break;
-
- default:
- /* do nothing */
- break;
- }
-}
diff --git a/src/input/input.h b/src/input/input.h
deleted file mode 100644
index 7fd3293..0000000
--- a/src/input/input.h
+++ /dev/null
@@ -1,229 +0,0 @@
-#ifndef HONEY_INPUT_H
-#define HONEY_INPUT_H
-
-/** @file input.h
- *
- * @brief Wrap GLFW input functions for honey.
- */
-
-#include "../common.h"
-
-#define HONEY_KEY_UNKNOWN 0
-#define HONEY_KEY_SPACE 1
-#define HONEY_KEY_APOSTROPHE 2
-#define HONEY_KEY_COMMA 3
-#define HONEY_KEY_MINUS 4
-#define HONEY_KEY_PERIOD 5
-#define HONEY_KEY_SLASH 6
-#define HONEY_KEY_0 7
-#define HONEY_KEY_1 8
-#define HONEY_KEY_2 9
-#define HONEY_KEY_3 10
-#define HONEY_KEY_4 11
-#define HONEY_KEY_5 12
-#define HONEY_KEY_6 13
-#define HONEY_KEY_7 14
-#define HONEY_KEY_8 15
-#define HONEY_KEY_9 16
-#define HONEY_KEY_SEMICOLON 17
-#define HONEY_KEY_EQUAL 18
-#define HONEY_KEY_A 19
-#define HONEY_KEY_B 20
-#define HONEY_KEY_C 21
-#define HONEY_KEY_D 22
-#define HONEY_KEY_E 23
-#define HONEY_KEY_F 24
-#define HONEY_KEY_G 25
-#define HONEY_KEY_H 26
-#define HONEY_KEY_I 27
-#define HONEY_KEY_J 28
-#define HONEY_KEY_K 29
-#define HONEY_KEY_L 30
-#define HONEY_KEY_M 31
-#define HONEY_KEY_N 32
-#define HONEY_KEY_O 33
-#define HONEY_KEY_P 34
-#define HONEY_KEY_Q 35
-#define HONEY_KEY_R 36
-#define HONEY_KEY_S 37
-#define HONEY_KEY_T 38
-#define HONEY_KEY_U 39
-#define HONEY_KEY_V 40
-#define HONEY_KEY_W 41
-#define HONEY_KEY_X 42
-#define HONEY_KEY_Y 43
-#define HONEY_KEY_Z 44
-#define HONEY_KEY_LEFT_BRACKET 45
-#define HONEY_KEY_BACKSLASH 46
-#define HONEY_KEY_RIGHT_BRACKET 47
-#define HONEY_KEY_GRAVE_ACCENT 48
-#define HONEY_KEY_WORLD_1 49
-#define HONEY_KEY_WORLD_2 50
-#define HONEY_KEY_ESCAPE 51
-#define HONEY_KEY_ENTER 52
-#define HONEY_KEY_TAB 53
-#define HONEY_KEY_BACKSPACE 54
-#define HONEY_KEY_INSERT 55
-#define HONEY_KEY_DELETE 56
-#define HONEY_KEY_RIGHT 57
-#define HONEY_KEY_LEFT 58
-#define HONEY_KEY_DOWN 59
-#define HONEY_KEY_UP 60
-#define HONEY_KEY_PAGE_UP 61
-#define HONEY_KEY_PAGE_DOWN 62
-#define HONEY_KEY_HOME 63
-#define HONEY_KEY_END 64
-#define HONEY_KEY_CAPS_LOCK 65
-#define HONEY_KEY_SCROLL_LOCK 66
-#define HONEY_KEY_NUM_LOCK 67
-#define HONEY_KEY_PRINT_SCREEN 68
-#define HONEY_KEY_PAUSE 69
-#define HONEY_KEY_F1 70
-#define HONEY_KEY_F2 71
-#define HONEY_KEY_F3 72
-#define HONEY_KEY_F4 73
-#define HONEY_KEY_F5 74
-#define HONEY_KEY_F6 75
-#define HONEY_KEY_F7 76
-#define HONEY_KEY_F8 77
-#define HONEY_KEY_F9 78
-#define HONEY_KEY_F10 79
-#define HONEY_KEY_F11 80
-#define HONEY_KEY_F12 81
-#define HONEY_KEY_F13 82
-#define HONEY_KEY_F14 83
-#define HONEY_KEY_F15 84
-#define HONEY_KEY_F16 85
-#define HONEY_KEY_F17 86
-#define HONEY_KEY_F18 87
-#define HONEY_KEY_F19 88
-#define HONEY_KEY_F20 89
-#define HONEY_KEY_F21 90
-#define HONEY_KEY_F22 91
-#define HONEY_KEY_F23 92
-#define HONEY_KEY_F24 93
-#define HONEY_KEY_F25 94
-#define HONEY_KEY_KP_0 95
-#define HONEY_KEY_KP_1 96
-#define HONEY_KEY_KP_2 97
-#define HONEY_KEY_KP_3 98
-#define HONEY_KEY_KP_4 99
-#define HONEY_KEY_KP_5 100
-#define HONEY_KEY_KP_6 101
-#define HONEY_KEY_KP_7 102
-#define HONEY_KEY_KP_8 103
-#define HONEY_KEY_KP_9 104
-#define HONEY_KEY_KP_DECIMAL 105
-#define HONEY_KEY_KP_DIVIDE 106
-#define HONEY_KEY_KP_MULTIPLY 107
-#define HONEY_KEY_KP_SUBTRACT 108
-#define HONEY_KEY_KP_ADD 109
-#define HONEY_KEY_KP_ENTER 110
-#define HONEY_KEY_KP_EQUAL 111
-#define HONEY_KEY_LEFT_SHIFT 112
-#define HONEY_KEY_LEFT_CONTROL 113
-#define HONEY_KEY_LEFT_ALT 114
-#define HONEY_KEY_LEFT_SUPER 115
-#define HONEY_KEY_RIGHT_SHIFT 116
-#define HONEY_KEY_RIGHT_CONTROL 117
-#define HONEY_KEY_RIGHT_ALT 118
-#define HONEY_KEY_RIGHT_SUPER 119
-#define HONEY_KEY_MENU 120
-
-#define HONEY_N_KEYS 121
-
-#define HONEY_KEY_PRESS GLFW_PRESS
-#define HONEY_KEY_RELEASE GLFW_RELEASE
-
-#define HONEY_MOUSE_MODE_NORMAL GLFW_CURSOR_NORMAL
-#define HONEY_MOUSE_MODE_HIDDEN GLFW_CURSOR_HIDDEN
-#define HONEY_MOUSE_MODE_DISABLED GLFW_CURSOR_DISABLED
-
-unsigned int honey_key_states[HONEY_N_KEYS];
-static int honey_key_callbacks[HONEY_N_KEYS];
-static int honey_key_callbacks_data[HONEY_N_KEYS];
-
-extern int honey_mouse_movement_callback_ref;
-extern int honey_mouse_movement_callback_data_ref;
-
-/** @brief Initializes Honey's internal keyboard states.
- *
- * This function is called by honey_setup, so you shouldn't need
- * to manually call it in most cases.
- */
-void honey_setup_keyboard();
-
-/* @brief Place a lua table containing the enum values for GLFW keys on the stack.
- *
- * @param L The lua state to place the table on the top of the stack.
- *
- * @returns Nothing.
- */
-void honey_setup_input(lua_State* L);
-
-/** @brief Check if a key is down.
- *
- * This function accepts a single integer as input and returns TRUE if the integer
- * refers to a valid key and is pressed down, and false otherwise.
- *
- * @param[in] L The lua state.
- *
- * @return 1 on success and 0 on failure.
- */
-int honey_key_down(lua_State* L);
-
-/** @brief Bind a callback to a key.
- *
- * The callback must have signature (void*, int), where the first argument is supplied by the
- * void* supplied with this function, and the int is one of HONEY_KEY_PRESS or HONEY_KEY_RELEASE,
- * depending on the action that triggered the callback.
- *
- * @param[in] key The key to bind the callback to.
- * @param[in] callback The callback function to bind.
- * @param[in] data Data to pass to the callback function upon triggering.
- */
-int honey_key_bind(lua_State* L);
-
-/** @brief Unbind a key callback.
- *
- * THIS FUNCTION DOES NOT FREE MEMORY! If you allocated any, be sure to free it yourself!
- *
- * @param[in] key The key to unbind a callback from.
- */
-int honey_key_unbind(lua_State* L);
-
-/** @brief Unbind all key callbacks.
- *
- * THIS FUNCTION DOES NOT FREE MEMORY! If you allocated any, be sure to free it yourself!
- */
-int honey_key_unbind_all(lua_State* L);
-
-/** @brief Set the cursor mode.
- *
- * @param[in] mode The mouse mode (from honey.input.mouse.mode) to use.
- *
- * @returns Nothing.
- */
-int honey_mouse_set_mode(lua_State* L);
-
-/** Bind a callback to mouse movement.
- *
- * The callback should be of the form cb(xpos, ypos, data),
- * where xpos and ypos are the coordinates of the mouse relative to the
- * upper left corner of the window, and data is the data parameter passed
- * to this function.
- *
- * @param[in] callback A callback as described above.
- * @param[in] data Auxilliary data to pass to the callback.
- *
- * @returns Nothing.
- */
-int honey_mouse_movement_bind(lua_State* L);
-
-/** Unbind any callback that may be attached to mouse movement.
- *
- * @returns Nothing.
- */
-int honey_mouse_movement_unbind(lua_State* L);
-
-#endif
diff --git a/src/light/light.c b/src/light.c
index 839d747..839d747 100644
--- a/src/light/light.c
+++ b/src/light.c
diff --git a/src/light/light.h b/src/light.h
index dfb6979..93fcfd1 100644
--- a/src/light/light.h
+++ b/src/light.h
@@ -1,7 +1,7 @@
#ifndef HONEY_LIGHT_H
#define HONEY_LIGHT_H
-#include "../common.h"
+#include "common.h"
#define HONEY_MAX_LIGHT_NAME_LENGTH 64
diff --git a/src/lua/honey_lua.h b/src/lua/honey_lua.h
deleted file mode 100644
index 90fc2c7..0000000
--- a/src/lua/honey_lua.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef HONEY_LUA_H
-#define HONEY_LUA_H
-
-#include "../common.h"
-
-typedef enum {
- HONEY_INT,
- HONEY_NUM,
- HONEY_STRING,
- HONEY_FUNC
-} honey_lua_type;
-
-typedef struct {
- char* name;
- honey_lua_type type;
- union {
- int integer;
- double number;
- char* string;
- int (*function)(lua_State*);
- } data;
-} honey_lua_element;
-
-/** @brief Push an element to the lua stack.
- *
- * @param[in] L The lua state to push the element to.
- * @param[in] element The honey_lua_element to push to the stack.
- *
- * @returns Nothing.
- */
-void honey_lua_push_element(lua_State* L,
- honey_lua_element element);
-
-/** @brief Create a lua table populated with various elements.
- *
- * @param[in] L The lua state to push the table to.
- * @param[in] elements Array of elements to populate the table.
- * @param[in] n_elements The number of elements in the array.
- *
- * @returns Nothing.
- */
-void honey_lua_create_table(lua_State* L,
- honey_lua_element* elements,
- unsigned int n_elements);
-
-#endif
diff --git a/src/mesh/mesh.c b/src/mesh.c
index 68e39d7..68e39d7 100644
--- a/src/mesh/mesh.c
+++ b/src/mesh.c
diff --git a/src/mesh/mesh.h b/src/mesh.h
index 0f9c1a3..70b7f4d 100644
--- a/src/mesh/mesh.h
+++ b/src/mesh.h
@@ -6,7 +6,7 @@
* @brief Defines the honey_mesh struct and related basic mesh functions.
*/
-#include "../common.h"
+#include "common.h"
typedef struct {
unsigned int n_vertices, n_indices;
diff --git a/src/primitives/primitives.c b/src/primitives.c
index d499248..d499248 100644
--- a/src/primitives/primitives.c
+++ b/src/primitives.c
diff --git a/src/primitives/primitives.h b/src/primitives.h
index ff4b01b..923a0e3 100644
--- a/src/primitives/primitives.h
+++ b/src/primitives.h
@@ -6,8 +6,8 @@
* @brief Define various common primitive objects.
*/
-#include "../common.h"
-#include "../mesh/mesh.h"
+#include "common.h"
+#include "mesh.h"
/** @brief Push table of lua bindings for creating primitives to the stack. */
void honey_setup_primitives(lua_State* L);
diff --git a/src/shader/shader.c b/src/shader.c
index 122d59e..6ced034 100644
--- a/src/shader/shader.c
+++ b/src/shader.c
@@ -1,5 +1,7 @@
#include "shader.h"
+int honey_shader_mt_ref = LUA_NOREF;
+
void honey_setup_shader(lua_State* L)
{
honey_lua_element shader_elements[] = {
@@ -21,11 +23,10 @@ void honey_setup_shader(lua_State* L)
int honey_shader_new(lua_State* L)
{
- if (!honey_lua_validate_types(L, 2, HONEY_STRING, HONEY_STRING))
- lua_error(L);
-
- const char* vertex_shader_source = lua_tostring(L, 1);
- const char* fragment_shader_source = lua_tostring(L, 2);
+ char* vertex_shader_source, *fragment_shader_source;
+ honey_lua_parse_arguments
+ (L, 1,
+ 2, HONEY_STRING, &vertex_shader_source, HONEY_STRING, &fragment_shader_source);
int success;
char error[1024];
@@ -37,8 +38,8 @@ int honey_shader_new(lua_State* L)
glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &success);
if (!success) {
glGetShaderInfoLog(vertex_shader, 1024, NULL, error);
- lua_pushstring(L, error);
- lua_error(L);
+ honey_lua_throw_error(L, "error compiling vertex shader: %s",
+ error);
}
int fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
@@ -48,8 +49,8 @@ int honey_shader_new(lua_State* L)
glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &success);
if (!success) {
glGetShaderInfoLog(fragment_shader, 1024, NULL, error);
- lua_pushstring(L, error);
- lua_error(L);
+ honey_lua_throw_error(L, "error compiling fragment shader: %s",
+ error);
}
int shader = glCreateProgram();
@@ -60,8 +61,8 @@ int honey_shader_new(lua_State* L)
glGetShaderiv(shader, GL_LINK_STATUS, &success);
if (!success) {
glGetShaderInfoLog(shader, 1024, NULL, error);
- lua_pushstring(L, error);
- lua_error(L);
+ honey_lua_throw_error(L, "error linking shader program: %s",
+ error);
}
glDeleteShader(vertex_shader);
@@ -75,10 +76,11 @@ int honey_shader_new(lua_State* L)
int honey_shader_use(lua_State* L)
{
- if (!honey_lua_validate_types(L, 1, HONEY_INTEGER))
- lua_error(L);
-
- int shader = lua_tointeger(L, 1);
+ int shader;
+ honey_lua_parse_arguments
+ (L, 1,
+ 1, HONEY_INTEGER, &shader);
+
glUseProgram(shader);
return 0;
}
@@ -87,12 +89,15 @@ int honey_shader_use(lua_State* L)
int honey_shader_set_int(lua_State* L)
{
- if (!honey_lua_validate_types(L, 2, HONEY_INTEGER, HONEY_STRING, HONEY_INTEGER))
- lua_error(L);
-
- int shader = lua_tointeger(L, 1);
- const char* name = lua_tostring(L, 2);
- int value = lua_tointeger(L, 3);
+ int shader, value;
+ char* name;
+
+ honey_lua_parse_arguments
+ (L, 1,
+ 3,
+ HONEY_INTEGER, &shader,
+ HONEY_STRING, &name,
+ HONEY_INTEGER, &value);
glUseProgram(shader);
unsigned int location = glGetUniformLocation(shader, name);
@@ -105,13 +110,13 @@ int honey_shader_set_int(lua_State* L)
int honey_shader_set_float(lua_State* L)
{
- if (!honey_lua_validate_types(L, 2, HONEY_INTEGER, HONEY_STRING, HONEY_NUMBER))
- lua_error(L);
-
- int shader = lua_tointeger(L, 1);
- const char* name = lua_tostring(L, 2);
- float value = lua_tonumber(L, 3);
-
+ int shader; char* name; float value;
+ honey_lua_parse_arguments
+ (L, 1, 3,
+ HONEY_INTEGER, &shader,
+ HONEY_STRING, &name,
+ HONEY_NUMBER, &value);
+
glUseProgram(shader);
unsigned int location = glGetUniformLocation(shader, name);
glUniform1f(location, value);
@@ -121,25 +126,16 @@ int honey_shader_set_float(lua_State* L)
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-static void get_array(lua_State* L,
- unsigned int* location,
- float** value)
-{
- if (!honey_lua_validate_types(L, 2, HONEY_INTEGER, HONEY_STRING, HONEY_USERDATA))
- lua_error(L);
-
- int shader = lua_tointeger(L, 1);
- const char* name = lua_tostring(L, 2);
- *value = lua_touserdata(L, 3);
-
- glUseProgram(shader);
- *location = glGetUniformLocation(shader, name);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
int honey_shader_set_vec3(lua_State* L)
{
+ int shader; char* name; float* array;
+ honey_lua_parse_arguments
+ (L, 1, 3,
+ HONEY_INTEGER, &shader,
+ HONEY_STRING, &name,
+ HONEY_USERDATA, &array);
+
+
unsigned int location;
float* array;
get_array(L, &location, &array);
diff --git a/src/shader/shader.h b/src/shader.h
index 95956ea..e1c97b7 100644
--- a/src/shader/shader.h
+++ b/src/shader.h
@@ -6,7 +6,9 @@
#ifndef HONEY_SHADER_H
#define HONEY_SHADER_H
-#include "../common.h"
+#include "common.h"
+
+extern int honey_shader_mt_ref;
/** @brief Push the shader table to the lua stack.
*/
diff --git a/src/texture/texture.c b/src/texture.c
index 37e38e9..37e38e9 100644
--- a/src/texture/texture.c
+++ b/src/texture.c
diff --git a/src/texture/texture.h b/src/texture.h
index 9dc0308..aed6057 100644
--- a/src/texture/texture.h
+++ b/src/texture.h
@@ -6,7 +6,7 @@
*@brief Defines the honey_texture struct and associated functions.
*/
-#include "../common.h"
+#include "common.h"
enum honey_texture_result {
TEXTURE_OK,
diff --git a/src/window/window.c b/src/window.c
index 6a1fe6f..6a1fe6f 100644
--- a/src/window/window.c
+++ b/src/window.c
diff --git a/src/window/window.h b/src/window.h
index 3ac982a..fb5c036 100644
--- a/src/window/window.h
+++ b/src/window.h
@@ -3,7 +3,7 @@
#ifndef HONEY_WINDOW_H
#define HONEY_WINDOW_H
-#include "../common.h"
+#include "common.h"
#define HONEY_WINDOW_DEFAULT_WIDTH 640
#define HONEY_WINDOW_DEFAULT_HEIGHT 480