#include "main.h" #include "state.h" #include "lua_core.h" #include "core.h" #include "shapes.h" #include "textures.h" #include "models.h" #include "text.h" #include "audio.h" #include "rmath.h" #include "rgui.h" #include "lights.h" #include "lrlgl.h" #include "reasings.h" static void assignGlobalInt( int value, const char *name ) { lua_State *L = state->luaState; lua_pushinteger( L, value ); lua_setglobal( L, name ); } static void assignGlobalFloat( float value, const char *name ) { lua_State *L = state->luaState; lua_pushnumber( L, value ); lua_setglobal( L, name ); } static void assignGlobalColor( Color color, const char *name ) { lua_State *L = state->luaState; uluaPushColor( L, color ); lua_setglobal( L, name ); } void defineGlobals() { /*DOC_START*/ /* ConfigFlags */ assignGlobalInt( FLAG_VSYNC_HINT, "FLAG_VSYNC_HINT" ); assignGlobalInt( FLAG_FULLSCREEN_MODE, "FLAG_FULLSCREEN_MODE" ); assignGlobalInt( FLAG_WINDOW_RESIZABLE, "FLAG_WINDOW_RESIZABLE" ); assignGlobalInt( FLAG_WINDOW_UNDECORATED, "FLAG_WINDOW_UNDECORATED" ); assignGlobalInt( FLAG_WINDOW_HIDDEN, "FLAG_WINDOW_HIDDEN" ); assignGlobalInt( FLAG_WINDOW_MINIMIZED, "FLAG_WINDOW_MINIMIZED" ); assignGlobalInt( FLAG_WINDOW_MAXIMIZED, "FLAG_WINDOW_MAXIMIZED" ); assignGlobalInt( FLAG_WINDOW_UNFOCUSED, "FLAG_WINDOW_UNFOCUSED" ); assignGlobalInt( FLAG_WINDOW_TOPMOST, "FLAG_WINDOW_TOPMOST" ); assignGlobalInt( FLAG_WINDOW_ALWAYS_RUN, "FLAG_WINDOW_ALWAYS_RUN" ); assignGlobalInt( FLAG_WINDOW_TRANSPARENT, "FLAG_WINDOW_TRANSPARENT" ); assignGlobalInt( FLAG_WINDOW_HIGHDPI, "FLAG_WINDOW_HIGHDPI" ); assignGlobalInt( FLAG_MSAA_4X_HINT, "FLAG_MSAA_4X_HINT" ); assignGlobalInt( FLAG_INTERLACED_HINT, "FLAG_INTERLACED_HINT" ); /* TraceLogLevel */ assignGlobalInt( LOG_ALL, "LOG_ALL" ); assignGlobalInt( LOG_TRACE, "LOG_TRACE" ); assignGlobalInt( LOG_DEBUG, "LOG_DEBUG" ); assignGlobalInt( LOG_INFO, "LOG_INFO" ); assignGlobalInt( LOG_WARNING, "LOG_WARNING" ); assignGlobalInt( LOG_ERROR, "LOG_ERROR" ); assignGlobalInt( LOG_FATAL, "LOG_FATAL" ); assignGlobalInt( LOG_NONE, "LOG_NONE" ); /* KeyboardKey */ assignGlobalInt( KEY_NULL, "KEY_NULL" ); assignGlobalInt( KEY_APOSTROPHE, "KEY_APOSTROPHE" ); assignGlobalInt( KEY_COMMA, "KEY_COMMA" ); assignGlobalInt( KEY_MINUS, "KEY_MINUS" ); assignGlobalInt( KEY_PERIOD, "KEY_PERIOD" ); assignGlobalInt( KEY_SLASH, "KEY_SLASH" ); assignGlobalInt( KEY_ZERO, "KEY_ZERO" ); assignGlobalInt( KEY_ONE, "KEY_ONE" ); assignGlobalInt( KEY_TWO, "KEY_TWO" ); assignGlobalInt( KEY_THREE, "KEY_THREE" ); assignGlobalInt( KEY_FOUR, "KEY_FOUR" ); assignGlobalInt( KEY_FIVE, "KEY_FIVE" ); assignGlobalInt( KEY_SIX, "KEY_SIX" ); assignGlobalInt( KEY_SEVEN, "KEY_SEVEN" ); assignGlobalInt( KEY_EIGHT, "KEY_EIGHT" ); assignGlobalInt( KEY_NINE, "KEY_NINE" ); assignGlobalInt( KEY_SEMICOLON, "KEY_SEMICOLON" ); assignGlobalInt( KEY_EQUAL, "KEY_EQUAL" ); assignGlobalInt( KEY_A, "KEY_A" ); assignGlobalInt( KEY_B, "KEY_B" ); assignGlobalInt( KEY_C, "KEY_C" ); assignGlobalInt( KEY_D, "KEY_D" ); assignGlobalInt( KEY_E, "KEY_E" ); assignGlobalInt( KEY_F, "KEY_F" ); assignGlobalInt( KEY_G, "KEY_G" ); assignGlobalInt( KEY_H, "KEY_H" ); assignGlobalInt( KEY_I, "KEY_I" ); assignGlobalInt( KEY_J, "KEY_J" ); assignGlobalInt( KEY_K, "KEY_K" ); assignGlobalInt( KEY_L, "KEY_L" ); assignGlobalInt( KEY_M, "KEY_M" ); assignGlobalInt( KEY_N, "KEY_N" ); assignGlobalInt( KEY_O, "KEY_O" ); assignGlobalInt( KEY_P, "KEY_P" ); assignGlobalInt( KEY_Q, "KEY_Q" ); assignGlobalInt( KEY_R, "KEY_R" ); assignGlobalInt( KEY_S, "KEY_S" ); assignGlobalInt( KEY_T, "KEY_T" ); assignGlobalInt( KEY_U, "KEY_U" ); assignGlobalInt( KEY_V, "KEY_V" ); assignGlobalInt( KEY_W, "KEY_W" ); assignGlobalInt( KEY_X, "KEY_X" ); assignGlobalInt( KEY_Y, "KEY_Y" ); assignGlobalInt( KEY_Z, "KEY_Z" ); assignGlobalInt( KEY_LEFT_BRACKET, "KEY_LEFT_BRACKET" ); assignGlobalInt( KEY_BACKSLASH, "KEY_BACKSLASH" ); assignGlobalInt( KEY_RIGHT_BRACKET, "KEY_RIGHT_BRACKET" ); assignGlobalInt( KEY_GRAVE, "KEY_GRAVE" ); assignGlobalInt( KEY_SPACE, "KEY_SPACE" ); assignGlobalInt( KEY_ESCAPE, "KEY_ESCAPE" ); assignGlobalInt( KEY_ENTER, "KEY_ENTER" ); assignGlobalInt( KEY_TAB, "KEY_TAB" ); assignGlobalInt( KEY_BACKSPACE, "KEY_BACKSPACE" ); assignGlobalInt( KEY_INSERT, "KEY_INSERT" ); assignGlobalInt( KEY_DELETE, "KEY_DELETE" ); assignGlobalInt( KEY_RIGHT, "KEY_RIGHT" ); assignGlobalInt( KEY_LEFT, "KEY_LEFT" ); assignGlobalInt( KEY_DOWN, "KEY_DOWN" ); assignGlobalInt( KEY_UP, "KEY_UP" ); assignGlobalInt( KEY_PAGE_UP, "KEY_PAGE_UP" ); assignGlobalInt( KEY_PAGE_DOWN, "KEY_PAGE_DOWN" ); assignGlobalInt( KEY_HOME, "KEY_HOME" ); assignGlobalInt( KEY_END, "KEY_END" ); assignGlobalInt( KEY_CAPS_LOCK, "KEY_CAPS_LOCK" ); assignGlobalInt( KEY_SCROLL_LOCK, "KEY_SCROLL_LOCK" ); assignGlobalInt( KEY_NUM_LOCK, "KEY_NUM_LOCK" ); assignGlobalInt( KEY_PRINT_SCREEN, "KEY_PRINT_SCREEN" ); assignGlobalInt( KEY_PAUSE, "KEY_PAUSE" ); assignGlobalInt( KEY_F1, "KEY_F1" ); assignGlobalInt( KEY_F2, "KEY_F2" ); assignGlobalInt( KEY_F3, "KEY_F3" ); assignGlobalInt( KEY_F4, "KEY_F4" ); assignGlobalInt( KEY_F5, "KEY_F5" ); assignGlobalInt( KEY_F6, "KEY_F6" ); assignGlobalInt( KEY_F7, "KEY_F7" ); assignGlobalInt( KEY_F8, "KEY_F8" ); assignGlobalInt( KEY_F9, "KEY_F9" ); assignGlobalInt( KEY_F10, "KEY_F10" ); assignGlobalInt( KEY_F11, "KEY_F11" ); assignGlobalInt( KEY_F12, "KEY_F12" ); assignGlobalInt( KEY_LEFT_SHIFT, "KEY_LEFT_SHIFT" ); assignGlobalInt( KEY_LEFT_CONTROL, "KEY_LEFT_CONTROL" ); assignGlobalInt( KEY_LEFT_ALT, "KEY_LEFT_ALT" ); assignGlobalInt( KEY_LEFT_SUPER, "KEY_LEFT_SUPER" ); assignGlobalInt( KEY_RIGHT_SHIFT, "KEY_RIGHT_SHIFT" ); assignGlobalInt( KEY_RIGHT_CONTROL, "KEY_RIGHT_CONTROL" ); assignGlobalInt( KEY_RIGHT_ALT, "KEY_RIGHT_ALT" ); assignGlobalInt( KEY_RIGHT_SUPER, "KEY_RIGHT_SUPER" ); assignGlobalInt( KEY_KB_MENU, "KEY_KB_MENU" ); assignGlobalInt( KEY_KP_0, "KEY_KP_0" ); assignGlobalInt( KEY_KP_1, "KEY_KP_1" ); assignGlobalInt( KEY_KP_2, "KEY_KP_2" ); assignGlobalInt( KEY_KP_3, "KEY_KP_3" ); assignGlobalInt( KEY_KP_4, "KEY_KP_4" ); assignGlobalInt( KEY_KP_5, "KEY_KP_5" ); assignGlobalInt( KEY_KP_6, "KEY_KP_6" ); assignGlobalInt( KEY_KP_7, "KEY_KP_7" ); assignGlobalInt( KEY_KP_8, "KEY_KP_8" ); assignGlobalInt( KEY_KP_9, "KEY_KP_9" ); assignGlobalInt( KEY_KP_DECIMAL, "KEY_KP_DECIMAL" ); assignGlobalInt( KEY_KP_DIVIDE, "KEY_KP_DIVIDE" ); assignGlobalInt( KEY_KP_MULTIPLY, "KEY_KP_MULTIPLY" ); assignGlobalInt( KEY_KP_SUBTRACT, "KEY_KP_SUBTRACT" ); assignGlobalInt( KEY_KP_ADD, "KEY_KP_ADD" ); assignGlobalInt( KEY_KP_ENTER, "KEY_KP_ENTER" ); assignGlobalInt( KEY_KP_EQUAL, "KEY_KP_EQUAL" ); assignGlobalInt( KEY_BACK, "KEY_BACK" ); assignGlobalInt( KEY_MENU, "KEY_MENU" ); assignGlobalInt( KEY_VOLUME_UP, "KEY_VOLUME_UP" ); assignGlobalInt( KEY_VOLUME_DOWN, "KEY_VOLUME_DOWN" ); /* MouseButtons */ assignGlobalInt( MOUSE_BUTTON_LEFT, "MOUSE_BUTTON_LEFT" ); assignGlobalInt( MOUSE_BUTTON_RIGHT, "MOUSE_BUTTON_RIGHT" ); assignGlobalInt( MOUSE_BUTTON_MIDDLE, "MOUSE_BUTTON_MIDDLE" ); assignGlobalInt( MOUSE_BUTTON_SIDE, "MOUSE_BUTTON_SIDE" ); assignGlobalInt( MOUSE_BUTTON_EXTRA, "MOUSE_BUTTON_EXTRA" ); assignGlobalInt( MOUSE_BUTTON_FORWARD, "MOUSE_BUTTON_FORWARD" ); assignGlobalInt( MOUSE_BUTTON_BACK, "MOUSE_BUTTON_BACK" ); /* MouseCursor */ assignGlobalInt( MOUSE_CURSOR_DEFAULT, "MOUSE_CURSOR_DEFAULT" ); assignGlobalInt( MOUSE_CURSOR_ARROW, "MOUSE_CURSOR_ARROW" ); assignGlobalInt( MOUSE_CURSOR_IBEAM, "MOUSE_CURSOR_IBEAM" ); assignGlobalInt( MOUSE_CURSOR_CROSSHAIR, "MOUSE_CURSOR_CROSSHAIR" ); assignGlobalInt( MOUSE_CURSOR_POINTING_HAND, "MOUSE_CURSOR_POINTING_HAND" ); assignGlobalInt( MOUSE_CURSOR_RESIZE_EW, "MOUSE_CURSOR_RESIZE_EW" ); assignGlobalInt( MOUSE_CURSOR_RESIZE_NS, "MOUSE_CURSOR_RESIZE_NS" ); assignGlobalInt( MOUSE_CURSOR_RESIZE_NWSE, "MOUSE_CURSOR_RESIZE_NWSE" ); assignGlobalInt( MOUSE_CURSOR_RESIZE_NESW, "MOUSE_CURSOR_RESIZE_NESW" ); assignGlobalInt( MOUSE_CURSOR_RESIZE_ALL, "MOUSE_CURSOR_RESIZE_ALL" ); assignGlobalInt( MOUSE_CURSOR_NOT_ALLOWED, "MOUSE_CURSOR_NOT_ALLOWED" ); /* GamepadButtons */ assignGlobalInt( GAMEPAD_BUTTON_UNKNOWN, "GAMEPAD_BUTTON_UNKNOWN" ); assignGlobalInt( GAMEPAD_BUTTON_LEFT_FACE_UP, "GAMEPAD_BUTTON_LEFT_FACE_UP" ); assignGlobalInt( GAMEPAD_BUTTON_LEFT_FACE_RIGHT, "GAMEPAD_BUTTON_LEFT_FACE_RIGHT" ); assignGlobalInt( GAMEPAD_BUTTON_LEFT_FACE_DOWN, "GAMEPAD_BUTTON_LEFT_FACE_DOWN" ); assignGlobalInt( GAMEPAD_BUTTON_LEFT_FACE_LEFT, "GAMEPAD_BUTTON_LEFT_FACE_LEFT" ); assignGlobalInt( GAMEPAD_BUTTON_RIGHT_FACE_UP, "GAMEPAD_BUTTON_RIGHT_FACE_UP" ); assignGlobalInt( GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, "GAMEPAD_BUTTON_RIGHT_FACE_RIGHT" ); assignGlobalInt( GAMEPAD_BUTTON_RIGHT_FACE_DOWN, "GAMEPAD_BUTTON_RIGHT_FACE_DOWN" ); assignGlobalInt( GAMEPAD_BUTTON_RIGHT_FACE_LEFT, "GAMEPAD_BUTTON_RIGHT_FACE_LEFT" ); assignGlobalInt( GAMEPAD_BUTTON_LEFT_TRIGGER_1, "GAMEPAD_BUTTON_LEFT_TRIGGER_1" ); assignGlobalInt( GAMEPAD_BUTTON_LEFT_TRIGGER_2, "GAMEPAD_BUTTON_LEFT_TRIGGER_2" ); assignGlobalInt( GAMEPAD_BUTTON_RIGHT_TRIGGER_1, "GAMEPAD_BUTTON_RIGHT_TRIGGER_1" ); assignGlobalInt( GAMEPAD_BUTTON_RIGHT_TRIGGER_2, "GAMEPAD_BUTTON_RIGHT_TRIGGER_2" ); assignGlobalInt( GAMEPAD_BUTTON_MIDDLE_LEFT, "GAMEPAD_BUTTON_MIDDLE_LEFT" ); assignGlobalInt( GAMEPAD_BUTTON_MIDDLE, "GAMEPAD_BUTTON_MIDDLE" ); assignGlobalInt( GAMEPAD_BUTTON_MIDDLE_RIGHT, "GAMEPAD_BUTTON_MIDDLE_RIGHT" ); assignGlobalInt( GAMEPAD_BUTTON_LEFT_THUMB, "GAMEPAD_BUTTON_LEFT_THUMB" ); assignGlobalInt( GAMEPAD_BUTTON_RIGHT_THUMB, "GAMEPAD_BUTTON_RIGHT_THUMB" ); /* GamepadAxis */ assignGlobalInt( GAMEPAD_AXIS_LEFT_X, "GAMEPAD_AXIS_LEFT_X" ); assignGlobalInt( GAMEPAD_AXIS_LEFT_Y, "GAMEPAD_AXIS_LEFT_Y" ); assignGlobalInt( GAMEPAD_AXIS_RIGHT_X, "GAMEPAD_AXIS_RIGHT_X" ); assignGlobalInt( GAMEPAD_AXIS_RIGHT_Y, "GAMEPAD_AXIS_RIGHT_Y" ); assignGlobalInt( GAMEPAD_AXIS_LEFT_TRIGGER, "GAMEPAD_AXIS_LEFT_TRIGGER" ); assignGlobalInt( GAMEPAD_AXIS_RIGHT_TRIGGER, "GAMEPAD_AXIS_RIGHT_TRIGGER" ); /* MapTypes */ assignGlobalInt( MATERIAL_MAP_ALBEDO, "MATERIAL_MAP_ALBEDO" ); assignGlobalInt( MATERIAL_MAP_METALNESS, "MATERIAL_MAP_METALNESS" ); assignGlobalInt( MATERIAL_MAP_NORMAL, "MATERIAL_MAP_NORMAL" ); assignGlobalInt( MATERIAL_MAP_ROUGHNESS, "MATERIAL_MAP_ROUGHNESS" ); assignGlobalInt( MATERIAL_MAP_OCCLUSION, "MATERIAL_MAP_OCCLUSION" ); assignGlobalInt( MATERIAL_MAP_EMISSION, "MATERIAL_MAP_EMISSION" ); assignGlobalInt( MATERIAL_MAP_HEIGHT, "MATERIAL_MAP_HEIGHT" ); assignGlobalInt( MATERIAL_MAP_CUBEMAP, "MATERIAL_MAP_CUBEMAP" ); assignGlobalInt( MATERIAL_MAP_IRRADIANCE, "MATERIAL_MAP_IRRADIANCE" ); assignGlobalInt( MATERIAL_MAP_PREFILTER, "MATERIAL_MAP_PREFILTER" ); assignGlobalInt( MATERIAL_MAP_BRDF, "MATERIAL_MAP_BRDF" ); assignGlobalInt( MATERIAL_MAP_DIFFUSE, "MATERIAL_MAP_DIFFUSE" ); assignGlobalInt( MATERIAL_MAP_SPECULAR, "MATERIAL_MAP_SPECULAR" ); /* ShaderLocationIndex */ assignGlobalInt( SHADER_LOC_VERTEX_POSITION, "SHADER_LOC_VERTEX_POSITION" ); assignGlobalInt( SHADER_LOC_VERTEX_TEXCOORD01, "SHADER_LOC_VERTEX_TEXCOORD01" ); assignGlobalInt( SHADER_LOC_VERTEX_TEXCOORD02, "SHADER_LOC_VERTEX_TEXCOORD02" ); assignGlobalInt( SHADER_LOC_VERTEX_NORMAL, "SHADER_LOC_VERTEX_NORMAL" ); assignGlobalInt( SHADER_LOC_VERTEX_TANGENT, "SHADER_LOC_VERTEX_TANGENT" ); assignGlobalInt( SHADER_LOC_VERTEX_COLOR, "SHADER_LOC_VERTEX_COLOR" ); assignGlobalInt( SHADER_LOC_MATRIX_MVP, "SHADER_LOC_MATRIX_MVP" ); assignGlobalInt( SHADER_LOC_MATRIX_VIEW, "SHADER_LOC_MATRIX_VIEW" ); assignGlobalInt( SHADER_LOC_MATRIX_PROJECTION, "SHADER_LOC_MATRIX_PROJECTION" ); assignGlobalInt( SHADER_LOC_MATRIX_MODEL, "SHADER_LOC_MATRIX_MODEL" ); assignGlobalInt( SHADER_LOC_MATRIX_NORMAL, "SHADER_LOC_MATRIX_NORMAL" ); assignGlobalInt( SHADER_LOC_VECTOR_VIEW, "SHADER_LOC_VECTOR_VIEW" ); assignGlobalInt( SHADER_LOC_COLOR_DIFFUSE, "SHADER_LOC_COLOR_DIFFUSE" ); assignGlobalInt( SHADER_LOC_COLOR_SPECULAR, "SHADER_LOC_COLOR_SPECULAR" ); assignGlobalInt( SHADER_LOC_COLOR_AMBIENT, "SHADER_LOC_COLOR_AMBIENT" ); assignGlobalInt( SHADER_LOC_MAP_ALBEDO, "SHADER_LOC_MAP_ALBEDO" ); assignGlobalInt( SHADER_LOC_MAP_METALNESS, "SHADER_LOC_MAP_METALNESS" ); assignGlobalInt( SHADER_LOC_MAP_NORMAL, "SHADER_LOC_MAP_NORMAL" ); assignGlobalInt( SHADER_LOC_MAP_ROUGHNESS, "SHADER_LOC_MAP_ROUGHNESS" ); assignGlobalInt( SHADER_LOC_MAP_OCCLUSION, "SHADER_LOC_MAP_OCCLUSION" ); assignGlobalInt( SHADER_LOC_MAP_EMISSION, "SHADER_LOC_MAP_EMISSION" ); assignGlobalInt( SHADER_LOC_MAP_HEIGHT, "SHADER_LOC_MAP_HEIGHT" ); assignGlobalInt( SHADER_LOC_MAP_CUBEMAP, "SHADER_LOC_MAP_CUBEMAP" ); assignGlobalInt( SHADER_LOC_MAP_IRRADIANCE, "SHADER_LOC_MAP_IRRADIANCE" ); assignGlobalInt( SHADER_LOC_MAP_PREFILTER, "SHADER_LOC_MAP_PREFILTER" ); assignGlobalInt( SHADER_LOC_MAP_BRDF, "SHADER_LOC_MAP_BRDF" ); assignGlobalInt( SHADER_LOC_MAP_DIFFUSE, "SHADER_LOC_MAP_DIFFUSE" ); assignGlobalInt( SHADER_LOC_MAP_SPECULAR, "SHADER_LOC_MAP_SPECULAR" ); /* ShaderUniformDataType */ assignGlobalInt( SHADER_UNIFORM_FLOAT, "SHADER_UNIFORM_FLOAT" ); assignGlobalInt( SHADER_UNIFORM_VEC2, "SHADER_UNIFORM_VEC2" ); assignGlobalInt( SHADER_UNIFORM_VEC3, "SHADER_UNIFORM_VEC3" ); assignGlobalInt( SHADER_UNIFORM_VEC4, "SHADER_UNIFORM_VEC4" ); assignGlobalInt( SHADER_UNIFORM_INT, "SHADER_UNIFORM_INT" ); assignGlobalInt( SHADER_UNIFORM_IVEC2, "SHADER_UNIFORM_IVEC2" ); assignGlobalInt( SHADER_UNIFORM_IVEC3, "SHADER_UNIFORM_IVEC3" ); assignGlobalInt( SHADER_UNIFORM_IVEC4, "SHADER_UNIFORM_IVEC4" ); assignGlobalInt( SHADER_UNIFORM_SAMPLER2D, "SHADER_UNIFORM_SAMPLER2D" ); /* ShaderAttributeDataTypes */ assignGlobalInt( SHADER_ATTRIB_FLOAT, "SHADER_ATTRIB_FLOAT" ); assignGlobalInt( SHADER_ATTRIB_VEC2, "SHADER_ATTRIB_VEC2" ); assignGlobalInt( SHADER_ATTRIB_VEC3, "SHADER_ATTRIB_VEC3" ); assignGlobalInt( SHADER_ATTRIB_VEC4, "SHADER_ATTRIB_VEC4" ); /* PixelFormats */ assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_GRAYSCALE, "PIXELFORMAT_UNCOMPRESSED_GRAYSCALE" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, "PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_R5G6B5, "PIXELFORMAT_UNCOMPRESSED_R5G6B5" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_R8G8B8, "PIXELFORMAT_UNCOMPRESSED_R8G8B8" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, "PIXELFORMAT_UNCOMPRESSED_R5G5B5A1" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, "PIXELFORMAT_UNCOMPRESSED_R4G4B4A4" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, "PIXELFORMAT_UNCOMPRESSED_R8G8B8A8" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_R32, "PIXELFORMAT_UNCOMPRESSED_R32" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_R32G32B32, "PIXELFORMAT_UNCOMPRESSED_R32G32B32" ); assignGlobalInt( PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, "PIXELFORMAT_UNCOMPRESSED_R32G32B32A32" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_DXT1_RGB, "PIXELFORMAT_COMPRESSED_DXT1_RGB" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_DXT1_RGBA, "PIXELFORMAT_COMPRESSED_DXT1_RGBA" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_DXT3_RGBA, "PIXELFORMAT_COMPRESSED_DXT3_RGBA" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_DXT5_RGBA, "PIXELFORMAT_COMPRESSED_DXT5_RGBA" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_ETC1_RGB, "PIXELFORMAT_COMPRESSED_ETC1_RGB" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_ETC2_RGB, "PIXELFORMAT_COMPRESSED_ETC2_RGB" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, "PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_PVRT_RGB, "PIXELFORMAT_COMPRESSED_PVRT_RGB" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_PVRT_RGBA, "PIXELFORMAT_COMPRESSED_PVRT_RGBA" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, "PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA" ); assignGlobalInt( PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA, "PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA" ); /* TextureFilters */ assignGlobalInt( TEXTURE_FILTER_POINT, "TEXTURE_FILTER_POINT" ); assignGlobalInt( TEXTURE_FILTER_BILINEAR, "TEXTURE_FILTER_BILINEAR" ); assignGlobalInt( TEXTURE_FILTER_TRILINEAR, "TEXTURE_FILTER_TRILINEAR" ); assignGlobalInt( TEXTURE_FILTER_ANISOTROPIC_4X, "TEXTURE_FILTER_ANISOTROPIC_4X" ); assignGlobalInt( TEXTURE_FILTER_ANISOTROPIC_8X, "TEXTURE_FILTER_ANISOTROPIC_8X" ); assignGlobalInt( TEXTURE_FILTER_ANISOTROPIC_16X, "TEXTURE_FILTER_ANISOTROPIC_16X" ); /* TextureWrap */ assignGlobalInt( TEXTURE_WRAP_REPEAT, "TEXTURE_WRAP_REPEAT" ); assignGlobalInt( TEXTURE_WRAP_CLAMP, "TEXTURE_WRAP_CLAMP" ); assignGlobalInt( TEXTURE_WRAP_MIRROR_REPEAT, "TEXTURE_WRAP_MIRROR_REPEAT" ); assignGlobalInt( TEXTURE_WRAP_MIRROR_CLAMP, "TEXTURE_WRAP_MIRROR_CLAMP" ); /* CubemapLayout */ assignGlobalInt( CUBEMAP_LAYOUT_AUTO_DETECT, "CUBEMAP_LAYOUT_AUTO_DETECT" ); assignGlobalInt( CUBEMAP_LAYOUT_LINE_VERTICAL, "CUBEMAP_LAYOUT_LINE_VERTICAL" ); assignGlobalInt( CUBEMAP_LAYOUT_LINE_HORIZONTAL, "CUBEMAP_LAYOUT_LINE_HORIZONTAL" ); assignGlobalInt( CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR, "CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR" ); assignGlobalInt( CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE, "CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE" ); assignGlobalInt( CUBEMAP_LAYOUT_PANORAMA, "CUBEMAP_LAYOUT_PANORAMA" ); /* FontType */ assignGlobalInt( FONT_DEFAULT, "FONT_DEFAULT" ); assignGlobalInt( FONT_BITMAP, "FONT_BITMAP" ); assignGlobalInt( FONT_SDF, "FONT_SDF" ); /* BlendModes */ assignGlobalInt( BLEND_ALPHA, "BLEND_ALPHA" ); assignGlobalInt( BLEND_ADDITIVE, "BLEND_ADDITIVE" ); assignGlobalInt( BLEND_MULTIPLIED, "BLEND_MULTIPLIED" ); assignGlobalInt( BLEND_ADD_COLORS, "BLEND_ADD_COLORS" ); assignGlobalInt( BLEND_SUBTRACT_COLORS, "BLEND_SUBTRACT_COLORS" ); assignGlobalInt( BLEND_CUSTOM, "BLEND_CUSTOM" ); /* Gesture */ assignGlobalInt( GESTURE_NONE, "GESTURE_NONE" ); assignGlobalInt( GESTURE_TAP, "GESTURE_TAP" ); assignGlobalInt( GESTURE_DOUBLETAP, "GESTURE_DOUBLETAP" ); assignGlobalInt( GESTURE_HOLD, "GESTURE_HOLD" ); assignGlobalInt( GESTURE_DRAG, "GESTURE_DRAG" ); assignGlobalInt( GESTURE_SWIPE_RIGHT, "GESTURE_SWIPE_RIGHT" ); assignGlobalInt( GESTURE_SWIPE_LEFT, "GESTURE_SWIPE_LEFT" ); assignGlobalInt( GESTURE_SWIPE_UP, "GESTURE_SWIPE_UP" ); assignGlobalInt( GESTURE_SWIPE_DOWN, "GESTURE_SWIPE_DOWN" ); assignGlobalInt( GESTURE_PINCH_IN, "GESTURE_PINCH_IN" ); assignGlobalInt( GESTURE_PINCH_OUT, "GESTURE_PINCH_OUT" ); /* CameraMode */ assignGlobalInt( CAMERA_CUSTOM, "CAMERA_CUSTOM" ); assignGlobalInt( CAMERA_FREE, "CAMERA_FREE" ); assignGlobalInt( CAMERA_ORBITAL, "CAMERA_ORBITAL" ); assignGlobalInt( CAMERA_FIRST_PERSON, "CAMERA_FIRST_PERSON" ); assignGlobalInt( CAMERA_THIRD_PERSON, "CAMERA_THIRD_PERSON" ); /* CameraProjections */ assignGlobalInt( CAMERA_PERSPECTIVE, "CAMERA_PERSPECTIVE" ); assignGlobalInt( CAMERA_ORTHOGRAPHIC, "CAMERA_ORTHOGRAPHIC" ); /* N-patchLayout */ assignGlobalInt( NPATCH_NINE_PATCH, "NPATCH_NINE_PATCH" ); assignGlobalInt( NPATCH_THREE_PATCH_VERTICAL, "NPATCH_THREE_PATCH_VERTICAL" ); assignGlobalInt( NPATCH_THREE_PATCH_HORIZONTAL, "NPATCH_THREE_PATCH_HORIZONTAL" ); /* TextureModes */ assignGlobalInt( TEXTURE_SOURCE_TEXTURE, "TEXTURE_SOURCE_TEXTURE" ); assignGlobalInt( TEXTURE_SOURCE_RENDER_TEXTURE, "TEXTURE_SOURCE_RENDER_TEXTURE" ); /* Colors */ assignGlobalColor( LIGHTGRAY, "LIGHTGRAY" ); assignGlobalColor( GRAY, "GRAY" ); assignGlobalColor( DARKGRAY, "DARKGRAY" ); assignGlobalColor( YELLOW, "YELLOW" ); assignGlobalColor( GOLD, "GOLD" ); assignGlobalColor( ORANGE, "ORANGE" ); assignGlobalColor( PINK, "PINK" ); assignGlobalColor( RED, "RED" ); assignGlobalColor( MAROON, "MAROON" ); assignGlobalColor( GREEN, "GREEN" ); assignGlobalColor( LIME, "LIME" ); assignGlobalColor( DARKGREEN, "DARKGREEN" ); assignGlobalColor( SKYBLUE, "SKYBLUE" ); assignGlobalColor( BLUE, "BLUE" ); assignGlobalColor( DARKBLUE, "DARKBLUE" ); assignGlobalColor( PURPLE, "PURPLE" ); assignGlobalColor( VIOLET, "VIOLET" ); assignGlobalColor( DARKPURPLE, "DARKPURPLE" ); assignGlobalColor( BEIGE, "BEIGE" ); assignGlobalColor( BROWN, "BROWN" ); assignGlobalColor( DARKBROWN, "DARKBROWN" ); assignGlobalColor( WHITE, "WHITE" ); assignGlobalColor( BLACK, "BLACK" ); assignGlobalColor( BLANK, "BLANK" ); assignGlobalColor( MAGENTA, "MAGENTA" ); assignGlobalColor( RAYWHITE, "RAYWHITE" ); /* Math */ assignGlobalFloat( PI, "PI" ); assignGlobalFloat( DEG2RAD, "DEG2RAD" ); assignGlobalFloat( RAD2DEG, "RAD2DEG" ); /* GuiControlState */ assignGlobalInt( STATE_NORMAL, "STATE_NORMAL" ); assignGlobalInt( STATE_FOCUSED, "STATE_FOCUSED" ); assignGlobalInt( STATE_PRESSED, "STATE_PRESSED" ); assignGlobalInt( STATE_DISABLED, "STATE_DISABLED" ); /* GuiTextAlignment */ assignGlobalInt( TEXT_ALIGN_LEFT, "TEXT_ALIGN_LEFT" ); assignGlobalInt( TEXT_ALIGN_CENTER, "TEXT_ALIGN_CENTER" ); assignGlobalInt( TEXT_ALIGN_RIGHT, "TEXT_ALIGN_RIGHT" ); /* GuiControl */ assignGlobalInt( DEFAULT, "DEFAULT" ); assignGlobalInt( LABEL, "LABEL" ); assignGlobalInt( BUTTON, "BUTTON" ); assignGlobalInt( TOGGLE, "TOGGLE" ); assignGlobalInt( SLIDER, "SLIDER" ); assignGlobalInt( PROGRESSBAR, "PROGRESSBAR" ); assignGlobalInt( CHECKBOX, "CHECKBOX" ); assignGlobalInt( COMBOBOX, "COMBOBOX" ); assignGlobalInt( DROPDOWNBOX, "DROPDOWNBOX" ); assignGlobalInt( TEXTBOX, "TEXTBOX" ); assignGlobalInt( VALUEBOX, "VALUEBOX" ); assignGlobalInt( SPINNER, "SPINNER" ); assignGlobalInt( LISTVIEW, "LISTVIEW" ); assignGlobalInt( COLORPICKER, "COLORPICKER" ); assignGlobalInt( SCROLLBAR, "SCROLLBAR" ); assignGlobalInt( STATUSBAR, "STATUSBAR" ); /* GuiControlProperty */ assignGlobalInt( BORDER_COLOR_NORMAL, "BORDER_COLOR_NORMAL" ); assignGlobalInt( BASE_COLOR_NORMAL, "BASE_COLOR_NORMAL" ); assignGlobalInt( TEXT_COLOR_NORMAL, "TEXT_COLOR_NORMAL" ); assignGlobalInt( BORDER_COLOR_FOCUSED, "BORDER_COLOR_FOCUSED" ); assignGlobalInt( BASE_COLOR_FOCUSED, "BASE_COLOR_FOCUSED" ); assignGlobalInt( TEXT_COLOR_FOCUSED, "TEXT_COLOR_FOCUSED" ); assignGlobalInt( BORDER_COLOR_PRESSED, "BORDER_COLOR_PRESSED" ); assignGlobalInt( BASE_COLOR_PRESSED, "BASE_COLOR_PRESSED" ); assignGlobalInt( TEXT_COLOR_PRESSED, "TEXT_COLOR_PRESSED" ); assignGlobalInt( BORDER_COLOR_DISABLED, "BORDER_COLOR_DISABLED" ); assignGlobalInt( BASE_COLOR_DISABLED, "BASE_COLOR_DISABLED" ); assignGlobalInt( TEXT_COLOR_DISABLED, "TEXT_COLOR_DISABLED" ); assignGlobalInt( BORDER_WIDTH, "BORDER_WIDTH" ); assignGlobalInt( TEXT_PADDING, "TEXT_PADDING" ); assignGlobalInt( TEXT_ALIGNMENT, "TEXT_ALIGNMENT" ); assignGlobalInt( RESERVED, "RESERVED" ); /* GuiDefaultProperty */ assignGlobalInt( TEXT_SIZE, "TEXT_SIZE" ); assignGlobalInt( TEXT_SPACING, "TEXT_SPACING" ); assignGlobalInt( LINE_COLOR, "LINE_COLOR" ); assignGlobalInt( BACKGROUND_COLOR, "BACKGROUND_COLOR" ); /* GuiToggleProperty */ assignGlobalInt( GROUP_PADDING, "GROUP_PADDING" ); /* GuiSliderProperty */ assignGlobalInt( SLIDER_WIDTH, "SLIDER_WIDTH" ); assignGlobalInt( SLIDER_PADDING, "SLIDER_PADDING" ); /* GuiProgressBarProperty */ assignGlobalInt( PROGRESS_PADDING, "PROGRESS_PADDING" ); /* GuiScrollBarProperty */ assignGlobalInt( ARROWS_SIZE, "ARROWS_SIZE" ); assignGlobalInt( ARROWS_VISIBLE, "ARROWS_VISIBLE" ); assignGlobalInt( SCROLL_SLIDER_PADDING, "SCROLL_SLIDER_PADDING" ); assignGlobalInt( SCROLL_SLIDER_SIZE, "SCROLL_SLIDER_SIZE" ); assignGlobalInt( SCROLL_PADDING, "SCROLL_PADDING" ); assignGlobalInt( SCROLL_SPEED, "SCROLL_SPEED" ); /* GuiCheckBoxProperty */ assignGlobalInt( CHECK_PADDING, "CHECK_PADDING" ); /* GuiComboBoxProperty */ assignGlobalInt( COMBO_BUTTON_WIDTH, "COMBO_BUTTON_WIDTH" ); assignGlobalInt( COMBO_BUTTON_SPACING, "COMBO_BUTTON_SPACING" ); /* GuiDropdownBoxProperty */ assignGlobalInt( ARROW_PADDING, "ARROW_PADDING" ); assignGlobalInt( DROPDOWN_ITEMS_SPACING, "DROPDOWN_ITEMS_SPACING" ); /* GuiTextBoxProperty */ assignGlobalInt( TEXT_INNER_PADDING, "TEXT_INNER_PADDING" ); assignGlobalInt( TEXT_LINES_SPACING, "TEXT_LINES_SPACING" ); /* GuiSpinnerProperty */ assignGlobalInt( SPIN_BUTTON_WIDTH, "SPIN_BUTTON_WIDTH" ); assignGlobalInt( SPIN_BUTTON_SPACING, "SPIN_BUTTON_SPACING" ); /* GuiListViewProperty */ assignGlobalInt( LIST_ITEMS_HEIGHT, "LIST_ITEMS_HEIGHT" ); assignGlobalInt( LIST_ITEMS_SPACING, "LIST_ITEMS_SPACING" ); assignGlobalInt( SCROLLBAR_WIDTH, "SCROLLBAR_WIDTH" ); assignGlobalInt( SCROLLBAR_SIDE, "SCROLLBAR_SIDE" ); /* GuiColorPickerProperty */ assignGlobalInt( COLOR_SELECTOR_SIZE, "COLOR_SELECTOR_SIZE" ); assignGlobalInt( HUEBAR_WIDTH, "HUEBAR_WIDTH" ); assignGlobalInt( HUEBAR_PADDING, "HUEBAR_PADDING" ); assignGlobalInt( HUEBAR_SELECTOR_HEIGHT, "HUEBAR_SELECTOR_HEIGHT" ); assignGlobalInt( HUEBAR_SELECTOR_OVERFLOW, "HUEBAR_SELECTOR_OVERFLOW" ); /* LightType */ assignGlobalInt( LIGHT_DIRECTIONAL, "LIGHT_DIRECTIONAL" ); assignGlobalInt( LIGHT_POINT, "LIGHT_POINT" ); /*DOC_END*/ } // Custom logging funtion void LogCustom( int logLevel, const char *text, va_list args ) { char string[ STRING_LEN ] = {'\0'}; char msg[ STRING_LEN ] = {'\0'}; vsprintf( string, text, args ); switch ( logLevel ) { case LOG_ALL: sprintf( msg, "ALL: %s", string ); break; case LOG_TRACE: sprintf( msg, "TRACE: %s", string ); break; case LOG_DEBUG: sprintf( msg, "DEBUG: %s", string ); break; case LOG_INFO: sprintf( msg, "INFO: %s", string ); break; case LOG_WARNING: sprintf( msg, "WARNING: %s", string ); break; case LOG_ERROR: sprintf( msg, "ERROR: %s", string ); break; case LOG_FATAL: sprintf( msg, "FATAL: %s", string ); break; default: break; } printf( "%s\n", msg ); /* Call Lua log function if exists. */ lua_State *L = state->luaState; lua_pushcfunction( L, luaTraceback ); int tracebackidx = lua_gettop( L ); lua_getglobal( L, "log" ); if ( lua_isfunction( L, -1 ) ) { lua_pushinteger( L, logLevel ); lua_pushstring( L, msg ); if ( lua_pcall( L, 2, 0, tracebackidx ) != 0 ) { TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) ); state->run = false; lua_pop( L, -1 ); return; } } lua_pop( L, -1 ); } bool luaInit() { state->luaState = luaL_newstate(); luaL_openlibs( state->luaState ); if ( state->luaState == NULL ) { TraceLog( LOG_WARNING, "%s", "Failed to init Lua" ); return false; } defineGlobals(); return true; } int luaTraceback( lua_State *L ) { lua_getglobal( L, "debug" ); if ( !lua_istable( L, -1 ) ) { lua_pop( L, 1 ); return 1; } lua_getfield( L, -1, "traceback" ); if ( !lua_isfunction( L, -1 ) ) { lua_pop( L, 2 ); return 1; } lua_pushvalue( L, 1 ); // pass error message lua_pushinteger( L, 2 ); // skip this function and traceback lua_call( L, 2, 1 ); // call debug.traceback return 1; } bool luaCallMain() { lua_State *L = state->luaState; char path[ STRING_LEN ] = { '\0' }; /* If web, set path to resources folder. */ #ifdef EMSCRIPTEN sprintf( path, "resources/main.lua" ); /* Alternatively look for main. Could be precompiled binary file. */ if ( !FileExists( path ) ) { sprintf( path, "resources/main" ); } #else sprintf( path, "%smain.lua", state->exePath ); /* Alternatively look for main. Could be precompiled binary file. */ if ( !FileExists( path ) ) { sprintf( path, "%smain", state->exePath ); } #endif luaL_dofile( L, path ); /* Check errors in main.lua */ if ( lua_tostring( state->luaState, -1 ) ) { TraceLog( LOG_ERROR, "Lua error: %s\n", lua_tostring( state->luaState, -1 ) ); } lua_pushcfunction( L, luaTraceback ); int tracebackidx = lua_gettop( L ); lua_getglobal( L, "init" ); if ( lua_isfunction( L, -1 ) ) { if ( lua_pcall( L, 0, 0, tracebackidx ) != 0 ) { TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) ); return false; } } //TODO Should this be removed? else { TraceLog( LOG_ERROR, "%s", "No Lua init found!" ); return false; } /* Apply custom callback here. */ SetTraceLogCallback( LogCustom ); return true; } void luaCallProcess() { lua_State *L = state->luaState; lua_pushcfunction( L, luaTraceback ); int tracebackidx = lua_gettop(L); lua_getglobal( L, "process" ); if ( lua_isfunction( L, -1 ) ) { lua_pushnumber( L, GetFrameTime() ); if ( lua_pcall( L, 1, 0, tracebackidx ) != 0 ) { TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) ); state->run = false; lua_pop( L, -1 ); return; } } lua_pop( L, -1 ); } void luaCallDraw() { lua_State *L = state->luaState; lua_pushcfunction( L, luaTraceback ); int tracebackidx = lua_gettop(L); lua_getglobal( L, "draw" ); if ( lua_isfunction( L, -1 ) ) { BeginDrawing(); if ( lua_pcall( L, 0, 0, tracebackidx ) != 0 ) { TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) ); state->run = false; return; } EndDrawing(); } lua_pop( L, -1 ); } void luaRegister() { lua_State *L = state->luaState; /* Core. */ /* Window. */ lua_register( L, "RL_IsWindowReady", lcoreIsWindowReady ); lua_register( L, "RL_IsWindowFullscreen", lcoreIsWindowFullscreen ); lua_register( L, "RL_IsWindowHidden", lcoreIsWindowHidden ); lua_register( L, "RL_IsWindowMinimized", lcoreIsWindowMinimized ); lua_register( L, "RL_IsWindowMaximized", lcoreIsWindowMaximized ); lua_register( L, "RL_IsWindowFocused", lcoreIsWindowFocused ); lua_register( L, "RL_SetWindowMonitor", lcoreSetWindowMonitor ); lua_register( L, "RL_SetWindowPosition", lcoreSetWindowPosition ); lua_register( L, "RL_SetWindowSize", lcoreSetWindowSize ); lua_register( L, "RL_SetWindowMinSize", lcoreSetWindowMinSize ); lua_register( L, "RL_GetMonitorPosition", lcoreGetMonitorPosition ); lua_register( L, "RL_GetMonitorSize", lcoreGetMonitorSize ); lua_register( L, "RL_GetWindowPosition", lcoreGetWindowPosition ); lua_register( L, "RL_GetWindowSize", lcoreGetWindowSize ); lua_register( L, "RL_SetWindowState", lcoreSetWindowState ); lua_register( L, "RL_IsWindowState", lcoreIsWindowState ); lua_register( L, "RL_ClearWindowState", lcoreClearWindowState ); lua_register( L, "RL_IsWindowResized", lcoreIsWindowResized ); lua_register( L, "RL_SetWindowIcon", lcoreSetWindowIcon ); lua_register( L, "RL_SetWindowTitle", lcoreSetWindowTitle ); lua_register( L, "RL_GetMonitorCount", lcoreGetMonitorCount ); lua_register( L, "RL_GetCurrentMonitor", lcoreGetCurrentMonitor ); lua_register( L, "RL_GetMonitorPhysicalSize", lcoreGetMonitorPhysicalSize ); lua_register( L, "RL_GetMonitorRefreshRate", lcoreGetMonitorRefreshRate ); lua_register( L, "RL_GetWindowScaleDPI", lcoreGetWindowScaleDPI ); lua_register( L, "RL_GetMonitorName", lcoreGetMonitorName ); lua_register( L, "RL_CloseWindow", lcoreCloseWindow ); lua_register( L, "RL_SetClipboardText", lcoreSetClipboardText ); lua_register( L, "RL_GetClipboardText", lcoreGetClipboardText ); /* Timing. */ lua_register( L, "RL_SetTargetFPS", lcoreSetTargetFPS ); lua_register( L, "RL_GetFPS", lcoreGetFPS ); lua_register( L, "RL_GetFrameTime", lcoreGetFrameTime ); lua_register( L, "RL_GetTime", lcoreGetTime ); /* Misc. */ lua_register( L, "RL_TakeScreenshot", lcoreTakeScreenshot ); lua_register( L, "RL_SetConfigFlags", lcoreSetConfigFlags ); lua_register( L, "RL_TraceLog", lcoreTraceLog ); lua_register( L, "RL_SetTraceLogLevel", lcoreSetTraceLogLevel ); lua_register( L, "RL_OpenURL", lcoreOpenURL ); /* Cursor. */ lua_register( L, "RL_ShowCursor", lcoreShowCursor ); lua_register( L, "RL_HideCursor", lcoreHideCursor ); lua_register( L, "RL_IsCursorHidden", lcoreIsCursorHidden ); lua_register( L, "RL_EnableCursor", lcoreEnableCursor ); lua_register( L, "RL_DisableCursor", lcoreDisableCursor ); lua_register( L, "RL_IsCursorOnScreen", lcoreIsCursorOnScreen ); /* Drawing. */ lua_register( L, "RL_ClearBackground", lcoreClearBackground ); lua_register( L, "RL_BeginDrawing", lcoreBeginDrawing ); lua_register( L, "RL_EndDrawing", lcoreEndDrawing ); lua_register( L, "RL_BeginBlendMode", lcoreBeginBlendMode ); lua_register( L, "RL_EndBlendMode", lcoreEndBlendMode ); lua_register( L, "RL_BeginScissorMode", lcoreBeginScissorMode ); lua_register( L, "RL_EndScissorMode", lcoreEndScissorMode ); /* Shader. */ lua_register( L, "RL_LoadShader", lcoreLoadShader ); lua_register( L, "RL_LoadShaderFromMemory", lcoreLoadShaderFromMemory ); lua_register( L, "RL_BeginShaderMode", lcoreBeginShaderMode ); lua_register( L, "RL_EndShaderMode", lcoreEndShaderMode ); lua_register( L, "RL_GetShaderLocation", lcoreGetShaderLocation ); lua_register( L, "RL_GetShaderLocationAttrib", lcoreGetShaderLocationAttrib ); lua_register( L, "RL_SetShaderLocationIndex", lcoreSetShaderLocationIndex ); lua_register( L, "RL_GetShaderLocationIndex", lcoreGetShaderLocationIndex ); lua_register( L, "RL_SetShaderValueMatrix", lcoreSetShaderValueMatrix ); lua_register( L, "RL_SetShaderValueTexture", lcoreSetShaderValueTexture ); lua_register( L, "RL_SetShaderValue", lcoreSetShaderValue ); lua_register( L, "RL_SetShaderValueV", lcoreSetShaderValueV ); lua_register( L, "RL_UnloadShader", lcoreUnloadShader ); /* File. */ lua_register( L, "RL_GetBasePath", lcoreGetBasePath ); lua_register( L, "RL_FileExists", lcoreFileExists ); lua_register( L, "RL_DirectoryExists", lcoreDirectoryExists ); lua_register( L, "RL_IsFileExtension", lcoreIsFileExtension ); lua_register( L, "RL_GetFileExtension", lcoreGetFileExtension ); lua_register( L, "RL_GetFileName", lcoreGetFileName ); lua_register( L, "RL_GetFileNameWithoutExt", lcoreGetFileNameWithoutExt ); lua_register( L, "RL_GetDirectoryPath", lcoreGetDirectoryPath ); lua_register( L, "RL_GetPrevDirectoryPath", lcoreGetPrevDirectoryPath ); lua_register( L, "RL_GetWorkingDirectory", lcoreGetWorkingDirectory ); lua_register( L, "RL_LoadDirectoryFiles", lcoreLoadDirectoryFiles ); lua_register( L, "RL_ChangeDirectory", lcoreChangeDirectory ); lua_register( L, "RL_IsFileDropped", lcoreIsFileDropped ); lua_register( L, "RL_LoadDroppedFiles", lcoreLoadDroppedFiles ); lua_register( L, "RL_GetFileModTime", lcoreGetFileModTime ); /* Camera2D. */ lua_register( L, "RL_CreateCamera2D", lcoreCreateCamera2D ); lua_register( L, "RL_UnloadCamera2D", lcoreUnloadCamera2D ); lua_register( L, "RL_BeginMode2D", lcoreBeginMode2D ); lua_register( L, "RL_EndMode2D", lcoreEndMode2D ); lua_register( L, "RL_SetCamera2DTarget", lcoreSetCamera2DTarget ); lua_register( L, "RL_SetCamera2DOffset", lcoreSetCamera2DOffset ); lua_register( L, "RL_SetCamera2DRotation", lcoreSetCamera2DRotation ); lua_register( L, "RL_SetCamera2DZoom", lcoreSetCamera2DZoom ); lua_register( L, "RL_GetCamera2DTarget", lcoreGetCamera2DTarget ); lua_register( L, "RL_GetCamera2DOffset", lcoreGetCamera2DOffset ); lua_register( L, "RL_GetCamera2DRotation", lcoreGetCamera2DRotation ); lua_register( L, "RL_GetCamera2DZoom", lcoreGetCamera2DZoom ); /* Camera3D. */ lua_register( L, "RL_CreateCamera3D", lcoreCreateCamera3D ); lua_register( L, "RL_UnloadCamera3D", lcoreUnloadCamera3D ); lua_register( L, "RL_BeginMode3D", lcoreBeginMode3D ); lua_register( L, "RL_EndMode3D", lcoreEndMode3D ); lua_register( L, "RL_SetCamera3DPosition", lcoreSetCamera3DPosition ); lua_register( L, "RL_SetCamera3DTarget", lcoreSetCamera3DTarget ); lua_register( L, "RL_SetCamera3DUp", lcoreSetCamera3DUp ); lua_register( L, "RL_SetCamera3DFovy", lcoreSetCamera3DFovy ); lua_register( L, "RL_SetCamera3DProjection", lcoreSetCamera3DProjection ); lua_register( L, "RL_GetCamera3DPosition", lcoreGetCamera3DPosition ); lua_register( L, "RL_GetCamera3DTarget", lcoreGetCamera3DTarget ); lua_register( L, "RL_GetCamera3DUp", lcoreGetCamera3DUp ); lua_register( L, "RL_GetCamera3DFovy", lcoreGetCamera3DFovy ); lua_register( L, "RL_GetCamera3DProjection", lcoreGetCamera3DProjection ); lua_register( L, "RL_UpdateCamera3D", lcoreUpdateCamera3D ); lua_register( L, "RL_SetCameraMode", lcoreSetCameraMode ); lua_register( L, "RL_SetCameraPanControl", lcoreSetCameraPanControl ); lua_register( L, "RL_SetCameraAltControl", lcoreSetCameraAltControl ); lua_register( L, "RL_SetCameraSmoothZoomControl", lcoreSetCameraSmoothZoomControl ); lua_register( L, "RL_SetCameraMoveControls", lcoreSetCameraMoveControls ); /* Input-related Keyboard. */ lua_register( L, "RL_IsKeyPressed", lcoreIsKeyPressed ); lua_register( L, "RL_IsKeyDown", lcoreIsKeyDown ); lua_register( L, "RL_IsKeyReleased", lcoreIsKeyReleased ); lua_register( L, "RL_IsKeyUp", lcoreIsKeyUp ); lua_register( L, "RL_GetKeyPressed", lcoreGetKeyPressed ); lua_register( L, "RL_GetCharPressed", lcoreGetCharPressed ); lua_register( L, "RL_SetExitKey", lcoreSetExitKey ); /* Input-related Gamepad. */ lua_register( L, "RL_IsGamepadAvailable", lcoreIsGamepadAvailable ); lua_register( L, "RL_IsGamepadButtonPressed", lcoreIsGamepadButtonPressed ); lua_register( L, "RL_IsGamepadButtonDown", lcoreIsGamepadButtonDown ); lua_register( L, "RL_IsGamepadButtonReleased", lcoreIsGamepadButtonReleased ); lua_register( L, "RL_GetGamepadAxisCount", lcoreGetGamepadAxisCount ); lua_register( L, "RL_GetGamepadAxisMovement", lcoreGetGamepadAxisMovement ); lua_register( L, "RL_GetGamepadName", lcoreGetGamepadName ); /* Input-related Mouse. */ lua_register( L, "RL_IsMouseButtonPressed", lcoreIsMouseButtonPressed ); lua_register( L, "RL_IsMouseButtonDown", lcoreIsMouseButtonDown ); lua_register( L, "RL_IsMouseButtonReleased", lcoreIsMouseButtonReleased ); lua_register( L, "RL_IsMouseButtonUp", lcoreIsMouseButtonUp ); lua_register( L, "RL_GetMousePosition", lcoreGetMousePosition ); lua_register( L, "RL_GetMouseDelta", lcoreGetMouseDelta ); lua_register( L, "RL_SetMousePosition", lcoreSetMousePosition ); lua_register( L, "RL_SetMouseOffset", lcoreSetMouseOffset ); lua_register( L, "RL_SetMouseScale", lcoreSetMouseScale ); lua_register( L, "RL_GetMouseWheelMove", lcoreGetMouseWheelMove ); lua_register( L, "RL_SetMouseCursor", lcoreSetMouseCursor ); /* Input-related Touch */ lua_register( L, "RL_GetTouchPosition", lcoreGetTouchPosition ); lua_register( L, "RL_GetTouchPointId", lcoreGetTouchPointId ); lua_register( L, "RL_GetTouchPointCount", lcoreGetTouchPointCount ); /* Input-related Gestures. */ lua_register( L, "RL_SetGesturesEnabled", lcoreSetGesturesEnabled ); lua_register( L, "RL_IsGestureDetected", lcoreIsGestureDetected ); lua_register( L, "RL_GetGestureDetected", lcoreGetGestureDetected ); lua_register( L, "RL_GetGestureHoldDuration", lcoreGetGestureHoldDuration ); lua_register( L, "RL_GetGestureDragVector", lcoreGetGestureDragVector ); lua_register( L, "RL_GetGestureDragAngle", lcoreGetGestureDragAngle ); lua_register( L, "RL_GetGesturePinchVector", lcoreGetGesturePinchVector ); lua_register( L, "RL_GetGesturePinchAngle", lcoreGetGesturePinchAngle ); /* Screen-space. */ lua_register( L, "RL_GetMouseRay", lcoreGetMouseRay ); lua_register( L, "RL_GetCameraMatrix", lcoreGetCameraMatrix ); lua_register( L, "RL_GetCameraMatrix2D", lcoreGetCameraMatrix2D ); lua_register( L, "RL_GetWorldToScreen", lcoreGetWorldToScreen ); lua_register( L, "RL_GetWorldToScreenEx", lcoreGetWorldToScreenEx ); lua_register( L, "RL_GetWorldToScreen2D", lcoreGetWorldToScreen2D ); lua_register( L, "RL_GetScreenToWorld2D", lcoreGetScreenToWorld2D ); /* Shapes. */ /* Drawing. */ lua_register( L, "RL_SetShapesTexture", lshapesSetShapesTexture ); lua_register( L, "RL_DrawPixel", lshapesDrawPixel ); lua_register( L, "RL_DrawLine", lshapesDrawLine ); lua_register( L, "RL_DrawLineBezier", lshapesDrawLineBezier ); lua_register( L, "RL_DrawLineBezierQuad", lshapesDrawLineBezierQuad ); lua_register( L, "RL_DrawLineBezierCubic", lshapesDrawLineBezierCubic ); lua_register( L, "RL_DrawLineStrip", lshapesDrawLineStrip ); lua_register( L, "RL_DrawCircle", lshapesDrawCircle ); lua_register( L, "RL_DrawCircleSector", lshapesDrawCircleSector ); lua_register( L, "RL_DrawCircleSectorLines", lshapesDrawCircleSectorLines ); lua_register( L, "RL_DrawCircleGradient", lshapesDrawCircleGradient ); lua_register( L, "RL_DrawCircleLines", lshapesDrawCircleLines ); lua_register( L, "RL_DrawEllipse", lshapesDrawEllipse ); lua_register( L, "RL_DrawEllipseLines", lshapesDrawEllipseLines ); lua_register( L, "RL_DrawRing", lshapesDrawRing ); lua_register( L, "RL_DrawRingLines", lshapesDrawRingLines ); lua_register( L, "RL_DrawRectangle", lshapesDrawRectangle ); lua_register( L, "RL_DrawRectanglePro", lshapesDrawRectanglePro ); lua_register( L, "RL_DrawRectangleGradientV", lshapesDrawRectangleGradientV ); lua_register( L, "RL_DrawRectangleGradientH", lshapesDrawRectangleGradientH ); lua_register( L, "RL_DrawRectangleGradientEx", lshapesDrawRectangleGradientEx ); lua_register( L, "RL_DrawRectangleLines", lshapesDrawRectangleLines ); lua_register( L, "RL_DrawRectangleLinesEx", lshapesDrawRectangleLinesEx ); lua_register( L, "RL_DrawRectangleRounded", lshapesDrawRectangleRounded ); lua_register( L, "RL_DrawRectangleRoundedLines", lshapesDrawRectangleRoundedLines ); lua_register( L, "RL_DrawTriangle", lshapesDrawTriangle ); lua_register( L, "RL_DrawTriangleLines", lshapesDrawTriangleLines ); lua_register( L, "RL_DrawTriangleFan", lshapesDrawTriangleFan ); lua_register( L, "RL_DrawTriangleStrip", lshapesDrawTriangleStrip ); lua_register( L, "RL_DrawPoly", lshapesDrawPoly ); lua_register( L, "RL_DrawPolyLines", lshapesDrawPolyLines ); lua_register( L, "RL_DrawPolyLinesEx", lshapesDrawPolyLinesEx ); /* Collision. */ lua_register( L, "RL_CheckCollisionRecs", lshapesCheckCollisionRecs ); lua_register( L, "RL_CheckCollisionCircles", lshapesCheckCollisionCircles ); lua_register( L, "RL_CheckCollisionCircleRec", lshapesCheckCollisionCircleRec ); lua_register( L, "RL_CheckCollisionPointRec", lshapesCheckCollisionPointRec ); lua_register( L, "RL_CheckCollisionPointCircle", lshapesCheckCollisionPointCircle ); lua_register( L, "RL_CheckCollisionPointTriangle", lshapesCheckCollisionPointTriangle ); lua_register( L, "RL_CheckCollisionLines", lshapesCheckCollisionLines ); lua_register( L, "RL_CheckCollisionPointLine", lshapesCheckCollisionPointLine ); lua_register( L, "RL_GetCollisionRec", lshapesGetCollisionRec ); /* Textures. */ /* Image Loading. */ lua_register( L, "RL_LoadImage", ltexturesLoadImage ); lua_register( L, "RL_LoadImageFromTexture", ltexturesLoadImageFromTexture ); lua_register( L, "RL_LoadImageFromScreen", ltexturesLoadImageFromScreen ); lua_register( L, "RL_UnloadImage", ltexturesUnloadImage ); lua_register( L, "RL_ExportImage", ltexturesExportImage ); lua_register( L, "RL_ExportImageAsCode", ltexturesExportImageAsCode ); /* Image Generation. */ lua_register( L, "RL_GenImageColor", ltexturesGenImageColor ); lua_register( L, "RL_GenImageGradientV", ltexturesGenImageGradientV ); lua_register( L, "RL_GenImageGradientH", ltexturesGenImageGradientH ); lua_register( L, "RL_GenImageGradientRadial", ltexturesGenImageGradientRadial ); lua_register( L, "RL_GenImageChecked", ltexturesGenImageChecked ); lua_register( L, "RL_GenImageWhiteNoise", ltexturesGenImageWhiteNoise ); lua_register( L, "RL_GenImageCellular", ltexturesGenImageCellular ); /* Image Manipulation Functions. */ lua_register( L, "RL_ImageCopy", ltexturesImageCopy ); lua_register( L, "RL_ImageFromImage", ltexturesImageFromImage ); lua_register( L, "RL_ImageText", ltexturesImageText ); lua_register( L, "RL_ImageFormat", ltexturesImageFormat ); lua_register( L, "RL_ImageToPOT", ltexturesImageToPOT ); lua_register( L, "RL_ImageCrop", ltexturesImageCrop ); lua_register( L, "RL_ImageAlphaCrop", ltexturesImageAlphaCrop ); lua_register( L, "RL_ImageAlphaClear", ltexturesImageAlphaClear ); lua_register( L, "RL_ImageAlphaMask", ltexturesImageAlphaMask ); lua_register( L, "RL_ImageAlphaPremultiply", ltexturesImageAlphaPremultiply ); lua_register( L, "RL_ImageResize", ltexturesImageResize ); lua_register( L, "RL_ImageResizeNN", ltexturesImageResizeNN ); lua_register( L, "RL_ImageResizeCanvas", ltexturesImageResizeCanvas ); lua_register( L, "RL_ImageMipmaps", ltexturesImageMipmaps ); lua_register( L, "RL_ImageDither", ltexturesImageDither ); lua_register( L, "RL_ImageFlipVertical", ltexturesImageFlipVertical ); lua_register( L, "RL_ImageFlipHorizontal", ltexturesImageFlipHorizontal ); lua_register( L, "RL_ImageRotateCW", ltexturesImageRotateCW ); lua_register( L, "RL_ImageRotateCCW", ltexturesImageRotateCCW ); lua_register( L, "RL_ImageColorTint", ltexturesImageColorTint ); lua_register( L, "RL_ImageColorInvert", ltexturesImageColorInvert ); lua_register( L, "RL_ImageColorGrayscale", ltexturesImageColorGrayscale ); lua_register( L, "RL_ImageColorContrast", ltexturesImageColorContrast ); lua_register( L, "RL_ImageColorBrightness", ltexturesImageColorBrightness ); lua_register( L, "RL_ImageColorReplace", ltexturesImageColorReplace ); lua_register( L, "RL_LoadImageColors", ltexturesLoadImageColors ); lua_register( L, "RL_LoadImagePalette", ltexturesLoadImagePalette ); lua_register( L, "RL_GetImageAlphaBorder", ltexturesGetImageAlphaBorder ); lua_register( L, "RL_GetImageColor", ltexturesGetImageColor ); /* Image Drawing. */ lua_register( L, "RL_ImageClearBackground", ltexturesImageClearBackground ); lua_register( L, "RL_ImageDrawPixel", ltexturesImageDrawPixel ); lua_register( L, "RL_ImageDrawLine", ltexturesImageDrawLine ); lua_register( L, "RL_ImageDrawCircle", ltexturesImageDrawCircle ); lua_register( L, "RL_ImageDrawRectangle", ltexturesImageDrawRectangle ); lua_register( L, "RL_ImageDrawRectangleLines", ltexturesImageDrawRectangleLines ); lua_register( L, "RL_ImageDraw", ltexturesImageDraw ); lua_register( L, "RL_ImageDrawTextEx", ltexturesImageDrawTextEx ); /* Image Configuration. */ lua_register( L, "RL_GetImageSize", ltexturesGetImageSize ); lua_register( L, "RL_GetImageMipmaps", ltexturesGetImageMipmaps ); lua_register( L, "RL_GetImageFormat", ltexturesGetImageFormat ); /* Texture Loading. */ lua_register( L, "RL_LoadTexture", ltexturesLoadTexture ); lua_register( L, "RL_LoadTextureFromImage", ltexturesLoadTextureFromImage ); lua_register( L, "RL_LoadTextureCubemap", ltexturesLoadTextureCubemap ); lua_register( L, "RL_LoadRenderTexture", ltexturesLoadRenderTexture ); lua_register( L, "RL_UnloadTexture", ltexturesUnloadTexture ); lua_register( L, "RL_UnloadRenderTexture", ltexturesUnloadRenderTexture ); lua_register( L, "RL_UpdateTexture", ltexturesUpdateTexture ); lua_register( L, "RL_UpdateTextureRec", ltexturesUpdateTextureRec ); /* Texture Drawing. */ lua_register( L, "RL_DrawTexture", ltexturesDrawTexture ); lua_register( L, "RL_DrawTextureRec", ltexturesDrawTextureRec ); lua_register( L, "RL_DrawTextureTiled", ltexturesDrawTextureTiled ); lua_register( L, "RL_DrawTexturePro", ltexturesDrawTexturePro ); lua_register( L, "RL_DrawTextureNPatch", ltexturesDrawTextureNPatch ); lua_register( L, "RL_DrawTexturePoly", ltexturesDrawTexturePoly ); lua_register( L, "RL_BeginTextureMode", ltexturesBeginTextureMode ); lua_register( L, "RL_EndTextureMode", ltexturesEndTextureMode ); lua_register( L, "RL_SetTextureSource", ltexturesSetTextureSource ); lua_register( L, "RL_GetTextureSource", ltexturesGetTextureSource ); /* Texture Configuration. */ lua_register( L, "RL_GenTextureMipmaps", ltexturesGenTextureMipmaps ); lua_register( L, "RL_SetTextureFilter", ltexturesSetTextureFilter ); lua_register( L, "RL_SetTextureWrap", ltexturesSetTextureWrap ); lua_register( L, "RL_GetTextureSize", ltexturesGetTextureSize ); lua_register( L, "RL_GetTextureMipmaps", ltexturesGetTextureMipmaps ); lua_register( L, "RL_GetTextureFormat", ltexturesGetTextureFormat ); /* Color/pixel */ lua_register( L, "RL_Fade", ltexturesFade ); lua_register( L, "RL_ColorToInt", ltexturesColorToInt ); lua_register( L, "RL_ColorNormalize", ltexturesColorNormalize ); lua_register( L, "RL_ColorFromNormalized", ltexturesColorFromNormalized ); lua_register( L, "RL_ColorToHSV", ltexturesColorToHSV ); lua_register( L, "RL_ColorFromHSV", ltexturesColorFromHSV ); lua_register( L, "RL_ColorAlpha", ltexturesColorAlpha ); lua_register( L, "RL_ColorAlphaBlend", ltexturesColorAlphaBlend ); lua_register( L, "RL_GetColor", ltexturesGetColor ); lua_register( L, "RL_GetPixelColor", ltexturesGetPixelColor ); lua_register( L, "RL_GetPixelDataSize", ltexturesGetPixelDataSize ); /* Models. */ /* Basic. */ lua_register( L, "RL_DrawLine3D", lmodelsDrawLine3D ); lua_register( L, "RL_DrawPoint3D", lmodelsDrawPoint3D ); lua_register( L, "RL_DrawCircle3D", lmodelsDrawCircle3D ); lua_register( L, "RL_DrawTriangle3D", lmodelsDrawTriangle3D ); lua_register( L, "RL_DrawCube", lmodelsDrawCube ); lua_register( L, "RL_DrawCubeWires", lmodelsDrawCubeWires ); lua_register( L, "RL_DrawCubeTexture", lmodelsDrawCubeTexture ); lua_register( L, "RL_DrawSphere", lmodelsDrawSphere ); lua_register( L, "RL_DrawSphereEx", lmodelsDrawSphereEx ); lua_register( L, "RL_DrawSphereWires", lmodelsDrawSphereWires ); lua_register( L, "RL_DrawCylinder", lmodelsDrawCylinder ); lua_register( L, "RL_DrawCylinderEx", lmodelsDrawCylinderEx ); lua_register( L, "RL_DrawCylinderWires", lmodelsDrawCylinderWires ); lua_register( L, "RL_DrawCylinderWiresEx", lmodelsDrawCylinderWiresEx ); lua_register( L, "RL_DrawPlane", lmodelsDrawPlane ); lua_register( L, "RL_DrawQuad3DTexture", lmodelDrawQuad3DTexture ); lua_register( L, "RL_DrawRay", lmodelsDrawRay ); lua_register( L, "RL_DrawGrid", lmodelsDrawGrid ); /* Mesh. */ lua_register( L, "RL_GenMeshPoly", lmodelsGenMeshPoly ); lua_register( L, "RL_GenMeshPlane", lmodelsGenMeshPlane ); lua_register( L, "RL_GenMeshCube", lmodelsGenMeshCube ); lua_register( L, "RL_GenMeshSphere", lmodelsGenMeshSphere ); lua_register( L, "RL_GenMeshCylinder", lmodelsGenMeshCylinder ); lua_register( L, "RL_GenMeshCone", lmodelsGenMeshCone ); lua_register( L, "RL_GenMeshTorus", lmodelsGenMeshTorus ); lua_register( L, "RL_GenMeshKnot", lmodelsGenMeshKnot ); lua_register( L, "RL_GenMeshHeightmap", lmodelsGenMeshHeightmap ); lua_register( L, "RL_GenMeshCustom", lmodelsGenMeshCustom ); lua_register( L, "RL_UpdateMesh", lmodelsUpdateMesh ); lua_register( L, "RL_UnloadMesh", lmodelsUnloadMesh ); lua_register( L, "RL_DrawMesh", lmodelsDrawMesh ); lua_register( L, "RL_DrawMeshInstanced", lmodelsDrawMeshInstanced ); lua_register( L, "RL_SetMeshColor", lmodelsSetMeshColor ); lua_register( L, "RL_ExportMesh", lmodelsExportMesh ); lua_register( L, "RL_GetMeshBoundingBox", lmodelsGetMeshBoundingBox ); lua_register( L, "RL_GenMeshTangents", lmodelsGenMeshTangents ); /* Material. */ lua_register( L, "RL_LoadMaterialDefault", lmodelsLoadMaterialDefault ); lua_register( L, "RL_CreateMaterial", lmodelsCreateMaterial ); lua_register( L, "RL_UnloadMaterial", lmodelsUnloadMaterial ); lua_register( L, "RL_SetMaterialTexture", lmodelsSetMaterialTexture ); lua_register( L, "RL_SetMaterialColor", lmodelsSetMaterialColor ); lua_register( L, "RL_SetMaterialValue", lmodelsSetMaterialValue ); /* Model. */ lua_register( L, "RL_LoadModel", lmodelsLoadModel ); lua_register( L, "RL_LoadModelFromMesh", lmodelsLoadModelFromMesh ); lua_register( L, "RL_UnloadModel", lmodelsUnloadModel ); lua_register( L, "RL_DrawModel", lmodelsDrawModel ); lua_register( L, "RL_DrawModelEx", lmodelsDrawModelEx ); lua_register( L, "RL_SetModelMaterial", lmodelsSetModelMaterial ); lua_register( L, "RL_SetModelMeshMaterial", lmodelsSetModelMeshMaterial ); lua_register( L, "RL_DrawBillboard", lmodelsDrawBillboard ); lua_register( L, "RL_DrawBillboardRec", lmodelsDrawBillboardRec ); lua_register( L, "RL_SetModelTransform", lmodelsSetModelTransform ); lua_register( L, "RL_GetModelTransform", lmodelsGetModelTransform ); /* Animations. */ lua_register( L, "RL_LoadModelAnimations", lmodelsLoadModelAnimations ); lua_register( L, "RL_UpdateModelAnimation", lmodelsUpdateModelAnimation ); lua_register( L, "RL_UnloadModelAnimations", lmodelsUnloadModelAnimations ); lua_register( L, "RL_IsModelAnimationValid", lmodelsIsModelAnimationValid ); lua_register( L, "RL_GetModelAnimationBoneCount", lmodelsGetModelAnimationBoneCount ); lua_register( L, "RL_GetModelAnimationFrameCount", lmodelsGetModelAnimationFrameCount ); /* Collision. */ lua_register( L, "RL_CheckCollisionSpheres", lmodelsCheckCollisionSpheres ); lua_register( L, "RL_CheckCollisionBoxes", lmodelsCheckCollisionBoxes ); lua_register( L, "RL_CheckCollisionBoxSphere", lmodelsCheckCollisionBoxSphere ); lua_register( L, "RL_GetRayCollisionSphere", lmodelsGetRayCollisionSphere ); lua_register( L, "RL_GetRayCollisionBox", lmodelsGetRayCollisionBox ); lua_register( L, "RL_GetRayCollisionMesh", lmodelsGetRayCollisionMesh ); lua_register( L, "RL_GetRayCollisionTriangle", lmodelsGetRayCollisionTriangle ); lua_register( L, "RL_GetRayCollisionQuad", lmodelsGetRayCollisionQuad ); /* Text. */ /* Loading. */ lua_register( L, "RL_LoadFont", ltextLoadFont ); lua_register( L, "RL_LoadFontFromImage", ltextLoadFontFromImage ); lua_register( L, "RL_UnloadFont", ltextUnloadFont ); /* Drawing. */ lua_register( L, "RL_DrawFPS", ltextDrawFPS ); lua_register( L, "RL_DrawText", ltextDrawText ); lua_register( L, "RL_DrawTextPro", ltextDrawTextPro ); /* Misc. */ lua_register( L, "RL_MeasureText", ltextMeasureText ); lua_register( L, "RL_GetFontBaseSize", ltextGetFontBaseSize ); lua_register( L, "RL_GetFontGlyphCount", ltextGetFontGlyphCount ); lua_register( L, "RL_GetFontGlyphPadding", ltextGetFontGlyphPadding ); /* Audio. */ /* Audio device management. */ lua_register( L, "RL_SetMasterVolume", laudioSetMasterVolume ); /* Wave/Sound Loading. */ lua_register( L, "RL_LoadSound", laudioLoadSound ); lua_register( L, "RL_LoadWave", laudioLoadWave ); lua_register( L, "RL_LoadSoundFromWave", laudioLoadSoundFromWave ); lua_register( L, "RL_UnloadSound", laudioUnloadSound ); lua_register( L, "RL_UnloadWave", laudioUnloadWave ); lua_register( L, "RL_ExportWave", laudioExportWave ); lua_register( L, "RL_ExportWaveAsCode", laudioExportWaveAsCode ); /* Wave/Sound management */ lua_register( L, "RL_PlaySound", laudioPlaySound ); lua_register( L, "RL_StopSound", laudioStopSound ); lua_register( L, "RL_PauseSound", laudioPauseSound ); lua_register( L, "RL_ResumeSound", laudioResumeSound ); lua_register( L, "RL_PlaySoundMulti", laudioPlaySoundMulti ); lua_register( L, "RL_StopSoundMulti", laudioStopSoundMulti ); lua_register( L, "RL_GetSoundsPlaying", laudioGetSoundsPlaying ); lua_register( L, "RL_IsSoundPlaying", laudioIsSoundPlaying ); lua_register( L, "RL_SetSoundVolume", laudioSetSoundVolume ); lua_register( L, "RL_SetSoundPitch", laudioSetSoundPitch ); lua_register( L, "RL_SetSoundPan", laudioSetSoundPan ); lua_register( L, "RL_WaveFormat", laudioWaveFormat ); lua_register( L, "RL_WaveCopy", laudioWaveCopy ); lua_register( L, "RL_WaveCrop", laudioWaveCrop ); /* Music management. */ lua_register( L, "RL_LoadMusicStream", laudioLoadMusicStream ); lua_register( L, "RL_PlayMusicStream", laudioPlayMusicStream ); lua_register( L, "RL_IsMusicStreamPlaying", laudioIsMusicStreamPlaying ); lua_register( L, "RL_StopMusicStream", laudioStopMusicStream ); lua_register( L, "RL_PauseMusicStream", laudioPauseMusicStream ); lua_register( L, "RL_ResumeMusicStream", laudioResumeMusicStream ); lua_register( L, "RL_SetMusicVolume", laudioSetMusicVolume ); lua_register( L, "RL_SetMusicPitch", laudioSetMusicPitch ); lua_register( L, "RL_SetMusicPan", laudioSetMusicPan ); lua_register( L, "RL_GetMusicTimeLength", laudioGetMusicTimeLength ); lua_register( L, "RL_GetMusicTimePlayed", laudioGetMusicTimePlayed ); /* Math. */ /* Utils. */ lua_register( L, "RL_Clamp", lmathClamp ); lua_register( L, "RL_Lerp", lmathLerp ); lua_register( L, "RL_Normalize", lmathNormalize ); lua_register( L, "RL_Remap", lmathRemap ); lua_register( L, "RL_Wrap", lmathWrap ); lua_register( L, "RL_FloatEquals", lmathFloatEquals ); /* Vector2. */ lua_register( L, "RL_Vector2Zero", lmathVector2Zero ); lua_register( L, "RL_Vector2One", lmathVector2One ); lua_register( L, "RL_Vector2Add", lmathVector2Add ); lua_register( L, "RL_Vector2AddValue", lmathVector2AddValue ); lua_register( L, "RL_Vector2Subtract", lmathVector2Subtract ); lua_register( L, "RL_Vector2SubtractValue", lmathVector2SubtractValue ); lua_register( L, "RL_Vector2Length", lmathVector2Length ); lua_register( L, "RL_Vector2LengthSqr", lmathVector2LengthSqr ); lua_register( L, "RL_Vector2DotProduct", lmathVector2DotProduct ); lua_register( L, "RL_Vector2Distance", lmathVector2Distance ); lua_register( L, "RL_Vector2DistanceSqr", lmathVector2DistanceSqr ); lua_register( L, "RL_Vector2Angle", lmathVector2Angle ); lua_register( L, "RL_Vector2Scale", lmathVector2Scale ); lua_register( L, "RL_Vector2Multiply", lmathVector2Multiply ); lua_register( L, "RL_Vector2Negate", lmathVector2Negate ); lua_register( L, "RL_Vector2Divide", lmathVector2Divide ); lua_register( L, "RL_Vector2Normalize", lmathVector2Normalize ); lua_register( L, "RL_Vector2Transform", lmathVector2Transform ); lua_register( L, "RL_Vector2Lerp", lmathVector2Lerp ); lua_register( L, "RL_Vector2Reflect", lmathVector2Reflect ); lua_register( L, "RL_Vector2Rotate", lmathVector2Rotate ); lua_register( L, "RL_Vector2MoveTowards", lmathVector2MoveTowards ); lua_register( L, "RL_Vector2Invert", lmathVector2Invert ); lua_register( L, "RL_Vector2Clamp", lmathVector2Clamp ); lua_register( L, "RL_Vector2ClampValue", lmathVector2ClampValue ); lua_register( L, "RL_Vector2Equals", lmathVector2Equals ); /* Vector3. */ lua_register( L, "RL_Vector3Zero", lmathVector3Zero ); lua_register( L, "RL_Vector3One", lmathVector3One ); lua_register( L, "RL_Vector3Add", lmathVector3Add ); lua_register( L, "RL_Vector3AddValue", lmathVector3AddValue ); lua_register( L, "RL_Vector3Subtract", lmathVector3Subtract ); lua_register( L, "RL_Vector3SubtractValue", lmathVector3SubtractValue ); lua_register( L, "RL_Vector3Scale", lmathVector3Scale ); lua_register( L, "RL_Vector3Multiply", lmathVector3Multiply ); lua_register( L, "RL_Vector3CrossProduct", lmathVector3CrossProduct ); lua_register( L, "RL_Vector3Perpendicular", lmathVector3Perpendicular ); lua_register( L, "RL_Vector3Length", lmathVector3Length ); lua_register( L, "RL_Vector3LengthSqr", lmathVector3LengthSqr ); lua_register( L, "RL_Vector3DotProduct", lmathVector3DotProduct ); lua_register( L, "RL_Vector3Distance", lmathVector3Distance ); lua_register( L, "RL_Vector3DistanceSqr", lmathVector3DistanceSqr ); lua_register( L, "RL_Vector3Angle", lmathVector3Angle ); lua_register( L, "RL_Vector3Negate", lmathVector3Negate ); lua_register( L, "RL_Vector3Divide", lmathVector3Divide ); lua_register( L, "RL_Vector3Normalize", lmathVector3Normalize ); lua_register( L, "RL_Vector3OrthoNormalize", lmathVector3OrthoNormalize ); lua_register( L, "RL_Vector3Transform", lmathVector3Transform ); lua_register( L, "RL_Vector3RotateByQuaternion", lmathVector3RotateByQuaternion ); lua_register( L, "RL_Vector3Lerp", lmathVector3Lerp ); lua_register( L, "RL_Vector3Reflect", lmathVector3Reflect ); lua_register( L, "RL_Vector3Min", lmathVector3Min ); lua_register( L, "RL_Vector3Max", lmathVector3Max ); lua_register( L, "RL_Vector3Barycenter", lmathVector3Barycenter ); lua_register( L, "RL_Vector3Unproject", lmathVector3Unproject ); lua_register( L, "RL_Vector3Invert", lmathVector3Invert ); lua_register( L, "RL_Vector3Clamp", lmathVector3Clamp ); lua_register( L, "RL_Vector3ClampValue", lmathVector3ClampValue ); lua_register( L, "RL_Vector3Equals", lmathVector3Equals ); lua_register( L, "RL_Vector3Refract", lmathVector3Refract ); /* Matrix. */ lua_register( L, "RL_MatrixDeterminant", lmathMatrixDeterminant ); lua_register( L, "RL_MatrixTrace", lmathMatrixTrace ); lua_register( L, "RL_MatrixTranspose", lmathMatrixTranspose ); lua_register( L, "RL_MatrixInvert", lmathMatrixInvert ); lua_register( L, "RL_MatrixIdentity", lmathMatrixIdentity ); lua_register( L, "RL_MatrixAdd", lmathMatrixAdd ); lua_register( L, "RL_MatrixSubtract", lmathMatrixSubtract ); lua_register( L, "RL_MatrixMultiply", lmathMatrixMultiply ); lua_register( L, "RL_MatrixTranslate", lmathMatrixTranslate ); lua_register( L, "RL_MatrixRotate", lmathMatrixRotate ); lua_register( L, "RL_MatrixRotateX", lmathMatrixRotateX ); lua_register( L, "RL_MatrixRotateY", lmathMatrixRotateY ); lua_register( L, "RL_MatrixRotateZ", lmathMatrixRotateZ ); lua_register( L, "RL_MatrixRotateXYZ", lmathMatrixRotateXYZ ); lua_register( L, "RL_MatrixRotateZYX", lmathMatrixRotateZYX ); lua_register( L, "RL_MatrixScale", lmathMatrixScale ); lua_register( L, "RL_MatrixFrustum", lmathMatrixFrustum ); lua_register( L, "RL_MatrixPerspective", lmathMatrixPerspective ); lua_register( L, "RL_MatrixOrtho", lmathMatrixOrtho ); lua_register( L, "RL_MatrixLookAt", lmathMatrixLookAt ); /* Quaternion. */ lua_register( L, "RL_QuaternionAdd", lmathQuaternionAdd ); lua_register( L, "RL_QuaternionAddValue", lmathQuaternionAddValue ); lua_register( L, "RL_QuaternionSubtract", lmathQuaternionSubtract ); lua_register( L, "RL_QuaternionSubtractValue", lmathQuaternionSubtractValue ); lua_register( L, "RL_QuaternionIdentity", lmathQuaternionIdentity ); lua_register( L, "RL_QuaternionLength", lmathQuaternionLength ); lua_register( L, "RL_QuaternionNormalize", lmathQuaternionNormalize ); lua_register( L, "RL_QuaternionInvert", lmathQuaternionInvert ); lua_register( L, "RL_QuaternionMultiply", lmathQuaternionMultiply ); lua_register( L, "RL_QuaternionScale", lmathQuaternionScale ); lua_register( L, "RL_QuaternionDivide", lmathQuaternionDivide ); lua_register( L, "RL_QuaternionLerp", lmathQuaternionLerp ); lua_register( L, "RL_QuaternionNlerp", lmathQuaternionNlerp ); lua_register( L, "RL_QuaternionSlerp", lmathQuaternionSlerp ); lua_register( L, "RL_QuaternionFromVector3ToVector3", lmathQuaternionFromVector3ToVector3 ); lua_register( L, "RL_QuaternionFromMatrix", lmathQuaternionFromMatrix ); lua_register( L, "RL_QuaternionToMatrix", lmathQuaternionToMatrix ); lua_register( L, "RL_QuaternionFromAxisAngle", lmathQuaternionFromAxisAngle ); lua_register( L, "RL_QuaternionToAxisAngle", lmathQuaternionToAxisAngle ); lua_register( L, "RL_QuaternionFromEuler", lmathQuaternionFromEuler ); lua_register( L, "RL_QuaternionToEuler", lmathQuaternionToEuler ); lua_register( L, "RL_QuaternionTransform", lmathQuaternionTransform ); lua_register( L, "RL_QuaternionEquals", lmathQuaternionEquals ); /* Gui. */ /* Global. */ lua_register( L, "RL_GuiEnable", lguiGuiEnable ); lua_register( L, "RL_GuiDisable", lguiGuiDisable ); lua_register( L, "RL_GuiLock", lguiGuiLock ); lua_register( L, "RL_GuiUnlock", lguiGuiUnlock ); lua_register( L, "RL_GuiIsLocked", lguiGuiIsLocked ); lua_register( L, "RL_GuiFade", lguiGuiFade ); lua_register( L, "RL_GuiSetState", lguiGuiSetState ); lua_register( L, "RL_GuiGetState", lguiGuiGetState ); /* Font. */ lua_register( L, "RL_GuiSetFont", lguiGuiSetFont ); /* Style. */ lua_register( L, "RL_GuiSetStyle", lguiGuiSetStyle ); lua_register( L, "RL_GuiGetStyle", lguiGuiGetStyle ); lua_register( L, "RL_GuiLoadStyle", lguiGuiLoadStyle ); lua_register( L, "RL_GuiLoadStyleDefault", lguiGuiLoadStyleDefault ); /* Container. */ lua_register( L, "RL_GuiWindowBox", lguiGuiWindowBox ); lua_register( L, "RL_GuiGroupBox", lguiGuiGroupBox ); lua_register( L, "RL_GuiLine", lguiGuiLine ); lua_register( L, "RL_GuiPanel", lguiGuiPanel ); lua_register( L, "RL_GuiScrollPanel", lguiGuiScrollPanel ); /* Basic. */ lua_register( L, "RL_GuiLabel", lguiGuiLabel ); lua_register( L, "RL_GuiButton", lguiGuiButton ); lua_register( L, "RL_GuiLabelButton", lguiGuiLabelButton ); lua_register( L, "RL_GuiToggle", lguiGuiToggle ); lua_register( L, "RL_GuiToggleGroup", lguiGuiToggleGroup ); lua_register( L, "RL_GuiCheckBox", lguiGuiCheckBox ); lua_register( L, "RL_GuiComboBox", lguiGuiComboBox ); lua_register( L, "RL_GuiTextBox", lguiGuiTextBox ); lua_register( L, "RL_GuiTextBoxMulti", lguiGuiTextBoxMulti ); lua_register( L, "RL_GuiSpinner", lguiGuiSpinner ); lua_register( L, "RL_GuiValueBox", lguiGuiValueBox ); lua_register( L, "RL_GuiSlider", lguiGuiSlider ); lua_register( L, "RL_GuiSliderBar", lguiGuiSliderBar ); lua_register( L, "RL_GuiProgressBar", lguiGuiProgressBar ); lua_register( L, "RL_GuiScrollBar", lguiGuiScrollBar ); lua_register( L, "RL_GuiDropdownBox", lguiGuiDropdownBox ); lua_register( L, "RL_GuiStatusBar", lguiGuiStatusBar ); lua_register( L, "RL_GuiDummyRec", lguiGuiDummyRec ); lua_register( L, "RL_GuiGrid", lguiGuiGrid ); /* Advanced. */ lua_register( L, "RL_GuiListView", lguiGuiListView ); lua_register( L, "RL_GuiListViewEx", lguiGuiListViewEx ); lua_register( L, "RL_GuiMessageBox", lguiGuiMessageBox ); lua_register( L, "RL_GuiTextInputBox", lguiGuiTextInputBox ); lua_register( L, "RL_GuiColorPicker", lguiGuiColorPicker ); lua_register( L, "RL_GuiColorPanel", lguiGuiColorPanel ); lua_register( L, "RL_GuiColorBarAlpha", lguiGuiColorBarAlpha ); lua_register( L, "RL_GuiColorBarHue", lguiGuiColorBarHue ); /* Icons. */ lua_register( L, "RL_GuiIconText", lguiGuiIconText ); lua_register( L, "RL_GuiDrawIcon", lguiGuiDrawIcon ); lua_register( L, "RL_GuiSetIconScale", lguiGuiSetIconScale ); lua_register( L, "RL_GuiSetIconPixel", lguiGuiSetIconPixel ); lua_register( L, "RL_GuiClearIconPixel", lguiGuiClearIconPixel ); lua_register( L, "RL_GuiCheckIconPixel", lguiGuiCheckIconPixel ); /* Lights */ /* Basics. */ lua_register( L, "RL_CreateLight", llightsCreateLight ); lua_register( L, "RL_UpdateLightValues", llightsUpdateLightValues ); /* RLGL */ /* General render state. */ lua_register( L, "RL_rlglSetLineWidth", lrlglSetLineWidth ); lua_register( L, "RL_rlglGetLineWidth", lrlglGetLineWidth ); /* Easings */ /* Linear Easing functions. */ lua_register( L, "RL_EaseLinear", leasingsEaseLinear ); /* Sine Easing functions. */ lua_register( L, "RL_EaseSineIn", leasingsEaseSineIn ); lua_register( L, "RL_EaseSineOut", leasingsEaseSineOut ); lua_register( L, "RL_EaseSineInOut", leasingsEaseSineInOut ); /* Circular Easing functions. */ lua_register( L, "RL_EaseCircIn", leasingsEaseCircIn ); lua_register( L, "RL_EaseCircOut", leasingsEaseCircOut ); lua_register( L, "RL_EaseCircInOut", leasingsEaseCircInOut ); /* Cubic Easing functions. */ lua_register( L, "RL_EaseCubicIn", leasingsEaseCubicIn ); lua_register( L, "RL_EaseCubicOut", leasingsEaseCubicOut ); lua_register( L, "RL_EaseCubicInOut", leasingsEaseCubicInOut ); /* Quadratic Easing functions. */ lua_register( L, "RL_EaseQuadIn", leasingsEaseQuadIn ); lua_register( L, "RL_EaseQuadOut", leasingsEaseQuadOut ); lua_register( L, "RL_EaseQuadInOut", leasingsEaseQuadInOut ); /* Exponential Easing functions. */ lua_register( L, "RL_EaseExpoIn", leasingsEaseExpoIn ); lua_register( L, "RL_EaseExpoOut", leasingsEaseExpoOut ); lua_register( L, "RL_EaseExpoInOut", leasingsEaseExpoInOut ); /* Back Easing functions. */ lua_register( L, "RL_EaseBackIn", leasingsEaseBackIn ); lua_register( L, "RL_EaseBackOut", leasingsEaseBackOut ); lua_register( L, "RL_EaseBackInOut", leasingsEaseBackInOut ); /* Bounce Easing functions. */ lua_register( L, "RL_EaseBounceIn", leasingsEaseBounceIn ); lua_register( L, "RL_EaseBounceOut", leasingsEaseBounceOut ); lua_register( L, "RL_EaseBounceInOut", leasingsEaseBounceInOut ); /* Elastic Easing functions. */ lua_register( L, "RL_EaseElasticIn", leasingsEaseElasticIn ); lua_register( L, "RL_EaseElasticOut", leasingsEaseElasticOut ); lua_register( L, "RL_EaseElasticInOut", leasingsEaseElasticInOut ); } /* Lua util functions. */ Color uluaGetColor( lua_State *L ) { Color color = { 0, 0, 0, 255 }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong color value. Returning { 0, 0, 0, 255 }" ); return color; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: color.r = (uint8_t)lua_tointeger( L, -1 ); break; case 1: color.g = (uint8_t)lua_tointeger( L, -1 ); break; case 2: color.b = (uint8_t)lua_tointeger( L, -1 ); break; case 3: color.a = (uint8_t)lua_tointeger( L, -1 ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "r", (char*)lua_tostring( L, -2 ) ) == 0 ) { color.r = (uint8_t)lua_tointeger( L, -1 ); } else if ( strcmp( "g", (char*)lua_tostring( L, -2 ) ) == 0 ) { color.g = (uint8_t)lua_tointeger( L, -1 ); } else if ( strcmp( "b", (char*)lua_tostring( L, -2 ) ) == 0 ) { color.b = (uint8_t)lua_tointeger( L, -1 ); } else if ( strcmp( "a", (char*)lua_tostring( L, -2 ) ) == 0 ) { color.a = (uint8_t)lua_tointeger( L, -1 ); } } i++; lua_pop( L, 1 ); } } return color; } Vector2 uluaGetVector2( lua_State *L ) { Vector2 vector = { 0.0f, 0.0f }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong vector2 value. Returning { 0, 0 }" ); return vector; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: vector.x = lua_tonumber( L, -1 ); break; case 1: vector.y = lua_tonumber( L, -1 ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.x = lua_tonumber( L, -1 ); } else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.y = lua_tonumber( L, -1 ); } } i++; lua_pop( L, 1 ); } } return vector; } Vector3 uluaGetVector3( lua_State *L ) { Vector3 vector = { 0.0f, 0.0f, 0.0f }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong vector3 value. Returning { 0, 0, 0 }" ); return vector; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: vector.x = lua_tonumber( L, -1 ); break; case 1: vector.y = lua_tonumber( L, -1 ); break; case 2: vector.z = lua_tonumber( L, -1 ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.x = lua_tonumber( L, -1 ); } else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.y = lua_tonumber( L, -1 ); } else if ( strcmp( "z", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.z = lua_tonumber( L, -1 ); } } } i++; lua_pop( L, 1 ); } return vector; } Vector4 uluaGetVector4( lua_State *L ) { Vector4 vector = { 0.0f, 0.0f, 0.0f, 0.0f }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong vector4 value. Returning { 0, 0, 0, 0 }" ); return vector; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: vector.x = lua_tonumber( L, -1 ); break; case 1: vector.y = lua_tonumber( L, -1 ); break; case 2: vector.z = lua_tonumber( L, -1 ); break; case 3: vector.w = lua_tonumber( L, -1 ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.x = lua_tonumber( L, -1 ); } else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.y = lua_tonumber( L, -1 ); } else if ( strcmp( "z", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.z = lua_tonumber( L, -1 ); } else if ( strcmp( "w", (char*)lua_tostring( L, -2 ) ) == 0 ) { vector.w = lua_tonumber( L, -1 ); } } } i++; lua_pop( L, 1 ); } return vector; } Rectangle uluaGetRectangle( lua_State *L ) { Rectangle rect = { 0.0f, 0.0f, 0.0f, 0.0f }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong rectangle value. Returning { 0, 0, 0, 0 }" ); return rect; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: rect.x = lua_tonumber( L, -1 ); break; case 1: rect.y = lua_tonumber( L, -1 ); break; case 2: rect.width = lua_tonumber( L, -1 ); break; case 3: rect.height = lua_tonumber( L, -1 ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) { rect.x = lua_tonumber( L, -1 ); } else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) { rect.y = lua_tonumber( L, -1 ); } else if ( strcmp( "width", (char*)lua_tostring( L, -2 ) ) == 0 ) { rect.width = lua_tonumber( L, -1 ); } else if ( strcmp( "height", (char*)lua_tostring( L, -2 ) ) == 0 ) { rect.height = lua_tonumber( L, -1 ); } } } i++; lua_pop( L, 1 ); } return rect; } Quaternion uluaGetQuaternion( lua_State *L ) { Quaternion quaternion = { 0.0f, 0.0f, 0.0f, 0.0f }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong quaternion value. Returning { 0, 0, 0, 0 }" ); return quaternion; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: quaternion.x = lua_tonumber( L, -1 ); break; case 1: quaternion.y = lua_tonumber( L, -1 ); break; case 2: quaternion.z = lua_tonumber( L, -1 ); break; case 3: quaternion.w = lua_tonumber( L, -1 ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) { quaternion.x = lua_tonumber( L, -1 ); } else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) { quaternion.y = lua_tonumber( L, -1 ); } else if ( strcmp( "z", (char*)lua_tostring( L, -2 ) ) == 0 ) { quaternion.z = lua_tonumber( L, -1 ); } else if ( strcmp( "w", (char*)lua_tostring( L, -2 ) ) == 0 ) { quaternion.w = lua_tonumber( L, -1 ); } } } i++; lua_pop( L, 1 ); } return quaternion; } Matrix uluaGetMatrix( lua_State *L ) { Matrix matrix = { 0.0f }; float m[4][4]; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong matrix value. Returning MatrixIdentity." ); return MatrixIdentity(); } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_istable( L, -1 ) ) { int t2 = lua_gettop( L ), j = 0; lua_pushnil( L ); while ( lua_next( L, t2 ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { m[i][j] = lua_tonumber( L, -1 ); } j++; lua_pop( L, 1 ); } } i++; lua_pop( L, 1 ); } matrix.m0 = m[0][0]; matrix.m1 = m[0][1]; matrix.m2 = m[0][2]; matrix.m3 = m[0][3]; matrix.m4 = m[1][0]; matrix.m5 = m[1][1]; matrix.m6 = m[1][2]; matrix.m7 = m[1][3]; matrix.m8 = m[2][0]; matrix.m9 = m[2][1]; matrix.m10 = m[2][2]; matrix.m11 = m[2][3]; matrix.m12 = m[3][0]; matrix.m13 = m[3][1]; matrix.m14 = m[3][2]; matrix.m15 = m[3][3]; return matrix; } BoundingBox uluaGetBoundingBox( lua_State *L ) { BoundingBox box = { .min = { 0.0, 0.0, 0.0 }, .max = { 0.0, 0.0, 0.0 } }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong boundingbox value. Returning { min{ 0, 0, 0 }, max{ 0, 0, 0 } }." ); return box; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: box.min = uluaGetVector3( L ); break; case 1: box.max = uluaGetVector3( L ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "min", (char*)lua_tostring( L, -2 ) ) == 0 ) { box.min = uluaGetVector3( L ); } else if ( strcmp( "max", (char*)lua_tostring( L, -2 ) ) == 0 ) { box.max = uluaGetVector3( L ); } } i++; lua_pop( L, 1 ); } } return box; } Ray uluaGetRay( lua_State *L ) { Ray ray = { .position = { 0.0, 0.0, 0.0 }, .direction = { 0.0, 0.0, 0.0 } }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong ray value. Returning { position{ 0, 0, 0 }, direction{ 0, 0, 0 } }." ); return ray; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: ray.position = uluaGetVector3( L ); break; case 1: ray.direction = uluaGetVector3( L ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "position", (char*)lua_tostring( L, -2 ) ) == 0 ) { ray.position = uluaGetVector3( L ); } else if ( strcmp( "direction", (char*)lua_tostring( L, -2 ) ) == 0 ) { ray.direction = uluaGetVector3( L ); } } i++; lua_pop( L, 1 ); } } return ray; } NPatchInfo uluaGetNPatchInfo( lua_State *L ) { NPatchInfo npatch = { .source = { 0.0, 0.0, 0.0, 0.0 }, .left = 0, .top = 0, .right = 0, .bottom = 0, .layout = NPATCH_NINE_PATCH }; if ( !lua_istable( L, -1 ) ) { TraceLog( LOG_WARNING, "%s", "Error. Wrong ray value. Returning { source = { 0.0, 0.0, 0.0, 0.0 }, left = 0, top = 0, right = 0, bottom = 0, layout = NPATCH_NINE_PATCH }." ); return npatch; } int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { if ( lua_isnumber( L, -1 ) ) { if ( lua_isnumber( L, -2 ) ) { switch ( i ) { case 0: npatch.source = uluaGetRectangle( L ); break; case 1: npatch.left = lua_tointeger( L, -1 ); break; case 2: npatch.top = lua_tointeger( L, -1 ); break; case 3: npatch.right = lua_tointeger( L, -1 ); break; case 4: npatch.bottom = lua_tointeger( L, -1 ); break; case 5: npatch.layout = lua_tointeger( L, -1 ); break; default: break; } } else if ( lua_isstring( L, -2 ) ) { if ( strcmp( "source", (char*)lua_tostring( L, -2 ) ) == 0 ) { npatch.source = uluaGetRectangle( L ); } else if ( strcmp( "left", (char*)lua_tostring( L, -2 ) ) == 0 ) { npatch.left = lua_tointeger( L, -1 ); } else if ( strcmp( "top", (char*)lua_tostring( L, -2 ) ) == 0 ) { npatch.top = lua_tointeger( L, -1 ); } else if ( strcmp( "right", (char*)lua_tostring( L, -2 ) ) == 0 ) { npatch.right = lua_tointeger( L, -1 ); } else if ( strcmp( "bottom", (char*)lua_tostring( L, -2 ) ) == 0 ) { npatch.bottom = lua_tointeger( L, -1 ); } else if ( strcmp( "layout", (char*)lua_tostring( L, -2 ) ) == 0 ) { npatch.layout = lua_tointeger( L, -1 ); } } i++; lua_pop( L, 1 ); } } return npatch; } void uluaPushColor( lua_State *L, Color color ) { lua_createtable( L, 3, 0 ); lua_pushnumber( L, color.r ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, color.g ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, color.b ); lua_rawseti( L, -2, 3 ); lua_pushnumber( L, color.a ); lua_rawseti( L, -2, 4 ); } void uluaPushVector2( lua_State *L, Vector2 vector ) { lua_createtable( L, 2, 0 ); lua_pushnumber( L, vector.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, vector.y ); lua_rawseti( L, -2, 2 ); } void uluaPushVector3( lua_State *L, Vector3 vector ) { lua_createtable( L, 3, 0 ); lua_pushnumber( L, vector.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, vector.y ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, vector.z ); lua_rawseti( L, -2, 3 ); } void uluaPushVector4( lua_State *L, Vector4 vector ) { lua_createtable( L, 4, 0 ); lua_pushnumber( L, vector.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, vector.y ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, vector.z ); lua_rawseti( L, -2, 3 ); lua_pushnumber( L, vector.w ); lua_rawseti( L, -2, 4 ); } void uluaPushRectangle( lua_State *L, Rectangle rect ) { lua_createtable( L, 4, 0 ); lua_pushnumber( L, rect.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, rect.y ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, rect.width ); lua_rawseti( L, -2, 3 ); lua_pushnumber( L, rect.height ); lua_rawseti( L, -2, 4 ); } void uluaPushQuaternion( lua_State *L, Quaternion quaternion ) { lua_createtable( L, 4, 0 ); lua_pushnumber( L, quaternion.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, quaternion.y ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, quaternion.z ); lua_rawseti( L, -2, 3 ); lua_pushnumber( L, quaternion.w ); lua_rawseti( L, -2, 4 ); } void uluaPushMatrix( lua_State *L, Matrix matrix ) { lua_createtable( L, 4, 0 ); lua_createtable( L, 4, 0 ); lua_pushnumber( L, matrix.m0 ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, matrix.m1 ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, matrix.m2 ); lua_rawseti( L, -2, 3 ); lua_pushnumber( L, matrix.m3 ); lua_rawseti( L, -2, 4 ); lua_rawseti( L, -2, 1 ); lua_createtable( L, 4, 0 ); lua_pushnumber( L, matrix.m4 ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, matrix.m5 ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, matrix.m6 ); lua_rawseti( L, -2, 3 ); lua_pushnumber( L, matrix.m7 ); lua_rawseti( L, -2, 4 ); lua_rawseti( L, -2, 2 ); lua_createtable( L, 4, 0 ); lua_pushnumber( L, matrix.m8 ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, matrix.m9 ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, matrix.m10 ); lua_rawseti( L, -2, 3 ); lua_pushnumber( L, matrix.m11 ); lua_rawseti( L, -2, 4 ); lua_rawseti( L, -2, 3 ); lua_createtable( L, 4, 0 ); lua_pushnumber( L, matrix.m12 ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, matrix.m13 ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, matrix.m14 ); lua_rawseti( L, -2, 3 ); lua_pushnumber( L, matrix.m15 ); lua_rawseti( L, -2, 4 ); lua_rawseti( L, -2, 4 ); } void uluaPushRay( lua_State *L, Ray ray ) { lua_createtable( L, 2, 0 ); lua_createtable( L, 3, 0 ); lua_pushnumber( L, ray.position.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, ray.position.y ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, ray.position.z ); lua_rawseti( L, -2, 3 ); lua_rawseti( L, -2, 1 ); lua_createtable( L, 3, 0 ); lua_pushnumber( L, ray.direction.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, ray.direction.y ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, ray.direction.z ); lua_rawseti( L, -2, 3 ); lua_rawseti( L, -2, 2 ); } void uluaPushRayCollision( lua_State *L, RayCollision rayCol ) { lua_createtable( L, 4, 0 ); lua_pushboolean( L, rayCol.hit ); lua_setfield( L, -2, "hit" ); lua_pushnumber( L, rayCol.distance ); lua_setfield( L, -2, "distance" ); uluaPushVector3( L, rayCol.point ); lua_setfield( L, -2, "point" ); uluaPushVector3( L, rayCol.normal ); lua_setfield( L, -2, "normal" ); } void uluaPushBoundingBox( lua_State *L, BoundingBox box ) { lua_createtable( L, 2, 0 ); lua_createtable( L, 3, 0 ); lua_pushnumber( L, box.min.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, box.min.y ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, box.min.z ); lua_rawseti( L, -2, 3 ); lua_rawseti( L, -2, 1 ); lua_createtable( L, 3, 0 ); lua_pushnumber( L, box.max.x ); lua_rawseti( L, -2, 1 ); lua_pushnumber( L, box.max.y ); lua_rawseti( L, -2, 2 ); lua_pushnumber( L, box.max.z ); lua_rawseti( L, -2, 3 ); lua_rawseti( L, -2, 2 ); } int uluaGetTableLen( lua_State *L ) { int t = lua_gettop( L ), i = 0; lua_pushnil( L ); while ( lua_next( L, t ) != 0 ) { i++; lua_pop( L, 1 ); } return i; }