Plugin fixes

This commit is contained in:
luboslenco
2025-08-22 16:25:59 +02:00
parent 6dc13dfe8a
commit 444aa9ec6e
3 changed files with 48 additions and 50 deletions
+28 -28
View File
@@ -439,8 +439,8 @@ VOID_FN_CB(context_set_viewport_shader)
void node_shader_add_constant(void *p, char *s0, char *s1, bool b);
FN(node_shader_add_constant) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
char *s0 = (char *)JS_ToCString(ctx, argv[1]);
char *s1 = (char *)JS_ToCString(ctx, argv[2]);
node_shader_add_constant((void *)p, s0, s1, false);
@@ -458,8 +458,8 @@ FN(gpu_create_texture_from_bytes) {
JS_ToInt64(ctx, &w, argv[1]);
int64_t h;
JS_ToInt64(ctx, &h, argv[2]);
int64_t result = (int64_t)gpu_create_texture_from_bytes(&b, w, h, 0);
return JS_NewInt64(ctx, result);
uint64_t result = (uint64_t)gpu_create_texture_from_bytes(&b, w, h, 0);
return JS_NewBigUint64(ctx, result);
}
extern char *project_filepath;
@@ -474,14 +474,14 @@ FN(project_save) {
}
FN(ui_handle_create) {
int64_t result = (int64_t)ui_handle_create();
uint64_t result = (uint64_t)ui_handle_create();
any_array_push(plugin_gc, (void *)result);
return JS_NewInt64(ctx, result);
return JS_NewBigUint64(ctx, result);
}
FN(ui_handle_set_value) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
ui_handle_t *h = (ui_handle_t *)p;
double d;
JS_ToFloat64(ctx, &d, argv[1]);
@@ -490,15 +490,15 @@ FN(ui_handle_set_value) {
}
FN(ui_handle_get_value) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
ui_handle_t *h = (ui_handle_t *)p;
return JS_NewFloat64(ctx, h->value);
}
FN(ui_panel) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
char *s = (char *)JS_ToCString(ctx, argv[1]);
bool result = ui_panel((void *)p, s, false, false);
return JS_NewBool(ctx, result);
@@ -517,16 +517,16 @@ FN(ui_text) {
}
FN(ui_text_input) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
char *s = (char *)JS_ToCString(ctx, argv[1]);
ui_text_input((void *)p, s, UI_ALIGN_LEFT, true, false);
return JS_UNDEFINED;
}
FN(ui_slider) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
char *s = (char *)JS_ToCString(ctx, argv[1]);
double from = 0.0;
double to = 1.0;
@@ -549,16 +549,16 @@ FN(ui_slider) {
}
FN(ui_check) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
char *s = (char *)JS_ToCString(ctx, argv[1]);
ui_check((void *)p, s, "");
return JS_UNDEFINED;
}
FN(ui_radio) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
int32_t pos;
JS_ToInt32(ctx, &pos, argv[1]);
char *s = (char *)JS_ToCString(ctx, argv[2]);
@@ -582,8 +582,8 @@ FN(ui_row) {
}
FN(ui_combo) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
JSValue val_len = JS_GetPropertyStr(ctx, argv[1], "length");
int len;
@@ -639,13 +639,13 @@ FN(parser_material_custom_nodes_delete) {
extern void *parser_material_kong;
FN(parser_material_kong_get) {
return JS_NewInt64(ctx, (int64_t)parser_material_kong);
return JS_NewBigUint64(ctx, (uint64_t)parser_material_kong);
}
char *parser_material_parse_value_input(void *inp, bool vector_as_grayscale);
FN(parser_material_parse_value_input) {
int64_t *node;
JS_ToInt64(ctx, &node, argv[0]);
uint64_t *node;
JS_ToBigUint64(ctx, &node, argv[0]);
int64_t i;
JS_ToInt64(ctx, &i, argv[1]);
char *s = parser_material_parse_value_input(((ui_node_t *)node)->inputs->buffer[i], false);
@@ -771,13 +771,13 @@ FN(plugin_api_make_raw_mesh) {
JS_ToFloat64(ctx, &d, argv[4]);
mesh->scale_pos = d;
mesh->scale_tex = 1.0;
return JS_NewInt64(ctx, (int64_t)mesh);
return JS_NewBigUint64(ctx, (uint64_t)mesh);
}
void transform_rotate(void *raw, vec4_t axis, float f);
FN(transform_rotate) {
int64_t p;
JS_ToInt64(ctx, &p, argv[0]);
uint64_t p;
JS_ToBigUint64(ctx, &p, argv[0]);
vec4_t axis;
axis.x = 0.0;
axis.y = 0.0;
+9 -9
View File
@@ -7,9 +7,9 @@
extern JSRuntime *js_runtime;
extern JSContext *js_ctx;
void js_eval(const char *s);
void js_call(void *p);
void js_call_arg(void *p, int argc, void *argv);
float js_eval(const char *s);
char *js_call(void *p);
JSValue js_call_arg(void *p, int argc, void *argv);
// ██████╗ ███████╗███████╗██╗███╗ ██╗███████╗███████╗
// ██╔══██╗██╔════╝██╔════╝██║████╗ ██║██╔════╝██╔════╝
@@ -31,8 +31,8 @@ void js_call_arg(void *p, int argc, void *argv);
#define PTR_FN(name)\
void *name();\
FN(name) {\
int64_t result = (int64_t)name();\
return JS_NewInt64(ctx, result);\
uint64_t result = (uint64_t)name();\
return JS_NewBigUint64(ctx, result);\
}
#define VOID_FN_STR(name)\
@@ -46,8 +46,8 @@ void js_call_arg(void *p, int argc, void *argv);
#define VOID_FN_PTR_STR(name)\
void name(void *p, char *s);\
FN(name) {\
int64_t p;\
JS_ToInt64(ctx, &p, argv[0]);\
uint64_t p;\
JS_ToBigUint64(ctx, &p, argv[0]);\
char *s = (char *)JS_ToCString(ctx, argv[1]);\
name((void *)p, s);\
return JS_UNDEFINED;\
@@ -67,8 +67,8 @@ void js_call_arg(void *p, int argc, void *argv);
#define VOID_FN_PTR_CB(name)\
void name(void *p0, void *p1);\
FN(name) {\
int64_t p0;\
JS_ToInt64(ctx, &p0, argv[0]);\
uint64_t p0;\
JS_ToBigUint64(ctx, &p0, argv[0]);\
JSValue *p1 = malloc(sizeof(JSValue));\
JSValue dup = JS_DupValue(ctx, argv[1]);\
memcpy(p1, &dup, sizeof(JSValue));\
+11 -13
View File
@@ -92,49 +92,47 @@ float js_eval(const char *js) {
return d;
}
JSValue js_call_result;
JSValue *js_call_arg(void *p, int argc, JSValue *argv) {
JSValue js_call_arg(void *p, int argc, JSValue *argv) {
if (js_runtime == NULL) {
js_init();
}
JSValue fn = *(JSValue *)p;
JSValue global_obj = JS_GetGlobalObject(js_ctx);
js_call_result = JS_Call(js_ctx, fn, global_obj, argc, argv);
JSValue js_call_result = JS_Call(js_ctx, fn, global_obj, argc, argv);
if (JS_IsException(js_call_result)) {
js_std_dump_error(js_ctx);
JS_ResetUncatchableError(js_ctx);
}
JS_FreeValue(js_ctx, global_obj);
return &js_call_result;
return js_call_result;
}
char *js_call_ptr(void *p, void *arg) {
JSValue argv[] = { JS_NewInt64(js_ctx, (int64_t)arg) };
return (char *)JS_ToCString(js_ctx, *js_call_arg(p, 1, argv));
JSValue argv[] = { JS_NewBigUint64(js_ctx, (uint64_t)arg) };
return (char *)JS_ToCString(js_ctx, js_call_arg(p, 1, argv));
}
char *js_call_ptr_str(void *p, void *arg0, char *arg1) {
JSValue argv[] = { JS_NewInt64(js_ctx, (int64_t)arg0), JS_NewString(js_ctx, arg1) };
return (char *)JS_ToCString(js_ctx, *js_call_arg(p, 2, argv));
JSValue argv[] = { JS_NewBigUint64(js_ctx, (uint64_t)arg0), JS_NewString(js_ctx, arg1) };
return (char *)JS_ToCString(js_ctx, js_call_arg(p, 2, argv));
}
void *js_pcall_str(void *p, char *arg0) {
JSValue argv[] = { JS_NewString(js_ctx, arg0) };
int64_t result;
JS_ToInt64(js_ctx, &result, *js_call_arg(p, 1, argv));
uint64_t result;
JS_ToBigUint64(js_ctx, &result, js_call_arg(p, 1, argv));
return (void *)result;
}
char *js_call(void *p) {
return (char *)JS_ToCString(js_ctx, *js_call_arg(p, 0, NULL));
return (char *)JS_ToCString(js_ctx, js_call_arg(p, 0, NULL));
}
#else
void js_init() {}
float js_eval(const char *js) { return 0.0; }
void *js_call_arg(void *p, int argc, void *argv) { return NULL; }
void js_call_arg(void *p, int argc, void *argv) { return NULL; }
char *js_call_ptr(void *p, void *arg) { return NULL; }
char *js_call_ptr_str(void *p, void *arg0, char *arg1) { return NULL; }
void *js_pcall_str(void *p, char *arg0) { return NULL; }