aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/lua_api/phys/bphysgeneric.cpp26
-rw-r--r--src/client/lua_api/phys/bphysgeneric.hpp4
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}
};