aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/load_cphys.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/lua_api/load_cphys.cpp')
-rw-r--r--src/client/lua_api/load_cphys.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/client/lua_api/load_cphys.cpp b/src/client/lua_api/load_cphys.cpp
new file mode 100644
index 0000000..b38b84d
--- /dev/null
+++ b/src/client/lua_api/load_cphys.cpp
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <vector>
+#include <map>
+extern "C" {
+ #include <lua.h>
+ #include <lauxlib.h>
+ #include <lualib.h>
+}
+#include <irrlicht.h>
+#include "../callbackhandeler.hpp"
+#include "phys/cbphysbox.hpp"
+#include "phys/cbphysmodel.hpp"
+#include <btBulletDynamicsCommon.h>
+#include <btBulletCollisionCommon.h>
+//#include <shared/phys/physcommon.hpp>
+#include <shared/lua_api/common.hpp>
+
+using namespace irr;
+using namespace gui;
+using namespace core;
+
+extern IrrlichtDevice* device;
+extern btDiscreteDynamicsWorld* World;
+extern btBroadphaseInterface *BroadPhase;
+
+//raytest({from},{to},{mins},{maxes}) :: hashit
+int raytest(lua_State *L){
+ double fx,fy,fz;
+ double tx,ty,tz;
+ popvector3d(L, &fx, &fy, &fz);
+ popvector3d(L, &tx, &ty, &tz);
+
+ btVector3 from(fx, fy, fz);
+ btVector3 to(tx, ty, tz);
+ btCollisionWorld::RayResultCallback *res = new btDiscreteDynamicsWorld::ClosestRayResultCallback(from, to);
+ World->rayTest(from,to,*res);
+
+ lua_pushboolean(L,res->hasHit());
+ return 1;
+}
+
+void load_physfuncs(lua_State* L){
+ lua_newtable(L);//{}
+ lua_setglobal(L,"phys");//
+ //phys things
+ cbphysbox_register(L);
+
+ cbphysmodel_register(L);
+
+ lua_getglobal(L,"phys");//{}
+ lua_pushcfunction(L,raytest);//{},raytest()
+ lua_setfield(L,-2,"raytest");//{}
+ lua_pop(L,1);
+}