refined controls
This commit is contained in:
parent
f4d08bcacb
commit
cdff383a7a
|
@ -85,14 +85,20 @@ void querylistbodies(cpBody *body, void *data)
|
|||
|
||||
int *phys2d_query_box(cpVect pos, cpVect wh)
|
||||
{
|
||||
cpBB bbox = cpBBNewForExtents(pos, wh.x, wh.y);
|
||||
cpShape *box = cpBoxShapeNew2(NULL, bbox, 0.f);
|
||||
cpShape *box = cpBoxShapeNew(NULL, wh.x, wh.y, 0.f);
|
||||
cpTransform T = {0};
|
||||
T.a = 1;
|
||||
T.d = 1;
|
||||
T.tx = pos.x;
|
||||
T.ty = pos.y;
|
||||
cpShapeUpdate(box, T);
|
||||
|
||||
cpBB bbox = cpShapeGetBB(box);
|
||||
|
||||
if (qhits) arrfree(qhits);
|
||||
|
||||
cpSpaceShapeQuery(space, box, querylist, NULL);
|
||||
|
||||
YughInfo("FInished query.");
|
||||
|
||||
|
||||
cpSpaceEachBody(space, querylistbodies, &bbox);
|
||||
|
||||
cpShapeFree(box);
|
||||
|
|
|
@ -36,6 +36,11 @@
|
|||
(byte & 0x02 ? '1' : '0'), \
|
||||
(byte & 0x01 ? '1' : '0')
|
||||
|
||||
struct gameobject *duk2go(duk_context *duk, int p)
|
||||
{
|
||||
return id2go(duk_to_int(duk, p));
|
||||
}
|
||||
|
||||
struct color duk2color(duk_context *duk, int p)
|
||||
{
|
||||
struct color color;
|
||||
|
@ -511,7 +516,28 @@ duk_ret_t duk_cmd(duk_context *duk) {
|
|||
case 53:
|
||||
draw_box(duk2vec2(duk, 1), duk2vec2(duk, 2));
|
||||
return 0;
|
||||
|
||||
|
||||
case 54:
|
||||
gameobject_apply(id2go(duk_to_int(duk, 1)));
|
||||
return 0;
|
||||
|
||||
case 55:
|
||||
duk2go(duk, 1)->flipx = duk_to_boolean(duk, 2) ? -1 : 1;
|
||||
gameobject_apply(duk2go(duk, 1));
|
||||
return 0;
|
||||
|
||||
case 56:
|
||||
duk2go(duk, 1)->flipy = duk_to_boolean(duk, 2) ? -1 : 1;
|
||||
gameobject_apply(duk2go(duk, 1));
|
||||
return 0;
|
||||
|
||||
case 57:
|
||||
duk_push_boolean(duk, duk2go(duk, 1)->flipx == -1 ? 1 : 0);
|
||||
return 1;
|
||||
|
||||
case 58:
|
||||
duk_push_boolean(duk, duk2go(duk, 1)->flipy == -1 ? 1 : 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -616,8 +642,8 @@ duk_ret_t duk_make_gameobject(duk_context *duk) {
|
|||
go->mass = duk_to_number(duk, 2);
|
||||
go->f = duk_to_number(duk, 3);
|
||||
go->e = duk_to_number(duk, 4);
|
||||
go->flipx = duk_to_boolean(duk, 5) ? -1 : 1;
|
||||
go->flipy = duk_to_boolean(duk, 6) ? -1 : 1;
|
||||
go->flipx = 1.f;
|
||||
go->flipy = 1.f;
|
||||
|
||||
gameobject_apply(go);
|
||||
|
||||
|
@ -663,7 +689,7 @@ duk_ret_t duk_set_body(duk_context *duk) {
|
|||
|
||||
case 4:
|
||||
cpBodyApplyImpulseAtWorldPoint(go->body, duk2vec2(duk, 2), cpBodyGetPosition(go->body));
|
||||
break;
|
||||
return 0;
|
||||
|
||||
case 5:
|
||||
go->flipx = duk_to_boolean(duk, 2);
|
||||
|
|
|
@ -35,8 +35,7 @@ struct gameobject *id2go(int id)
|
|||
|
||||
int body2id(cpBody *body)
|
||||
{
|
||||
struct gameobject *go = cpBodyGetUserData(body);
|
||||
return id_from_gameobject(go);
|
||||
return cpBodyGetUserData(body);
|
||||
}
|
||||
|
||||
int shape2gameobject(cpShape *shape)
|
||||
|
@ -74,6 +73,13 @@ void go_shape_apply(cpBody *body, cpShape *shape, struct gameobject *go)
|
|||
{
|
||||
cpShapeSetFriction(shape, go->f);
|
||||
cpShapeSetElasticity(shape, go->e);
|
||||
|
||||
cpTransform T = {0};
|
||||
T.a = go->flipx;
|
||||
T.d = go->flipy;
|
||||
cpShapeUpdate(shape, T);
|
||||
|
||||
if (go->flipx == -1) YughInfo("Flipped one");
|
||||
// cpShapeSetFilter(shape, go->filter);
|
||||
|
||||
// YughLog("Set filter; %d", go->filter.mask);
|
||||
|
@ -123,6 +129,7 @@ int MakeGameobject()
|
|||
first = id2go(first)->next;
|
||||
*id2go(retid) = go;
|
||||
}
|
||||
|
||||
go.filter.group = retid;
|
||||
go.filter.mask = CP_ALL_CATEGORIES;
|
||||
go.filter.categories = CP_ALL_CATEGORIES;
|
||||
|
|
|
@ -141,6 +141,14 @@ const char *keyname_extd(int key, int scancode) {
|
|||
kkey = "escape";
|
||||
break;
|
||||
|
||||
case GLFW_KEY_DELETE:
|
||||
kkey = "delete";
|
||||
break;
|
||||
|
||||
case GLFW_KEY_INSERT:
|
||||
kkey = "insert";
|
||||
break;
|
||||
|
||||
case GLFW_KEY_TAB:
|
||||
kkey = "tab";
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue