aboutsummaryrefslogtreecommitdiff
path: root/src/shared/lua_api/phys/bcollider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/lua_api/phys/bcollider.cpp')
-rw-r--r--src/shared/lua_api/phys/bcollider.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/shared/lua_api/phys/bcollider.cpp b/src/shared/lua_api/phys/bcollider.cpp
new file mode 100644
index 0000000..356c504
--- /dev/null
+++ b/src/shared/lua_api/phys/bcollider.cpp
@@ -0,0 +1,44 @@
+extern "C" {
+ #include <lua.h>
+ #include <lauxlib.h>
+ #include <lualib.h>
+}
+#include <btBulletDynamicsCommon.h>
+#include <shared/lua_api/common.hpp>
+#include "bcollider.hpp"
+
+
+/*Collider things from lua have the form of:
+{
+ type = "ghost" | "multi" | "rigidbody" | "softbody"
+ collider = ud_btCollisionObject,
+ node = ud_ISceneNode, --Optional, on client
+}
+*/
+btCollisionObject* popCollider(lua_State *L){
+ lua_getfield(L,-1,"collider");
+ btCollisionObject *r = (btCollisionObject*)lua_touserdata(L,-1);
+ lua_pop(L,2);
+ return r;
+}
+
+/***
+Activates this object.
+If this object was sleeping, it will move again. If you are using
+applyforce or setvelocity, you will need to activate() the rigidbody for it
+to move.
+@function collider:activate()
+*/
+//collider:activate()
+int activate(lua_State *L){
+ btCollisionObject *r = popCollider(L);
+
+ r->activate();
+
+ return 0;
+}
+
+extern const luaL_reg bcollider_m[] = {
+ {"activate", activate},
+ {NULL, NULL}
+};