aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/phys/bphysgeneric.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/lua_api/phys/bphysgeneric.cpp')
-rw-r--r--src/client/lua_api/phys/bphysgeneric.cpp26
1 files changed, 26 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){