aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2016-08-04 13:40:53 +0200
committerraysan5 <raysan5@gmail.com>2016-08-04 13:40:53 +0200
commit80789e6140fd86a8063ff13e4e8db9dccdff804d (patch)
tree60df1d6fce8850900a24244692ad8287c35395e7
parent055d50134567474224f050dc014f6158d496026e (diff)
downloadraylib-80789e6140fd86a8063ff13e4e8db9dccdff804d.tar.gz
raylib-80789e6140fd86a8063ff13e4e8db9dccdff804d.zip
Updated Lua binding
-rw-r--r--src/rlua.h692
1 files changed, 574 insertions, 118 deletions
diff --git a/src/rlua.h b/src/rlua.h
index ae899945..76a79c7c 100644
--- a/src/rlua.h
+++ b/src/rlua.h
@@ -15,7 +15,7 @@
* local x2 = rec.x + rec.width
*
* The following types:
-* Image, Texture2D, SpriteFont
+* Image, Texture2D, RenderTexture2D, SpriteFont
* are immutable, and you can only read their non-pointer arguments (e.g. sprfnt.size).
*
* All other object types are opaque, that is, you cannot access or
@@ -126,9 +126,11 @@ RLUADEF void CloseLuaDevice(void); // De-initialize Lua system
#define LuaPush_SpriteFont(L, sf) LuaPushOpaqueTypeWithMetatable(L, sf, SpriteFont)
#define LuaPush_Mesh(L, vd) LuaPushOpaqueType(L, vd)
#define LuaPush_Shader(L, s) LuaPushOpaqueType(L, s)
+#define LuaPush_Light(L, light) LuaPushOpaqueType(L, light)
#define LuaPush_Sound(L, snd) LuaPushOpaqueType(L, snd)
#define LuaPush_Wave(L, wav) LuaPushOpaqueType(L, wav)
#define LuaPush_Music(L, mus) LuaPushOpaqueType(L, mus)
+#define LuaPush_AudioStream(L, aud) LuaPushOpaqueType(L, aud)
#define LuaGetArgument_string luaL_checkstring
#define LuaGetArgument_int (int)luaL_checkinteger
@@ -142,9 +144,11 @@ RLUADEF void CloseLuaDevice(void); // De-initialize Lua system
#define LuaGetArgument_SpriteFont(L, sf) *(SpriteFont*)LuaGetArgumentOpaqueTypeWithMetatable(L, sf, "SpriteFont")
#define LuaGetArgument_Mesh(L, vd) *(Mesh*)LuaGetArgumentOpaqueType(L, vd)
#define LuaGetArgument_Shader(L, s) *(Shader*)LuaGetArgumentOpaqueType(L, s)
+#define LuaGetArgument_Light(L, light) *(Light*)LuaGetArgumentOpaqueType(L, light)
#define LuaGetArgument_Sound(L, snd) *(Sound*)LuaGetArgumentOpaqueType(L, snd)
#define LuaGetArgument_Wave(L, wav) *(Wave*)LuaGetArgumentOpaqueType(L, wav)
#define LuaGetArgument_Music(L, mus) *(Music*)LuaGetArgumentOpaqueType(L, mus)
+#define LuaGetArgument_AudioStream(L, aud) *(AudioStream*)LuaGetArgumentOpaqueType(L, aud)
#define LuaPushOpaqueType(L, str) LuaPushOpaque(L, &str, sizeof(str))
#define LuaPushOpaqueTypeWithMetatable(L, str, meta) LuaPushOpaqueWithMetatable(L, &str, sizeof(str), #meta)
@@ -263,7 +267,18 @@ static int LuaIndexTexture2D(lua_State* L)
return 1;
}
-// TODO: Build opaque metatable for RenderTexture2D?
+static int LuaIndexRenderTexture2D(lua_State* L)
+{
+ RenderTexture2D img = LuaGetArgument_RenderTexture2D(L, 1);
+ const char *key = luaL_checkstring(L, 2);
+ if (!strcmp(key, "texture"))
+ LuaPush_Texture2D(L, img.texture);
+ else if (!strcmp(key, "depth"))
+ LuaPush_Texture2D(L, img.depth);
+ else
+ return 0;
+ return 1;
+}
static int LuaIndexSpriteFont(lua_State* L)
{
@@ -292,13 +307,11 @@ static void LuaBuildOpaqueMetatables(void)
lua_setfield(L, -2, "__index");
lua_pop(L, 1);
- // TODO: Build opaque metatable for RenderTexture2D?
- /*
luaL_newmetatable(L, "RenderTexture2D");
lua_pushcfunction(L, &LuaIndexRenderTexture2D);
lua_setfield(L, -2, "__index");
lua_pop(L, 1);
- */
+
luaL_newmetatable(L, "SpriteFont");
lua_pushcfunction(L, &LuaIndexSpriteFont);
lua_setfield(L, -2, "__index");
@@ -403,10 +416,6 @@ static Camera2D LuaGetArgument_Camera2D(lua_State* L, int index)
return result;
}
-// TODO: LightData, *Light
-// TODO: MusicData *Music;
-// TODO: AudioStream
-
static BoundingBox LuaGetArgument_BoundingBox(lua_State* L, int index)
{
BoundingBox result;
@@ -649,6 +658,23 @@ static int lua_Vector3(lua_State* L)
return 1;
}
+static int lua_Quaternion(lua_State* L)
+{
+ LuaPush_Quaternion(L, (Quaternion) { (float)luaL_checknumber(L, 1), (float)luaL_checknumber(L, 2), (float)luaL_checknumber(L, 3), (float)luaL_checknumber(L, 4) });
+ return 1;
+}
+
+/*
+static int lua_Matrix(lua_State* L)
+{
+ LuaPush_Matrix(L, (Matrix) { (float)luaL_checknumber(L, 1), (float)luaL_checknumber(L, 2), (float)luaL_checknumber(L, 3), (float)luaL_checknumber(L, 4),
+ (float)luaL_checknumber(L, 5), (float)luaL_checknumber(L, 6), (float)luaL_checknumber(L, 7), (float)luaL_checknumber(L, 8),
+ (float)luaL_checknumber(L, 9), (float)luaL_checknumber(L, 10), (float)luaL_checknumber(L, 11), (float)luaL_checknumber(L, 12),
+ (float)luaL_checknumber(L, 13), (float)luaL_checknumber(L, 14), (float)luaL_checknumber(L, 15), (float)luaL_checknumber(L, 16) });
+ return 1;
+}
+*/
+
static int lua_Rectangle(lua_State* L)
{
LuaPush_Rectangle(L, (Rectangle) { (int)luaL_checkinteger(L, 1), (int)luaL_checkinteger(L, 2), (int)luaL_checkinteger(L, 3), (int)luaL_checkinteger(L, 4) });
@@ -663,6 +689,14 @@ static int lua_Ray(lua_State* L)
return 1;
}
+static int lua_BoundingBox(lua_State* L)
+{
+ Vector3 min = LuaGetArgument_Vector3(L, 1);
+ Vector3 max = LuaGetArgument_Vector3(L, 2);
+ LuaPush_BoundingBox(L, (BoundingBox) { { min.x, min.y }, { max.x, max.y } });
+ return 1;
+}
+
static int lua_Camera(lua_State* L)
{
Vector3 pos = LuaGetArgument_Vector3(L, 1);
@@ -683,6 +717,22 @@ static int lua_Camera2D(lua_State* L)
return 1;
}
+/*
+// NOTE: does it make sense to have this constructor? Probably not...
+static int lua_Material(lua_State* L)
+{
+ Shader sdr = LuaGetArgument_Shader(L, 1);
+ Texture2D td = LuaGetArgument_Texture2D(L, 2);
+ Texture2D tn = LuaGetArgument_Texture2D(L, 3);
+ Texture2D ts = LuaGetArgument_Texture2D(L, 4);
+ Color cd = LuaGetArgument_Color(L, 5);
+ Color ca = LuaGetArgument_Color(L, 6);
+ Color cs = LuaGetArgument_Color(L, 7);
+ float gloss = LuaGetArgument_float(L, 8);
+ LuaPush_Material(L, (Material) { sdr, td, tn, ts cd, ca, cs, gloss });
+ return 1;
+}
+*/
/*************************************************************************************
* raylib Lua Functions Bindings
@@ -914,12 +964,47 @@ int lua_GetHexValue(lua_State* L)
return 1;
}
-// TODO:
-/*
-float *ColorToFloat(Color color); // Converts Color to float array and normalizes
-float *VectorToFloat(Vector3 vec); // Converts Vector3 to float array
-float *MatrixToFloat(Matrix mat); // Converts Matrix to float array
-*/
+int lua_ColorToFloat(lua_State* L)
+{
+ Color arg1 = LuaGetArgument_Color(L, 1);
+ float * result = ColorToFloat(arg1);
+ lua_createtable(L, 4, 0);
+ for (int i = 0; i < 4; i++)
+ {
+ lua_pushnumber(L, result[i]);
+ lua_rawseti(L, -2, i + 1);
+ }
+ free(result);
+ return 1;
+}
+
+int lua_VectorToFloat(lua_State* L)
+{
+ Vector3 arg1 = LuaGetArgument_Vector3(L, 1);
+ float * result = VectorToFloat(arg1);
+ lua_createtable(L, 3, 0);
+ for (int i = 0; i < 3; i++)
+ {
+ lua_pushnumber(L, result[i]);
+ lua_rawseti(L, -2, i + 1);
+ }
+ free(result);
+ return 1;
+}
+
+int lua_MatrixToFloat(lua_State* L)
+{
+ Matrix arg1 = LuaGetArgument_Matrix(L, 1);
+ float * result = MatrixToFloat(arg1);
+ lua_createtable(L, 16, 0);
+ for (int i = 0; i < 16; i++)
+ {
+ lua_pushnumber(L, result[i]);
+ lua_rawseti(L, -2, i + 1);
+ }
+ free(result);
+ return 1;
+}
int lua_GetRandomValue(lua_State* L)
{
@@ -1227,8 +1312,6 @@ int lua_IsGestureDetected(lua_State* L)
return 1;
}
-// TODO: void ProcessGestureEvent(GestureEvent event);
-
int lua_UpdateGestures(lua_State* L)
{
UpdateGestures();
@@ -1704,7 +1787,7 @@ int lua_LoadTexture(lua_State* L)
int lua_LoadTextureEx(lua_State* L)
{
- void * arg1 = LuaGetArgument_string(L, 1); // NOTE: getting argument as string
+ void * arg1 = (char *)LuaGetArgument_string(L, 1); // NOTE: getting argument as string
int arg2 = LuaGetArgument_int(L, 2);
int arg3 = LuaGetArgument_int(L, 3);
int arg4 = LuaGetArgument_int(L, 4);
@@ -1800,26 +1883,172 @@ int lua_ImageFormat(lua_State* L)
return 1;
}
-// TODO:
-/*
-void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp); // Dither image data to 16bpp or lower (Floyd-Steinberg dithering)
-Image ImageCopy(Image image); // Create an image duplicate (useful for transformations)
-void ImageCrop(Image *image, Rectangle crop); // Crop an image to a defined rectangle
-void ImageResize(Image *image, int newWidth, int newHeight); // Resize and image (bilinear filtering)
-void ImageResizeNN(Image *image,int newWidth,int newHeight); // Resize and image (Nearest-Neighbor scaling algorithm)
-Image ImageText(const char *text, int fontSize, Color color); // Create an image from text (default font)
-Image ImageTextEx(SpriteFont font, const char *text, int fontSize, int spacing, Color tint); // Create an image from text (custom sprite font)
-void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec); // Draw a source image within a destination image
-void ImageDrawText(Image *dst, Vector2 position, const char *text, int fontSize, Color color); // Draw text (default font) within an image (destination)
-void ImageDrawTextEx(Image *dst, Vector2 position, SpriteFont font, const char *text, int fontSize, int spacing, Color color); // Draw text (custom sprite font) within an image (destination)
-void ImageFlipVertical(Image *image); // Flip image vertically
-void ImageFlipHorizontal(Image *image); // Flip image horizontally
-void ImageColorTint(Image *image, Color color); // Modify image color: tint
-void ImageColorInvert(Image *image); // Modify image color: invert
-void ImageColorGrayscale(Image *image); // Modify image color: grayscale
-void ImageColorContrast(Image *image, float contrast); // Modify image color: contrast (-100 to 100)
-void ImageColorBrightness(Image *image, int brightness); // Modify image color: brightness (-255 to 255)
-*/
+int lua_ImageDither(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ int arg2 = LuaGetArgument_int(L, 2);
+ int arg3 = LuaGetArgument_int(L, 3);
+ int arg4 = LuaGetArgument_int(L, 4);
+ int arg5 = LuaGetArgument_int(L, 5);
+ ImageDither(&arg1, arg2, arg3, arg4, arg5);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageCopy(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ Image result = ImageCopy(arg1);
+ LuaPush_Image(L, result);
+ return 1;
+}
+
+int lua_ImageCrop(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ Rectangle arg2 = LuaGetArgument_Rectangle(L, 2);
+ ImageCrop(&arg1, arg2);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageResize(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ int arg2 = LuaGetArgument_int(L, 2);
+ int arg3 = LuaGetArgument_int(L, 3);
+ ImageResize(&arg1, arg2, arg3);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageResizeNN(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ int arg2 = LuaGetArgument_int(L, 2);
+ int arg3 = LuaGetArgument_int(L, 3);
+ ImageResizeNN(&arg1, arg2, arg3);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageText(lua_State* L)
+{
+ const char * arg1 = LuaGetArgument_string(L, 1);
+ int arg2 = LuaGetArgument_int(L, 2);
+ Color arg3 = LuaGetArgument_Color(L, 3);
+ Image result = ImageText(arg1, arg2, arg3);
+ LuaPush_Image(L, result);
+ return 1;
+}
+
+int lua_ImageTextEx(lua_State* L)
+{
+ SpriteFont arg1 = LuaGetArgument_SpriteFont(L, 1);
+ const char * arg2 = LuaGetArgument_string(L, 2);
+ int arg3 = LuaGetArgument_int(L, 3);
+ int arg4 = LuaGetArgument_int(L, 4);
+ Color arg5 = LuaGetArgument_Color(L, 5);
+ Image result = ImageTextEx(arg1, arg2, arg3, arg4, arg5);
+ LuaPush_Image(L, result);
+ return 1;
+}
+
+int lua_ImageDraw(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ Image arg2 = LuaGetArgument_Image(L, 2);
+ Rectangle arg3 = LuaGetArgument_Rectangle(L, 3);
+ Rectangle arg4 = LuaGetArgument_Rectangle(L, 4);
+ ImageDraw(&arg1, arg2, arg3, arg4);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageDrawText(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ Vector2 arg2 = LuaGetArgument_Vector2(L, 2);
+ const char * arg3 = LuaGetArgument_string(L, 3);
+ int arg4 = LuaGetArgument_int(L, 4);
+ Color arg5 = LuaGetArgument_Color(L, 5);
+ ImageDrawText(&arg1, arg2, arg3, arg4, arg5);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageDrawTextEx(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ Vector2 arg2 = LuaGetArgument_Vector2(L, 2);
+ SpriteFont arg3 = LuaGetArgument_SpriteFont(L, 3);
+ const char * arg4 = LuaGetArgument_string(L, 4);
+ int arg5 = LuaGetArgument_int(L, 5);
+ int arg6 = LuaGetArgument_int(L, 6);
+ Color arg7 = LuaGetArgument_Color(L, 7);
+ ImageDrawTextEx(&arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageFlipVertical(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ ImageFlipVertical(&arg1);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageFlipHorizontal(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ ImageFlipHorizontal(&arg1);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageColorTint(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ Color arg2 = LuaGetArgument_Color(L, 2);
+ ImageColorTint(&arg1, arg2);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageColorInvert(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ ImageColorInvert(&arg1);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageColorGrayscale(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ ImageColorGrayscale(&arg1);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageColorContrast(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ float arg2 = LuaGetArgument_float(L, 2);
+ ImageColorContrast(&arg1, arg2);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
+
+int lua_ImageColorBrightness(lua_State* L)
+{
+ Image arg1 = LuaGetArgument_Image(L, 1);
+ int arg2 = LuaGetArgument_int(L, 2);
+ ImageColorBrightness(&arg1, arg2);
+ LuaPush_Image(L, arg1);
+ return 1;
+}
int lua_GenTextureMipmaps(lua_State* L)
{
@@ -1831,7 +2060,7 @@ int lua_GenTextureMipmaps(lua_State* L)
int lua_UpdateTexture(lua_State* L)
{
Texture2D arg1 = LuaGetArgument_Texture2D(L, 1);
- void * arg2 = LuaGetArgument_string(L, 2); // NOTE: Getting (void *) as string
+ void * arg2 = (char *)LuaGetArgument_string(L, 2); // NOTE: Getting (void *) as string?
UpdateTexture(arg1, arg2);
return 0;
}
@@ -2097,12 +2326,27 @@ int lua_DrawGizmo(lua_State* L)
return 0;
}
-// TODO:
-/*
-void DrawLight(Light light); // Draw light in 3D world
-void Draw3DLine(Vector3 startPos, Vector3 endPos, Color color); // Draw a line in 3D world space
-void Draw3DCircle(Vector3 center, float radius, float rotationAngle, Vector3 rotation, Color color); // Draw a circle in 3D world space
-*/
+// TODO: DrawLight(Light light);
+
+int lua_Draw3DLine(lua_State* L)
+{
+ Vector3 arg1 = LuaGetArgument_Vector3(L, 1);
+ Vector3 arg2 = LuaGetArgument_Vector3(L, 2);
+ Color arg3 = LuaGetArgument_Color(L, 3);
+ Draw3DLine(arg1, arg2, arg3);
+ return 0;
+}
+
+int lua_Draw3DCircle(lua_State* L)
+{
+ Vector3 arg1 = LuaGetArgument_Vector3(L, 1);
+ float arg2 = LuaGetArgument_float(L, 2);
+ float arg3 = LuaGetArgument_float(L, 3);
+ Vector3 arg4 = LuaGetArgument_Vector3(L, 4);
+ Color arg5 = LuaGetArgument_Color(L, 5);
+ Draw3DCircle(arg1, arg2, arg3, arg4, arg5);
+ return 0;
+}
//------------------------------------------------------------------------------------
// raylib [models] module functions
@@ -2287,19 +2531,42 @@ int lua_CheckCollisionBoxSphere(lua_State* L)
{
BoundingBox arg1 = LuaGetArgument_BoundingBox(L, 1);
Vector3 arg2 = LuaGetArgument_Vector3(L, 2);
- float arg3 = LuaGetArgument_float(L, 4);
+ float arg3 = LuaGetArgument_float(L, 3);
bool result = CheckCollisionBoxSphere(arg1, arg2, arg3);
lua_pushboolean(L, result);
return 1;
}
-// TODO:
-/*
-bool CheckCollisionRaySphere(Ray ray, Vector3 spherePosition, float sphereRadius); // Detect collision between ray and sphere
-bool CheckCollisionRaySphereEx(Ray ray, Vector3 spherePosition, float sphereRadius, Vector3 *collisionPoint); // Detect collision between ray and sphere with extended parameters and collision point detection
-bool CheckCollisionRayBox(Ray ray, BoundingBox box); // Detect collision between ray and box
-Vector3 ResolveCollisionCubicmap(Image cubicmap, Vector3 mapPosition, Vector3 *playerPosition, float radius); // Detect collision of player radius with cubicmap
-*/
+int lua_CheckCollisionRaySphere(lua_State* L)
+{
+ Ray arg1 = LuaGetArgument_Ray(L, 1);
+ Vector3 arg2 = LuaGetArgument_Vector3(L, 2);
+ float arg3 = LuaGetArgument_float(L, 3);
+ bool result = CheckCollisionRaySphere(arg1, arg2, arg3);
+ lua_pushboolean(L, result);
+ return 1;
+}
+
+int lua_CheckCollisionRaySphereEx(lua_State* L)
+{
+ Ray arg1 = LuaGetArgument_Ray(L, 1);
+ Vector3 arg2 = LuaGetArgument_Vector3(L, 2);
+ float arg3 = LuaGetArgument_float(L, 3);
+ Vector3 arg4 = LuaGetArgument_Vector3(L, 4);
+ bool result = CheckCollisionRaySphereEx(arg1, arg2, arg3, &arg4);
+ lua_pushboolean(L, result);
+ LuaPush_Vector3(L, arg4);
+ return 2;
+}
+
+int lua_CheckCollisionRayBox(lua_State* L)
+{
+ Ray arg1 = LuaGetArgument_Ray(L, 1);
+ BoundingBox arg2 = LuaGetArgument_BoundingBox(L, 2);
+ bool result = CheckCollisionRayBox(arg1, arg2);
+ lua_pushboolean(L, result);
+ return 1;
+}
int lua_ResolveCollisionCubicmap(lua_State* L)
{
@@ -2431,23 +2698,55 @@ int lua_EndBlendMode(lua_State* L)
return 0;
}
-// TODO:
-//Light CreateLight(int type, Vector3 position, Color diffuse); // Create a new light, initialize it and add to pool
-//void DestroyLight(Light light); // Destroy a light and take it out of the list
+// TODO: Light CreateLight(int type, Vector3 position, Color diffuse);
+// TODO: void DestroyLight(Light light);
-// TODO:
-/*
//------------------------------------------------------------------------------------
// raylib [rlgl] module functions - VR experience
//------------------------------------------------------------------------------------
-void InitVrDevice(int vdDevice); // Init VR device
-void CloseVrDevice(void); // Close VR device
-void UpdateVrTracking(void); // Update VR tracking (position and orientation)
-void BeginVrDrawing(void); // Begin VR drawing configuration
-void EndVrDrawing(void); // End VR drawing process (and desktop mirror)
-bool IsVrDeviceReady(void); // Detect if VR device (or simulator) is ready
-void ToggleVrMode(void); // Enable/Disable VR experience (device or simulator)
-*/
+int lua_InitVrDevice(lua_State* L)
+{
+ int arg1 = LuaGetArgument_int(L, 1);
+ InitVrDevice(arg1);
+ return 0;
+}
+
+int lua_CloseVrDevice(lua_State* L)
+{
+ CloseVrDevice();
+ return 0;
+}
+
+int lua_UpdateVrTracking(lua_State* L)
+{
+ UpdateVrTracking();
+ return 0;
+}
+
+int lua_BeginVrDrawing(lua_State* L)
+{
+ BeginVrDrawing();
+ return 0;
+}
+
+int lua_EndVrDrawing(lua_State* L)
+{
+ EndVrDrawing();
+ return 0;
+}
+
+int lua_IsVrDeviceReady(lua_State* L)
+{
+ bool result = IsVrDeviceReady();
+ lua_pushboolean(L, result);
+ return 1;
+}
+
+int lua_ToggleVrMode(lua_State* L)
+{
+ ToggleVrMode();
+ return 0;
+}
//------------------------------------------------------------------------------------
// raylib [audio] module functions - Audio Loading and Playing
@@ -2570,20 +2869,21 @@ int lua_UnloadMusicStream(lua_State* L)
return 0;
}
-int lua_PlayMusicStream(lua_State* L)
+int lua_UpdateMusicStream(lua_State* L)
{
- Music arg1 = LuaGetArgument_Music(L, 1);
- PlayMusicStream(arg1);
+ Music arg1 = LuaGetArgument_Music(L, 1);
+ UpdateMusicStream(arg1);
return 0;
}
-int lua_UpdateMusicStream(lua_State* L)
+int lua_PlayMusicStream(lua_State* L)
{
- Music arg1 = LuaGetArgument_Music(L, 1);
- UpdateMusicStream(arg1);
+ Music arg1 = LuaGetArgument_Music(L, 1);
+ PlayMusicStream(arg1);
return 0;
}
+
int lua_StopMusicStream(lua_State* L)
{
Music arg1 = LuaGetArgument_Music(L, 1);
@@ -2621,6 +2921,14 @@ int lua_SetMusicVolume(lua_State* L)
return 0;
}
+int lua_SetMusicPitch(lua_State* L)
+{
+ Music arg1 = LuaGetArgument_Music(L, 1);
+ float arg2 = LuaGetArgument_float(L, 2);
+ SetMusicPitch(arg1, arg2);
+ return 0;
+}
+
int lua_GetMusicTimeLength(lua_State* L)
{
Music arg1 = LuaGetArgument_Music(L, 1);
@@ -2637,19 +2945,68 @@ int lua_GetMusicTimePlayed(lua_State* L)
return 1;
}
-// TODO:
-/*
-AudioStream InitAudioStream(unsigned int sampleRate,
- unsigned int sampleSize,
- unsigned int channels); // Init audio stream (to stream audio pcm data)
-void UpdateAudioStream(AudioStream stream, void *data, int numSamples); // Update audio stream buffers with data
-void CloseAudioStream(AudioStream stream); // Close audio stream and free memory
-bool IsAudioBufferProcessed(AudioStream stream); // Check if any audio stream buffers requires refill
-void PlayAudioStream(AudioStream stream); // Play audio stream
-void PauseAudioStream(AudioStream stream); // Pause audio stream
-void ResumeAudioStream(AudioStream stream); // Resume audio stream
-void StopAudioStream(AudioStream stream); // Stop audio stream
-*/
+int lua_InitAudioStream(lua_State* L)
+{
+ int arg1 = LuaGetArgument_int(L, 1);
+ int arg2 = LuaGetArgument_int(L, 2);
+ int arg3 = LuaGetArgument_int(L, 3);
+ AudioStream result = InitAudioStream(arg1, arg2, arg3);
+ LuaPush_AudioStream(L, result);
+ return 1;
+}
+
+int lua_CloseAudioStream(lua_State* L)
+{
+ AudioStream arg1 = LuaGetArgument_AudioStream(L, 1);
+ CloseAudioStream(arg1);
+ return 0;
+}
+
+int lua_UpdateAudioStream(lua_State* L)
+{
+ AudioStream arg1 = LuaGetArgument_AudioStream(L, 1);
+ void * arg2 = (char *)LuaGetArgument_string(L, 2);
+ int arg3 = LuaGetArgument_int(L, 3);
+ UpdateAudioStream(arg1, arg2, arg3);
+ return 0;
+}
+
+int lua_IsAudioBufferProcessed(lua_State* L)
+{
+ AudioStream arg1 = LuaGetArgument_AudioStream(L, 1);
+ bool result = IsAudioBufferProcessed(arg1);
+ lua_pushboolean(L, result);
+ return 1;
+}
+
+int lua_PlayAudioStream(lua_State* L)
+{
+ AudioStream arg1 = LuaGetArgument_AudioStream(L, 1);
+ PlayAudioStream(arg1);
+ return 0;
+}
+
+
+int lua_StopAudioStream(lua_State* L)
+{
+ AudioStream arg1 = LuaGetArgument_AudioStream(L, 1);
+ StopAudioStream(arg1);
+ return 0;
+}
+
+int lua_PauseAudioStream(lua_State* L)
+{
+ AudioStream arg1 = LuaGetArgument_AudioStream(L, 1);
+ PauseAudioStream(arg1);
+ return 0;
+}
+
+int lua_ResumeAudioStream(lua_State* L)
+{
+ AudioStream arg1 = LuaGetArgument_AudioStream(L, 1);
+ ResumeAudioStream(arg1);
+ return 0;
+}
//----------------------------------------------------------------------------------
// raylib [utils] module functions
@@ -3114,29 +3471,49 @@ int lua_QuaternionTransform(lua_State* L)
// raylib Functions (and data types) list
static luaL_Reg raylib_functions[] = {
- REG(Color)
+
+ // Register non-opaque data types
+ REG(Color)
REG(Vector2)
REG(Vector3)
+ //REG(Matrix)
+ REG(Quaternion)
REG(Rectangle)
REG(Ray)
REG(Camera)
- // TODO: Additional structs
+ REG(Camera2D)
+ REG(BoundingBox)
+ //REG(Material)
- // TODO: Review registered functions
+ // Register functions
REG(InitWindow)
REG(CloseWindow)
REG(WindowShouldClose)
REG(IsWindowMinimized)
REG(ToggleFullscreen)
-
REG(GetScreenWidth)
REG(GetScreenHeight)
+
+ REG(ShowCursor)
+ REG(HideCursor)
+ REG(IsCursorHidden)
+ REG(EnableCursor)
+ REG(DisableCursor)
+
REG(ClearBackground)
REG(BeginDrawing)
REG(EndDrawing)
+ REG(Begin2dMode)
+ REG(End2dMode)
REG(Begin3dMode)
REG(End3dMode)
+ REG(BeginTextureMode)
+ REG(EndTextureMode)
+
REG(GetMouseRay)
+ REG(GetWorldToScreen)
+ REG(GetCameraMatrix)
+
#if defined(PLATFORM_WEB)
REG(SetDrawingLoop)
#else
@@ -3144,21 +3521,39 @@ static luaL_Reg raylib_functions[] = {
#endif
REG(GetFPS)
REG(GetFrameTime)
+
REG(GetColor)
REG(GetHexValue)
+ REG(ColorToFloat)
+ REG(VectorToFloat)
+ REG(MatrixToFloat)
REG(GetRandomValue)
REG(Fade)
REG(SetConfigFlags)
REG(ShowLogo)
+
REG(IsFileDropped)
//REG(*GetDroppedFiles)
REG(ClearDroppedFiles)
+ REG(StorageSaveValue)
+ REG(StorageLoadValue)
+
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI) || defined(PLATFORM_WEB)
REG(IsKeyPressed)
REG(IsKeyDown)
REG(IsKeyReleased)
REG(IsKeyUp)
REG(GetKeyPressed)
+ REG(SetExitKey)
+
+ REG(IsGamepadAvailable)
+ REG(GetGamepadAxisMovement)
+ REG(IsGamepadButtonPressed)
+ REG(IsGamepadButtonDown)
+ REG(IsGamepadButtonReleased)
+ REG(IsGamepadButtonUp)
+#endif
+
REG(IsMouseButtonPressed)
REG(IsMouseButtonDown)
REG(IsMouseButtonReleased)
@@ -3168,50 +3563,41 @@ static luaL_Reg raylib_functions[] = {
REG(GetMousePosition)
REG(SetMousePosition)
REG(GetMouseWheelMove)
- REG(ShowCursor)
- REG(HideCursor)
- REG(IsCursorHidden)
-#endif
-
-#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
- REG(IsGamepadAvailable)
-
- REG(IsGamepadButtonPressed)
- REG(IsGamepadButtonDown)
- REG(IsGamepadButtonReleased)
- REG(IsGamepadButtonUp)
-#endif
-
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)
REG(GetTouchX)
REG(GetTouchY)
REG(GetTouchPosition)
-#if defined(PLATFORM_WEB)
- REG(InitGesturesSystem)
-#elif defined(PLATFORM_ANDROID)
- //REG(InitGesturesSystem)
+
+#if defined(PLATFORM_ANDROID)
+ REG(IsButtonPressed)
+ REG(IsButtonDown)
+ REG(IsButtonReleased)
#endif
- REG(UpdateGestures)
- REG(IsGestureDetected)
- REG(GetGestureType)
+
REG(SetGesturesEnabled)
- REG(GetGestureDragIntensity)
- REG(GetGestureDragAngle)
- REG(GetGestureDragVector)
+ REG(IsGestureDetected)
+ //REG(ProcessGestureEvent)
+ REG(UpdateGestures)
+ REG(GetTouchPointsCount)
+ REG(GetGestureDetected)
REG(GetGestureHoldDuration)
- REG(GetGesturePinchDelta)
+ REG(GetGestureDragVector)
+ REG(GetGestureDragAngle)
+ REG(GetGesturePinchVector)
REG(GetGesturePinchAngle)
-#endif
+
REG(SetCameraMode)
REG(UpdateCamera)
REG(UpdateCameraPlayer)
REG(SetCameraPosition)
REG(SetCameraTarget)
+ REG(SetCameraFovy)
+
REG(SetCameraPanControl)
REG(SetCameraAltControl)
REG(SetCameraSmoothZoomControl)
REG(SetCameraMoveControls)
REG(SetCameraMouseSensitivity)
+
REG(DrawPixel)
REG(DrawPixelV)
REG(DrawLine)
@@ -3230,6 +3616,7 @@ static luaL_Reg raylib_functions[] = {
REG(DrawPoly)
REG(DrawPolyEx)
REG(DrawPolyExLines)
+
REG(CheckCollisionRecs)
REG(CheckCollisionCircles)
REG(CheckCollisionCircleRec)
@@ -3237,25 +3624,48 @@ static luaL_Reg raylib_functions[] = {
REG(CheckCollisionPointRec)
REG(CheckCollisionPointCircle)
REG(CheckCollisionPointTriangle)
+
REG(LoadImage)
REG(LoadImageEx)
REG(LoadImageRaw)
REG(LoadImageFromRES)
REG(LoadTexture)
+ REG(LoadTextureEx)
REG(LoadTextureFromRES)
REG(LoadTextureFromImage)
+ REG(LoadRenderTexture)
REG(UnloadImage)
REG(UnloadTexture)
REG(GetImageData)
REG(GetTextureData)
REG(ImageToPOT)
REG(ImageFormat)
+ REG(ImageDither)
+ REG(ImageCopy)
+ REG(ImageCrop)
+ REG(ImageResize)
+ REG(ImageResizeNN)
+ REG(ImageText)
+ REG(ImageTextEx)
+ REG(ImageDraw)
+ REG(ImageDrawText)
+ REG(ImageDrawTextEx)
+ REG(ImageFlipVertical)
+ REG(ImageFlipHorizontal)
+ REG(ImageColorTint)
+ REG(ImageColorInvert)
+ REG(ImageColorGrayscale)
+ REG(ImageColorContrast)
+ REG(ImageColorBrightness)
REG(GenTextureMipmaps)
+ REG(UpdateTexture)
+
REG(DrawTexture)
REG(DrawTextureV)
REG(DrawTextureEx)
REG(DrawTextureRec)
REG(DrawTexturePro)
+
REG(GetDefaultFont)
REG(LoadSpriteFont)
REG(UnloadSpriteFont)
@@ -3264,6 +3674,9 @@ static luaL_Reg raylib_functions[] = {
REG(MeasureText)
REG(MeasureTextEx)
REG(DrawFPS)
+ //REG(FormatText)
+ //REG(SubText)
+
REG(DrawCube)
REG(DrawCubeV)
REG(DrawCubeWires)
@@ -3277,49 +3690,92 @@ static luaL_Reg raylib_functions[] = {
REG(DrawRay)
REG(DrawGrid)
REG(DrawGizmo)
+
REG(LoadModel)
REG(LoadModelEx)
+ REG(LoadModelFromRES)
REG(LoadHeightmap)
REG(LoadCubicmap)
REG(UnloadModel)
+ //REG(GenMesh*) // Not ready yet...
+
REG(DrawModel)
REG(DrawModelEx)
REG(DrawModelWires)
+ REG(DrawModelWiresEx)
REG(DrawBillboard)
REG(DrawBillboardRec)
+ REG(CalculateBoundingBox)
REG(CheckCollisionSpheres)
REG(CheckCollisionBoxes)
REG(CheckCollisionBoxSphere)
+ REG(CheckCollisionRaySphere)
+ REG(CheckCollisionRaySphereEx)
+ REG(CheckCollisionRayBox)
REG(ResolveCollisionCubicmap)
+
REG(LoadShader)
REG(UnloadShader)
+ REG(GetDefaultShader)
+ REG(GetStandardShader)
+ REG(GetDefaultTexture)
REG(GetShaderLocation)
REG(SetShaderValue)
REG(SetShaderValuei)
-
+ REG(SetShaderValueMatrix)
+ REG(SetMatrixProjection)
+ REG(SetMatrixModelview)
+ REG(BeginShaderMode)
+ REG(EndShaderMode)
REG(BeginBlendMode)
REG(EndBlendMode)
+ //REG(CreateLight)
+ //REG(DestroyLight)
+
+ REG(InitVrDevice)
+ REG(CloseVrDevice)
+ REG(UpdateVrTracking)
+ REG(BeginVrDrawing)
+ REG(EndVrDrawing)
+ REG(IsVrDeviceReady)
+ REG(ToggleVrMode)
+
REG(InitAudioDevice)
REG(CloseAudioDevice)
+ REG(IsAudioDeviceReady)
REG(LoadSound)
REG(LoadSoundFromWave)
REG(LoadSoundFromRES)
REG(UnloadSound)
REG(PlaySound)
REG(PauseSound)
+ REG(ResumeSound)
REG(StopSound)
REG(IsSoundPlaying)
REG(SetSoundVolume)
REG(SetSoundPitch)
- REG(PlayMusicStream)
+
+ REG(LoadMusicStream)
+ REG(UnloadMusicStream)
REG(UpdateMusicStream)
+ REG(PlayMusicStream)
REG(StopMusicStream)
REG(PauseMusicStream)
REG(ResumeMusicStream)
REG(IsMusicPlaying)
REG(SetMusicVolume)
+ REG(SetMusicPitch)
REG(GetMusicTimeLength)
REG(GetMusicTimePlayed)
+
+ REG(InitAudioStream)
+ REG(UpdateAudioStream)
+ REG(CloseAudioStream)
+ REG(IsAudioBufferProcessed)
+ REG(PlayAudioStream)
+ REG(PauseAudioStream)
+ REG(ResumeAudioStream)
+ REG(StopAudioStream)
/// Math and util
REG(DecompressData)