aboutsummaryrefslogtreecommitdiff
path: root/src/shared/lua_api/phys/bshape.cpp
diff options
context:
space:
mode:
authorAlexander <alex@cogarr.net>2020-06-02 08:54:14 -0400
committerAlexander <alex@cogarr.net>2020-06-02 08:54:14 -0400
commitececf2c8624f4d95d9413686839f7fa6e5bb5044 (patch)
treed276a9b7bec1706113f7a59b721fc3c1495cfcbd /src/shared/lua_api/phys/bshape.cpp
parent355589a9100c7d08fdc4094ad32eb9852c88fcc4 (diff)
downloadbrokengine-ececf2c8624f4d95d9413686839f7fa6e5bb5044.tar.gz
brokengine-ececf2c8624f4d95d9413686839f7fa6e5bb5044.tar.bz2
brokengine-ececf2c8624f4d95d9413686839f7fa6e5bb5044.zip
Add a shape cast
Add a raycast like function, which can cast shapes. phys.shapecast(), along with a shape structure needed to call this function.
Diffstat (limited to 'src/shared/lua_api/phys/bshape.cpp')
-rw-r--r--src/shared/lua_api/phys/bshape.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/shared/lua_api/phys/bshape.cpp b/src/shared/lua_api/phys/bshape.cpp
new file mode 100644
index 0000000..5533b42
--- /dev/null
+++ b/src/shared/lua_api/phys/bshape.cpp
@@ -0,0 +1,52 @@
+extern "C" {
+ #include <lua.h>
+ #include <lauxlib.h>
+ #include <lualib.h>
+}
+#include <btBulletDynamicsCommon.h>
+#include <btBulletCollisionCommon.h>
+#include <shared/lua_api/common.hpp>
+
+extern btDiscreteDynamicsWorld* World;
+
+//phys.newboxshape({ax,ay,az})
+static int newboxshape(lua_State* L){
+ double ax,ay,az;
+ popvector3d(L,&ax,&ay,&az);
+ ax *= 0.5;
+ ay *= 0.5;
+ az *= 0.5;
+ btBoxShape *bs = new btBoxShape(btVector3(ax,ay,az));
+ printf("Created shape: %p\n",(void*)bs);
+ lua_newtable(L);//{}
+ lua_pushlightuserdata(L,bs);//{},ud_bs
+ lua_setfield(L,-2,"shape");//{}
+ luaL_getmetatable(L,"phys.shape");//{},{m_shape}
+ lua_setmetatable(L,-2);//{}
+
+ return 1;
+}
+
+static const luaL_reg bshape_f[] = {
+ {"newboxshape", newboxshape},
+ {0,0},
+};
+
+static const luaL_reg bshape_m[] = {
+ {0,0},
+};
+
+int bshape_register(lua_State* L){
+
+ luaL_newmetatable(L, "phys.shape");//{m_physshape}
+ lua_newtable(L);//{m_physshape},{}
+ luaL_register(L,NULL,bshape_m);
+ lua_setfield(L,-2,"__index");//{m_physshape}
+ lua_pop(L,1);//
+
+ lua_getglobal(L,"phys");//{}
+ luaL_register(L,NULL,bshape_f);//{}
+ lua_pop(L,1);//
+
+ return 0;
+}