diff options
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/lua_api/phys/bphysgeneric.cpp | 26 | ||||
| -rw-r--r-- | src/client/lua_api/phys/bphysgeneric.hpp | 4 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/client/lua_api/phys/bphysgeneric.cpp b/src/client/lua_api/phys/bphysgeneric.cpp index 0d882d6..e4e8ab0 100644 --- a/src/client/lua_api/phys/bphysgeneric.cpp +++ b/src/client/lua_api/phys/bphysgeneric.cpp @@ -74,6 +74,32 @@ int getlineardamping(lua_State *L){ return 1; } +//rigidbody:getvelocity() +int getvelocity(lua_State *L){ + btVector3 vel; + lua_getfield(L,-1,"rigidbody"); + btRigidBody *r = (btRigidBody*)lua_touserdata(L,-1); + + vel = r->getLinearVelocity(); + pushvector3d(L,(double)vel.x(),(double)vel.y(),(double)vel.z()); + + return 1; +} + +//rigidbody:setvelocity({x,y,z}) +int setvelocity(lua_State *L){ + double x,y,z; + popvector3d(L,&x,&y,&z); + btVector3 newvel = btVector3(x,y,z); + + lua_getfield(L,-1,"rigidbody"); + btRigidBody *r = (btRigidBody*)lua_touserdata(L,-1); + lua_pop(L,2); + + r->setLinearVelocity(newvel); + + return 0; +} //rigidbody:getadamping() int getangulardamping(lua_State *L){ diff --git a/src/client/lua_api/phys/bphysgeneric.hpp b/src/client/lua_api/phys/bphysgeneric.hpp index 56bfaed..d035084 100644 --- a/src/client/lua_api/phys/bphysgeneric.hpp +++ b/src/client/lua_api/phys/bphysgeneric.hpp @@ -12,6 +12,8 @@ int getlineardamping(lua_State *L); int getangulardamping(lua_State *L); int setdamping(lua_State *L); int activate(lua_State *L); +int getvelocity(lua_State *L); +int setvelocity(lua_State *L); static const luaL_reg brigidbody_m[] = { {"setgravity", setgravity}, @@ -20,5 +22,7 @@ static const luaL_reg brigidbody_m[] = { {"getadamping", getangulardamping}, {"setdamping", setdamping}, {"activate", activate}, + {"getvelocity", getvelocity}, + {"setvelocity", setvelocity}, {NULL, NULL} }; |
