nodes,gameobjects cleanup

This commit is contained in:
2023-11-29 18:40:13 +00:00
parent 7e7514f5d7
commit b9db31c84e
16 changed files with 501 additions and 889 deletions

View File

@@ -233,6 +233,7 @@ int pos2gameobject(HMM_Vec2 pos) {
if (dist <= 25) return i;
}
return -1;
}
@@ -373,11 +374,11 @@ int MakeGameobject() {
.cgravity = (HMM_Vec2){0,0},
.damping = NAN,
.timescale = 1.0,
.ref = JS_NULL,
.ref = JS_UNDEFINED,
};
go.cbs.begin.obj = JS_NULL;
go.cbs.separate.obj = JS_NULL;
go.cbs.begin.obj = JS_UNDEFINED;
go.cbs.separate.obj = JS_UNDEFINED;
go.body = cpSpaceAddBody(space, cpBodyNew(go.mass, 1.f));
cpBodySetVelocityUpdateFunc(go.body, velocityFn);
@@ -432,6 +433,13 @@ void gameobject_delete(int id) {
gameobject_clean(id);
}
void gameobject_free(int id)
{
YughWarn("FREED A GAMEOBJECT!!!");
if (id >= 0)
gameobject_delete(id);
}
void gameobjects_cleanup() {
for (int i = 0; i < arrlen(go_toclean); i++)
gameobject_clean(go_toclean[i]);

View File

@@ -69,6 +69,7 @@ extern struct gameobject *gameobjects;
int MakeGameobject();
void gameobject_apply(struct gameobject *go);
void gameobject_delete(int id);
void gameobject_free(int id);
void gameobjects_cleanup();
void gameobject_set_sensor(int id, int sensor);

View File

@@ -73,7 +73,7 @@ JSValue input2js(int state)
case 3: return jstr("pressrep");
case 4: return jstr("down");
}
return JS_NULL;
return JS_UNDEFINED;
}
void input_mouse(int btn, int state, uint32_t mod)

View File

@@ -36,7 +36,6 @@ static JSValue globalThis;
static JSClassID js_ptr_id;
static JSClassDef js_ptr_class = { "POINTER" };
#define QJSCLASS(TYPE)\
static JSClassID js_ ## TYPE ## _id;\
static void js_##TYPE##_finalizer(JSRuntime *rt, JSValue val){\
@@ -44,22 +43,25 @@ TYPE *n = JS_GetOpaque(val, js_##TYPE##_id);\
TYPE##_free(n);}\
static JSClassDef js_##TYPE##_class = {\
#TYPE,\
.finalizer = js_##TYPE##_finalizer\
.finalizer = js_##TYPE##_finalizer,\
};\
static TYPE *js2##TYPE (JSValue val) { return JS_GetOpaque(val,js_##TYPE##_id); }\
static JSValue js_##TYPE##2js(TYPE *n) { \
static JSValue TYPE##2js(TYPE *n) { \
JSValue j = JS_NewObjectClass(js,js_##TYPE##_id);\
JS_SetOpaque(j,n);\
return j; }\
QJSCLASS(dsp_node)
// gamobject2js, js2gameobject deals with gameobject*
// go2js,js2go deals with gameobject ids
QJSCLASS(gameobject)
#define QJSCLASSPREP(TYPE) \
JS_NewClassID(&js_##TYPE##_id);\
JS_NewClass(JS_GetRuntime(js), js_##TYPE##_id, &js_##TYPE##_class);\
//QJSCLASS(sprite)
#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
#define BYTE_TO_BINARY(byte) \
(byte & 0x80 ? '1' : '0'), \
@@ -81,6 +83,21 @@ void js_setprop_num(JSValue obj, uint32_t i, JSValue v)
JS_SetPropertyUint32(js, obj, i, v);
}
JSValue go2ref(int id)
{
if (id == -1) return JS_UNDEFINED;
return JS_DupValue(js,id2go(id)->ref);
}
JSValue gos2ref(int *go)
{
JSValue array = JS_NewArray(js);
for (int i = 0; i < arrlen(go); i++)
js_setprop_num(array,i,go2ref(go[i]));
return array;
}
JSValue js_getpropstr(JSValue v, const char *str)
{
JSValue p = JS_GetPropertyStr(js,v,str);
@@ -155,9 +172,11 @@ JSValue num2js(double g) {
}
struct gameobject *js2go(JSValue v) {
return id2go(js2int(v));
return id2go(js2gameobject(v));
}
static int jsgo2id(JSValue v) { return go2id(js2go(v)); }
struct sprite *js2sprite(JSValue v) { return id2sprite(js2int(v)); }
void *js2ptr(JSValue v) {
@@ -343,7 +362,7 @@ JSValue duk_gui_img(JSContext *js, JSValueConst this, int argc, JSValueConst *ar
const char *img = JS_ToCString(js, argv[0]);
gui_draw_img(img, js2vec2(argv[1]), js2vec2(argv[2]), js2number(argv[3]), js2bool(argv[4]), js2vec2(argv[5]), 1.0, js2color(argv[6]));
JS_FreeCString(js, img);
return JS_NULL;
return JS_UNDEFINED;
}
struct rect js2rect(JSValue v) {
@@ -375,7 +394,6 @@ JSValue bb2js(struct boundingbox bb)
return obj;
}
JSValue duk_spline_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
// static_assert(sizeof(tsReal) * 2 == sizeof(HMM_Vec2));
@@ -501,7 +519,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
const char *str2 = NULL;
const void *d1 = NULL;
const void *d2 = NULL;
JSValue ret = JS_NULL;
JSValue ret = JS_UNDEFINED;
switch (cmd) {
case 0:
@@ -700,7 +718,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
break;
case 44:
ret = JS_NewInt64(js, pos2gameobject(js2vec2(argv[1])));
ret = go2ref(pos2gameobject(js2vec2(argv[1])));
break;
case 45:
@@ -732,7 +750,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
break;
case 52:
ret = ints2js(phys2d_query_box(js2vec2(argv[1]), js2vec2(argv[2])));
ret = gos2ref(phys2d_query_box(js2vec2(argv[1]), js2vec2(argv[2])));
break;
case 53:
@@ -803,7 +821,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
break;
case 69:
gameobject_set_sensor(js2int(argv[1]), JS_ToBool(js, argv[2]));
gameobject_set_sensor(js2go(argv[1]), JS_ToBool(js, argv[2]));
break;
case 70:
@@ -846,7 +864,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
break;
case 80:
ret = ints2js(phys2d_query_shape(js2ptr(argv[1])));
ret = gos2ref(phys2d_query_shape(js2ptr(argv[1])));
break;
case 81:
@@ -854,7 +872,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
break;
case 82:
gameobject_draw_debug(js2int(argv[1]));
gameobject_draw_debug(js2go(argv[1]));
break;
case 83:
@@ -870,7 +888,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
break;
case 86:
ret = ints2js(phys2d_query_box_points(js2vec2(argv[1]), js2vec2(argv[2]), js2cpvec2arr(argv[3]), js2int(argv[4])));
ret = gos2ref(phys2d_query_box_points(js2vec2(argv[1]), js2vec2(argv[2]), js2cpvec2arr(argv[3]), js2int(argv[4])));
break;
case 87:
@@ -985,7 +1003,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
break;
case 113:
js2go(argv[1])->ref = JS_DupValue(js,argv[2]);
js2go(argv[1])->ref = argv[2];//JS_DupValue(js,argv[2]);
break;
case 114:
@@ -1222,115 +1240,110 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
str = js2str(argv[1]);
ds_openvideo(str);
break;
case 175:
ret = num2js(((dsp_node*)js2ptr(argv[1]))->gain);
ret = num2js((js2dsp_node(argv[1]))->gain);
break;
case 176:
((dsp_node*)js2ptr(argv[1]))->gain = js2number(argv[2]);
js2dsp_node(argv[1])->gain = js2number(argv[2]);
break;
case 177:
plugin_node(js2ptr(argv[1]), js2ptr(argv[2]));
break;
case 178:
ret = num2js(((dsp_node*)js2ptr(argv[1]))->pan);
ret = num2js(js2dsp_node(argv[1])->pan);
break;
case 179:
((dsp_node*)js2ptr(argv[1]))->pan=js2number(argv[2]);
js2dsp_node(argv[1])->pan=js2number(argv[2]);
break;
case 180:
ret = ptr2js(masterbus);
ret = dsp_node2js(masterbus);
break;
case 181:
ret = ptr2js(make_node(NULL,NULL,NULL));
ret = dsp_node2js(make_node(NULL,NULL,NULL));
break;
case 182:
str = js2str(argv[1]);
ret = ptr2js(dsp_source(str));
((sound*)((dsp_node*)js2ptr(ret))->data)->hook = JS_DupValue(js,argv[2]);
((sound*)js2dsp_node(ret)->data)->hook = JS_DupValue(js,argv[2]);
break;
case 183:
((dsp_node*)js2ptr(argv[1]))->off = js2bool(argv[2]);
js2dsp_node(argv[1])->off = js2bool(argv[2]);
break;
case 184:
((dsp_node*)js2ptr(argv[1]))->pass = js2bool(argv[2]);
js2dsp_node(argv[1])->pass = js2bool(argv[2]);
break;
case 185:
ret = ptr2js(dsp_delay(js2number(argv[1]), js2number(argv[2])));
ret = dsp_node2js(dsp_delay(js2number(argv[1]), js2number(argv[2])));
break;
case 186:
ret = ptr2js(dsp_lpf(js2number(argv[1])));
ret = dsp_node2js(dsp_lpf(js2number(argv[1])));
break;
case 187:
ret = ptr2js(dsp_hpf(js2number(argv[1])));
ret = dsp_node2js(dsp_hpf(js2number(argv[1])));
break;
case 188:
str = js2str(argv[1]);
ret = ptr2js(dsp_mod(str));
ret = dsp_node2js(dsp_mod(str));
break;
case 189:
ret = ptr2js(dsp_bitcrush(js2number(argv[1]), js2number(argv[2])));
ret = dsp_node2js(dsp_bitcrush(js2number(argv[1]), js2number(argv[2])));
break;
case 190:
ret = ptr2js(dsp_compressor());
ret = dsp_node2js(dsp_compressor());
break;
case 191:
ret = ptr2js(dsp_limiter(js2number(argv[1])));
ret = dsp_node2js(dsp_limiter(js2number(argv[1])));
break;
case 192:
ret = ptr2js(dsp_noise_gate(js2number(argv[1])));
ret = dsp_node2js(dsp_noise_gate(js2number(argv[1])));
break;
case 193:
node_free(js2ptr(argv[1]));
// node_free(js2ptr(argv[1]));
break;
case 194:
ret = bool2js(((sound*)((dsp_node*)js2ptr(argv[1]))->data)->loop);
ret = bool2js(((sound*)js2dsp_node(argv[1])->data)->loop);
break;
case 195:
((sound*)((dsp_node*)js2ptr(argv[1]))->data)->loop = js2bool(argv[2]);
((sound*)js2dsp_node(argv[1])->data)->loop = js2bool(argv[2]);
break;
case 196:
ret = num2js(((sound*)((dsp_node*)js2ptr(argv[1]))->data)->frame);
ret = num2js(((sound*)js2dsp_node(argv[1])->data)->frame);
break;
case 197:
ret = num2js(((sound*)((dsp_node*)js2ptr(argv[1]))->data)->data->frames);
ret = num2js(((sound*)js2dsp_node(argv[1])->data)->data->frames);
break;
case 198:
ret = num2js(SAMPLERATE);
break;
case 199:
((sound*)((dsp_node*)js2ptr(argv[1]))->data)->frame = js2number(argv[2]);
((sound*)js2dsp_node(argv[1])->data)->frame = js2number(argv[2]);
break;
case 200:
ret = ptr2js(dsp_pitchshift(js2number(argv[1])));
ret = dsp_node2js(dsp_pitchshift(js2number(argv[1])));
break;
case 201:
ret = num2js(((sound*)((dsp_node*)js2ptr(argv[1]))->data)->timescale);
ret = num2js(((sound*)js2dsp_node(argv[1])->data)->timescale);
break;
case 202:
YughWarn("%g", js2number(argv[2]));
((sound*)((dsp_node*)js2ptr(argv[1]))->data)->timescale = js2number(argv[2]);
((sound*)js2dsp_node(argv[1])->data)->timescale = js2number(argv[2]);
break;
case 203:
ret = ptr2js(dsp_whitenoise());
ret = dsp_node2js(dsp_whitenoise());
break;
case 204:
ret = ptr2js(dsp_pinknoise());
ret = dsp_node2js(dsp_pinknoise());
break;
case 205:
ret = ptr2js(dsp_rednoise());
ret = dsp_node2js(dsp_rednoise());
break;
case 206:
str = js2str(argv[1]);
str2 = js2str(argv[2]);
ret = ptr2js(dsp_midi(str, make_soundfont(str2)));
ret = dsp_node2js(dsp_midi(str, make_soundfont(str2)));
break;
case 207:
ret = ptr2js(dsp_fwd_delay(js2number(argv[1]), js2number(argv[2])));
break;
case 208:
ret = JS_NewObjectClass(js, js_dsp_node_id);
JS_SetOpaque(ret, dsp_mixer_node());
ret = dsp_node2js(dsp_fwd_delay(js2number(argv[1]), js2number(argv[2])));
break;
}
@@ -1347,7 +1360,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
return ret;
}
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_register(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
@@ -1402,7 +1415,7 @@ JSValue duk_register(JSContext *js, JSValueConst this, int argc, JSValueConst *a
break;
}
return JS_NULL;
return JS_UNDEFINED;
}
void gameobject_add_shape_collider(int go, struct callee c, struct phys2d_shape *shape) {
@@ -1414,7 +1427,7 @@ void gameobject_add_shape_collider(int go, struct callee c, struct phys2d_shape
JSValue duk_register_collide(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
int cmd = js2int(argv[0]);
int go = js2int(argv[3]);
int go = jsgo2id(argv[3]);
struct callee c;
c.fn = argv[1];
c.obj = argv[2];
@@ -1437,7 +1450,7 @@ JSValue duk_register_collide(JSContext *js, JSValueConst this, int argc, JSValue
break;
}
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_sys_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
@@ -1486,11 +1499,11 @@ JSValue duk_sys_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *ar
break;
}
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_make_gameobject(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
return JS_NewInt64(js, MakeGameobject());
return gameobject2js(MakeGameobject());
}
JSValue duk_yughlog(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
@@ -1504,15 +1517,14 @@ JSValue duk_yughlog(JSContext *js, JSValueConst this, int argc, JSValueConst *ar
JS_FreeCString(js, s);
JS_FreeCString(js, f);
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_set_body(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
int cmd = js2int(argv[0]);
int id = js2int(argv[1]);
struct gameobject *go = get_gameobject_from_id(id);
if (!go) return JS_NULL;
struct gameobject *go = js2go(argv[1]);
if (!go) return JS_UNDEFINED;
/* TODO: Possible that reindexing shapes only needs done for static shapes? */
switch (cmd) {
@@ -1536,7 +1548,7 @@ JSValue duk_set_body(JSContext *js, JSValueConst this, int argc, JSValueConst *a
case 4:
cpBodyApplyImpulseAtWorldPoint(go->body, js2vec2(argv[2]).cp, cpBodyGetPosition(go->body));
return JS_NULL;
return JS_UNDEFINED;
case 5:
// go->flipx = JS_ToBool(js, argv[2]);
@@ -1554,11 +1566,11 @@ JSValue duk_set_body(JSContext *js, JSValueConst this, int argc, JSValueConst *a
case 8:
cpBodySetAngularVelocity(go->body, js2number(argv[2]));
return JS_NULL;
return JS_UNDEFINED;
case 9:
cpBodySetVelocity(go->body, js2vec2(argv[2]).cp);
return JS_NULL;
return JS_UNDEFINED;
case 10:
go->e = fmax(js2number(argv[2]), 0);
@@ -1570,27 +1582,26 @@ JSValue duk_set_body(JSContext *js, JSValueConst this, int argc, JSValueConst *a
case 12:
cpBodyApplyForceAtWorldPoint(go->body, js2vec2(argv[2]).cp, cpBodyGetPosition(go->body));
return JS_NULL;
return JS_UNDEFINED;
case 13:
cpBodySetMoment(go->body, js2number(argv[2]));
return JS_NULL;
return JS_UNDEFINED;
case 14:
cpBodyApplyForceAtLocalPoint(go->body, js2vec2(argv[2]).cp, js2vec2(argv[3]).cp);
return JS_NULL;
return JS_UNDEFINED;
}
cpSpaceReindexShapesForBody(space, go->body);
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_q_body(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
int q = js2int(argv[0]);
int goid = js2int(argv[1]);
struct gameobject *go = get_gameobject_from_id(goid);
struct gameobject *go = js2go(argv[1]);
if (!go) return JS_NULL;
if (!go) return JS_UNDEFINED;
switch (q) {
case 0:
@@ -1618,16 +1629,16 @@ JSValue duk_q_body(JSContext *js, JSValueConst this, int argc, JSValueConst *arg
return JS_NewBool(js, phys2d_in_air(go->body));
case 8:
gameobject_delete(goid);
// gameobject_delete(goid);
break;
}
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_make_sprite(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
JSValue sprite = JS_NewObject(js);
js_setprop_str(sprite,"id",JS_NewInt64(js, make_sprite(js2int(argv[0]))));
js_setprop_str(sprite,"id",JS_NewInt64(js, make_sprite(jsgo2id(argv[0]))));
return sprite;
}
@@ -1645,7 +1656,7 @@ JSValue duk_make_anim2d(JSContext *js, JSValueConst this, int argc, JSValueConst
}
JSValue duk_make_box2d(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
int go = js2int(argv[0]);
int go = jsgo2id(argv[0]);
HMM_Vec2 size = js2vec2(argv[1]);
struct phys2d_box *box = Make2DBox(go);
@@ -1666,7 +1677,7 @@ JSValue duk_cmd_box2d(JSContext *js, JSValueConst this, int argc, JSValueConst *
struct phys2d_box *box = js2ptr(argv[1]);
HMM_Vec2 arg;
if (!box) return JS_NULL;
if (!box) return JS_UNDEFINED;
switch (cmd) {
case 0:
@@ -1685,11 +1696,11 @@ JSValue duk_cmd_box2d(JSContext *js, JSValueConst this, int argc, JSValueConst *
}
phys2d_applybox(box);
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_make_circle2d(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
int go = js2int(argv[0]);
int go = jsgo2id(argv[0]);
struct phys2d_circle *circle = Make2DCircle(go);
@@ -1701,7 +1712,7 @@ JSValue duk_make_circle2d(JSContext *js, JSValueConst this, int argc, JSValueCon
JSValue duk_make_model(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
{
int go = js2int(argv[0]);
int go = jsgo2id(argv[0]);
struct drawmodel *dm = make_drawmodel(go);
JSValue ret = JS_NewObject(js);
js_setprop_str(ret, "id", ptr2js(dm));
@@ -1712,7 +1723,7 @@ JSValue duk_cmd_circle2d(JSContext *js, JSValueConst this, int argc, JSValueCons
int cmd = js2int(argv[0]);
struct phys2d_circle *circle = js2ptr(argv[1]);
if (!circle) return JS_NULL;
if (!circle) return JS_UNDEFINED;
switch (cmd) {
case 0:
@@ -1731,11 +1742,11 @@ JSValue duk_cmd_circle2d(JSContext *js, JSValueConst this, int argc, JSValueCons
}
phys2d_applycircle(circle);
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_make_poly2d(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
int go = js2int(argv[0]);
int go = jsgo2id(argv[0]);
struct phys2d_poly *poly = Make2DPoly(go);
phys2d_poly_setverts(poly, NULL);
JSValue polyval = JS_NewObject(js);
@@ -1748,7 +1759,7 @@ JSValue duk_cmd_poly2d(JSContext *js, JSValueConst this, int argc, JSValueConst
int cmd = js2int(argv[0]);
struct phys2d_poly *poly = js2ptr(argv[1]);
if (!poly) return JS_NULL;
if (!poly) return JS_UNDEFINED;
switch (cmd) {
case 0:
@@ -1756,11 +1767,11 @@ JSValue duk_cmd_poly2d(JSContext *js, JSValueConst this, int argc, JSValueConst
break;
}
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_make_edge2d(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
int go = js2int(argv[0]);
int go = jsgo2id(argv[0]);
struct phys2d_edge *edge = Make2DEdge(go);
int n = js_arrlen(argv[1]);
@@ -1784,7 +1795,7 @@ JSValue duk_cmd_edge2d(JSContext *js, JSValueConst this, int argc, JSValueConst
if (!edge) {
YughError("Attempted to do a cmd on edge %p. Not found.", edge);
return JS_NULL;
return JS_UNDEFINED;
}
switch (cmd) {
@@ -1798,7 +1809,7 @@ JSValue duk_cmd_edge2d(JSContext *js, JSValueConst this, int argc, JSValueConst
break;
}
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_inflate_cpv(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
@@ -1835,7 +1846,7 @@ JSValue duk_anim(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
JS_FreeValue(js,vv);
}
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_make_timer(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
@@ -1843,7 +1854,7 @@ JSValue duk_make_timer(JSContext *js, JSValueConst this, int argc, JSValueConst
// struct callee *c = make_callee(argv[0], argv[3]);
// int id = timer_make(secs, call_callee, c, 1, js2bool(argv[2]));
// return JS_NewInt64(js, id);
return JS_NULL;
return JS_UNDEFINED;
}
JSValue duk_cmd_points(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
@@ -1862,7 +1873,7 @@ JSValue duk_cmd_points(JSContext *js, JSValueConst this, int argc, JSValueConst
break;
}
return JS_NULL;
return JS_UNDEFINED;
}
//#include "dlfcn.h"
@@ -1885,7 +1896,7 @@ JSValue duk_cmd_points(JSContext *js, JSValueConst this, int argc, JSValueConst
ffi_call(&cif, fn, &rc, values);
}
return JS_NULL;
return JS_UNDEFINED;
}
*/
#define DUK_FUNC(NAME, ARGS) JS_SetPropertyStr(js, globalThis, #NAME, JS_NewCFunction(js, duk_##NAME, #NAME, ARGS));
@@ -1936,4 +1947,6 @@ void ffi_load() {
JS_NewClass(JS_GetRuntime(js), js_ptr_id, &js_ptr_class);
QJSCLASSPREP(dsp_node);
QJSCLASSPREP(gameobject);
}

View File

@@ -193,7 +193,7 @@ JSValue script_runfile(const char *file)
{
size_t len;
const char *script = slurp_text(file, &len);
if (!script) return JS_NULL;
if (!script) return JS_UNDEFINED;
JSValue obj = JS_Eval(js, script, len, file, JS_EVAL_FLAGS);
js_print_exception(obj);
@@ -266,13 +266,13 @@ void out_memusage(const char *file)
JSValue js_callee_exec(struct callee *c, int argc, JSValue *argv)
{
if (JS_IsUndefined(c->fn)) return JS_NULL;
if (JS_IsUndefined(c->obj)) return JS_NULL;
if (JS_IsUndefined(c->fn)) return JS_UNDEFINED;
if (JS_IsUndefined(c->obj)) return JS_UNDEFINED;
JSValue ret = JS_Call(js, c->fn, c->obj, argc, argv);
js_print_exception(ret);
JS_FreeValue(js, ret);
return JS_NULL;
return JS_UNDEFINED;
}
void call_callee(struct callee *c) {

View File

@@ -151,6 +151,7 @@ dsp_node *make_node(void *data, void (*proc)(void *data, soundbyte *out, int sam
void node_free(dsp_node *node)
{
YughWarn("FREEING A NODE");
unplug_node(node);
if (node->data)
if (node->data_free) node->data_free(node->data);

View File

@@ -53,6 +53,7 @@ struct slice9_vert {
};
int make_sprite(int go) {
YughWarn("Attaching sprite to gameobject %d", go);
struct sprite sprite = {
.color = color_white,
.emissive = {0,0,0,0},