|
@@ -125,6 +125,21 @@ int w_Body_getAngularVelocity(lua_State *L)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+int w_Body_getKinematicState(lua_State *L)
|
|
|
+{
|
|
|
+ Body *t = luax_checkbody(L, 1);
|
|
|
+ b2Vec2 pos_o, vel_o;
|
|
|
+ float a_o, da_o;
|
|
|
+ t->getKinematicState(pos_o, a_o, vel_o, da_o);
|
|
|
+ lua_pushnumber(L, pos_o.x);
|
|
|
+ lua_pushnumber(L, pos_o.y);
|
|
|
+ lua_pushnumber(L, a_o);
|
|
|
+ lua_pushnumber(L, vel_o.x);
|
|
|
+ lua_pushnumber(L, vel_o.y);
|
|
|
+ lua_pushnumber(L, da_o);
|
|
|
+ return 6;
|
|
|
+}
|
|
|
+
|
|
|
int w_Body_getMass(lua_State *L)
|
|
|
{
|
|
|
Body *t = luax_checkbody(L, 1);
|
|
@@ -313,6 +328,19 @@ int w_Body_setPosition(lua_State *L)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+int w_Body_setKinematicState(lua_State *L)
|
|
|
+{
|
|
|
+ Body *t = luax_checkbody(L, 1);
|
|
|
+ float x = (float)luaL_checknumber(L, 2);
|
|
|
+ float y = (float)luaL_checknumber(L, 3);
|
|
|
+ float a = (float)luaL_checknumber(L, 4);
|
|
|
+ float dx = (float)luaL_checknumber(L, 5);
|
|
|
+ float dy = (float)luaL_checknumber(L, 6);
|
|
|
+ float da = (float)luaL_checknumber(L, 7);
|
|
|
+ luax_catchexcept(L, [&](){ t->setKinematicState(b2Vec2(x, y), a, b2Vec2(dx, dy), da); });
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
int w_Body_resetMassData(lua_State *L)
|
|
|
{
|
|
|
Body *t = luax_checkbody(L, 1);
|
|
@@ -631,6 +659,7 @@ static const luaL_Reg w_Body_functions[] =
|
|
|
{ "getWorldCenter", w_Body_getWorldCenter },
|
|
|
{ "getLocalCenter", w_Body_getLocalCenter },
|
|
|
{ "getAngularVelocity", w_Body_getAngularVelocity },
|
|
|
+ { "getKinematicState", w_Body_getKinematicState },
|
|
|
{ "getMass", w_Body_getMass },
|
|
|
{ "getInertia", w_Body_getInertia },
|
|
|
{ "getMassData", w_Body_getMassData },
|
|
@@ -648,6 +677,7 @@ static const luaL_Reg w_Body_functions[] =
|
|
|
{ "setAngle", w_Body_setAngle },
|
|
|
{ "setAngularVelocity", w_Body_setAngularVelocity },
|
|
|
{ "setPosition", w_Body_setPosition },
|
|
|
+ { "setKinematicState", w_Body_setKinematicState },
|
|
|
{ "resetMassData", w_Body_resetMassData },
|
|
|
{ "setMassData", w_Body_setMassData },
|
|
|
{ "setMass", w_Body_setMass },
|