Skip to content

Commit 33f8125

Browse files
committed
Add bindings
1 parent 6ad77ab commit 33f8125

File tree

2 files changed

+88
-13
lines changed

2 files changed

+88
-13
lines changed

src/core.h

Lines changed: 81 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -272,14 +272,6 @@ static Janet cfun_SetClipboardText(int32_t argc, Janet *argv) {
272272
return janet_wrap_nil();
273273
}
274274

275-
static Janet cfun_GetClipboardImage(int32_t argc, Janet *argv) {
276-
(void) argv;
277-
janet_fixarity(argc, 0);
278-
Image *image = janet_abstract(&AT_Image, sizeof(Image));
279-
*image = GetClipboardImage();
280-
return janet_wrap_abstract(image);
281-
}
282-
283275
static Janet cfun_EnableEventWaiting(int32_t argc, Janet *argv) {
284276
(void) argv;
285277
janet_fixarity(argc, 0);
@@ -923,6 +915,14 @@ static Janet cfun_EndScissorMode(int32_t argc, Janet *argv) {
923915
return janet_wrap_nil();
924916
}
925917

918+
static Janet cfun_GetClipboardImage(int32_t argc, Janet *argv) {
919+
(void) argv;
920+
janet_fixarity(argc, 0);
921+
Image *image = janet_abstract(&AT_Image, sizeof(Image));
922+
*image = GetClipboardImage();
923+
return janet_wrap_abstract(image);
924+
}
925+
926926
static Janet cfun_MakeDirectory(int32_t argc, Janet *argv) {
927927
janet_fixarity(argc, 1);
928928
const char *dirPath = janet_getcstring(argv, 0);
@@ -966,6 +966,49 @@ static Janet cfun_IsFileNameValid(int32_t argc, Janet *argv) {
966966
return janet_wrap_boolean(IsFileNameValid(filename));
967967
}
968968

969+
static Janet cfun_GetScreenToWorldRay(int32_t argc, Janet *argv) {
970+
janet_fixarity(argc, 2);
971+
Vector2 position = jaylib_unwrap_vec2(argv[0]);
972+
Camera *camera = jaylib_getcamera3d(argv, 1);
973+
Ray result = GetScreenToWorldRay(position, *camera);
974+
return jaylib_wrap_ray(result);
975+
}
976+
977+
static Janet cfun_GetScreenToWorldRayEx(int32_t argc, Janet *argv) {
978+
janet_fixarity(argc, 4);
979+
Vector2 position = jaylib_unwrap_vec2(argv[0]);
980+
Camera *camera = jaylib_getcamera3d(argv, 1);
981+
int width = janet_getinteger(argv, 2);
982+
int height = janet_getinteger(argv, 3);
983+
Ray result = GetScreenToWorldRayEx(position, *camera, width, height);
984+
return jaylib_wrap_ray(result);
985+
}
986+
987+
static Janet cfun_GetApplicationDirectory(int32_t argc, Janet *argv) {
988+
(void)argv;
989+
janet_fixarity(argc, 0);
990+
return janet_wrap_string(GetApplicationDirectory());
991+
}
992+
993+
static Janet cfun_LoadDirectoryFilesEx(int32_t argc, Janet *argv) {
994+
janet_fixarity(argc, 3);
995+
const char *basepath = janet_getcstring(argv, 0);
996+
const char *filter = janet_getcstring(argv, 1);
997+
bool scansubdirs = janet_getboolean(argv, 2);
998+
FilePathList files = LoadDirectoryFilesEx(basepath, filter, scansubdirs);
999+
JanetArray *array = janet_array(0);
1000+
for (int i = 0; i < files.count; ++i) {
1001+
janet_array_push(array, janet_cstringv(files.paths[i]));
1002+
}
1003+
return janet_wrap_array(array);
1004+
}
1005+
1006+
static Janet cfun_GetFileNameWithoutExt(int32_t argc, Janet *argv) {
1007+
janet_fixarity(argc, 1);
1008+
const char *filepath = janet_getcstring(argv, 0);
1009+
return janet_wrap_string(GetFileNameWithoutExt(filepath));
1010+
}
1011+
9691012
static JanetReg core_cfuns[] = {
9701013
{
9711014
"init-window", cfun_InitWindow,
@@ -1122,11 +1165,6 @@ static JanetReg core_cfuns[] = {
11221165
"(set-clipboard-text text)\n\n"
11231166
"Set clipboard text content"
11241167
},
1125-
{
1126-
"get-clipboard-image", cfun_GetClipboardImage,
1127-
"(get-clipboard-image)\n\n"
1128-
"Get clipboard image content"
1129-
},
11301168
{
11311169
"enable-event-waiting", cfun_EnableEventWaiting,
11321170
"(enable-event-waiting)\n\n"
@@ -1475,6 +1513,11 @@ static JanetReg core_cfuns[] = {
14751513
"(end-scissor-mode)\n\n"
14761514
"Ends scissor mode. See `begin-scissor-mode`."
14771515
},
1516+
{
1517+
"get-clipboard-image", cfun_GetClipboardImage,
1518+
"(get-clipboard-image)\n\n"
1519+
"Get clipboard image content"
1520+
},
14781521
{
14791522
"make-directory", cfun_MakeDirectory,
14801523
"(make-directory dirpath)\n\n"
@@ -1500,5 +1543,30 @@ static JanetReg core_cfuns[] = {
15001543
"(file-name-valid? filename)\n\n"
15011544
"Check if filename is valid for platform/OS."
15021545
},
1546+
{
1547+
"get-screen-to-world-ray", cfun_GetScreenToWorldRay,
1548+
"(get-screen-to-world-ray position camera)\n\n"
1549+
"Get a ray trace from screen position."
1550+
},
1551+
{
1552+
"get-screen-to-world-ray-ex", cfun_GetScreenToWorldRayEx,
1553+
"(get-screen-to-world-ray-ex position camera width height)\n\n"
1554+
"Get a ray trace from screen position."
1555+
},
1556+
{
1557+
"get-application-directory", cfun_GetApplicationDirectory,
1558+
"(get-application-directory)\n\n",
1559+
"Get the directory of the running application."
1560+
},
1561+
{
1562+
"load-directory-files-ex", cfun_LoadDirectoryFilesEx,
1563+
"(load-directory-files-ex basepath filter scansubdirs)\n\n"
1564+
"Load directory filepaths with extension filtering and recursive directory scan."
1565+
},
1566+
{
1567+
"get-file-name-without-ext", cfun_GetFileNameWithoutExt,
1568+
"(get-file-name-without-ext filepath)\n\n"
1569+
"Get filename string without extension."
1570+
},
15031571
{NULL, NULL, NULL}
15041572
};

src/types.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,13 @@ static Janet jaylib_wrap_raycollision(RayCollision rayCollision) {
758758
return janet_wrap_table(table);
759759
}
760760

761+
static Janet jaylib_wrap_ray(Ray ray) {
762+
JanetTable *table = janet_table(4);
763+
janet_table_put(table, janet_wrap_keyword("position"), jaylib_wrap_vec3(ray.position));
764+
janet_table_put(table, janet_wrap_keyword("direction"), jaylib_wrap_vec3(ray.direction));
765+
return janet_wrap_table(table);
766+
}
767+
761768
static const unsigned char *jaylib_getunsignedcstring(const Janet *argv, int32_t n) {
762769
if (janet_checktype(argv[n], JANET_BUFFER)) {
763770
JanetBuffer *buf = janet_unwrap_buffer(argv[n]);

0 commit comments

Comments
 (0)