aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/phys
diff options
context:
space:
mode:
authorAlexander Pickering <alex@cogarr.net>2018-06-28 16:05:26 -0600
committerAlexander Pickering <alex@cogarr.net>2018-06-28 16:05:26 -0600
commitef25a513437196a3ea9ee45e6e03565eb86067d2 (patch)
treeacd43d214f9a7ec96e7fcd66097fd13593dd8f38 /src/client/lua_api/phys
parent2260a1dda8693664c77a03781ae07fbb5f0ea8a0 (diff)
downloadbrokengine-ef25a513437196a3ea9ee45e6e03565eb86067d2.tar.gz
brokengine-ef25a513437196a3ea9ee45e6e03565eb86067d2.tar.bz2
brokengine-ef25a513437196a3ea9ee45e6e03565eb86067d2.zip
Simplified makefile
Made makefile much simpiler, added option to build dynamically with DEBUG=true
Diffstat (limited to 'src/client/lua_api/phys')
-rw-r--r--src/client/lua_api/phys/bphysbuffer.cpp193
-rw-r--r--src/client/lua_api/phys/bphysbuffer.hpp2
-rw-r--r--src/client/lua_api/phys/bphysmodel.hpp9
-rw-r--r--src/client/lua_api/phys/butil.cpp26
-rw-r--r--src/client/lua_api/phys/butil.hpp9
-rw-r--r--src/client/lua_api/phys/cbphysbox.cpp3
6 files changed, 53 insertions, 189 deletions
diff --git a/src/client/lua_api/phys/bphysbuffer.cpp b/src/client/lua_api/phys/bphysbuffer.cpp
index aa2833a..a8f7302 100644
--- a/src/client/lua_api/phys/bphysbuffer.cpp
+++ b/src/client/lua_api/phys/bphysbuffer.cpp
@@ -12,10 +12,11 @@ extern "C" {
}
#include <btBulletDynamicsCommon.h>
#include <irrlicht.h>
-#include "../gameparts.hpp"
-#include "bphysbox.hpp"
+#include <client/lua_api/gameparts.hpp>
+#include <shared/lua_api/phys/bphysbox.hpp>
#include "bphysmodel.hpp"
#include "../scene/igeneric.hpp"
+#include <shared/lua_api/common.hpp>
using namespace irr;
using namespace scene;
@@ -49,40 +50,14 @@ static int newbphysmodel(lua_State* L){
}
//The model for the mesh
//const char* modelpath = luaL_optstring(L,1,"error");
-
- //Find the vector position
- lua_pushnumber(L,1);
- lua_gettable(L,-4);
- float x = lua_tonumber(L,-1);
- lua_pop(L,1);
-
- lua_pushnumber(L,2);
- lua_gettable(L,-4);
- float y = lua_tonumber(L,-1);
- lua_pop(L,1);
-
- lua_pushnumber(L,3);
- lua_gettable(L,-4);
- float z = lua_tonumber(L,-1);
- lua_pop(L,1);
+
+ double x,y,z;
+ popvector3d(L,&x,&y,&z);
printf("Found position for phys model: %f %f %f\n",x,y,z);
//Find the vector scale
- lua_pushnumber(L,1);
- lua_gettable(L,-3);
- float sx = lua_tonumber(L,-1);
- lua_pop(L,1);
-
- lua_pushnumber(L,2);
- lua_gettable(L,-3);
- float sy = lua_tonumber(L,-1);
- lua_pop(L,1);
-
- lua_pushnumber(L,3);
- lua_gettable(L,-3);
- float sz = lua_tonumber(L,-1);
- lua_pop(L,1);
-
+ double sx,sy,sz;
+ popvector3d(L,&sx,&sy,&sz);
printf("Found scale for phys model: %f %f %f\n",sx,sy,sz);
//find the model path
@@ -90,41 +65,41 @@ static int newbphysmodel(lua_State* L){
printf("I want to use model %s\n", mpath);
- ISceneManager* smgr = device->getSceneManager();
- IMesh* amesh = smgr->getMesh(mpath);
- IMeshBuffer* bf = amesh->getMeshBuffer(0);
- u32 ni = bf->getIndexCount();
-
- btTriangleMesh* trimesh = new btTriangleMesh();
- for(u32 i = 0; i < ni; i+=3){
- vector3df p1 = bf->getPosition(i + 0);
- vector3df p2 = bf->getPosition(i + 1);
- vector3df p3 = bf->getPosition(i + 2);
- btVector3 b1 = btVector3(p1.X,p1.Y,p1.Z);
- btVector3 b2 = btVector3(p2.X,p2.Y,p2.Z);
- btVector3 b3 = btVector3(p3.X,p3.Y,p3.Z);
- trimesh->addTriangle(b1,b2,b3);
- }
- btCollisionShape* shape = new btConvexTriangleMeshShape(trimesh,true);
+ ISceneManager* smgr = device->getSceneManager();
+ IMesh* amesh = smgr->getMesh(mpath);
+ IMeshBuffer* bf = amesh->getMeshBuffer(0);
+ u32 ni = bf->getIndexCount();
+
+ btTriangleMesh* trimesh = new btTriangleMesh();
+ for(u32 i = 0; i < ni; i+=3){
+ vector3df p1 = bf->getPosition(i + 0);
+ vector3df p2 = bf->getPosition(i + 1);
+ vector3df p3 = bf->getPosition(i + 2);
+ btVector3 b1 = btVector3(p1.X,p1.Y,p1.Z);
+ btVector3 b2 = btVector3(p2.X,p2.Y,p2.Z);
+ btVector3 b3 = btVector3(p3.X,p3.Y,p3.Z);
+ trimesh->addTriangle(b1,b2,b3);
+ }
+ btCollisionShape* shape = new btConvexTriangleMeshShape(trimesh,true);
core::vector3df scale = core::vector3df(sx,sy,sz);
btVector3 pos = btVector3(x,y,z);
core::vector3df ipos = core::vector3df(x,y,z);
- shape->setLocalScaling(btVector3(sx,sy,sz));
+ shape->setLocalScaling(btVector3(sx,sy,sz));
//Find the mass
float mass = luaL_optint(L,4,0);
- printf("Found mass for physbox:%f\n",mass);
+ printf("Found mass for physbox:%f\n",mass);
// Create an Irrlicht cube
scene::ISceneNode* Node = smgr->addMeshSceneNode(
- amesh,
- (ISceneNode*)0,
- (s32)-1,
- ipos,
- vector3df(0,0,0),
- scale
- );
+ amesh,
+ (ISceneNode*)0,
+ (s32)-1,
+ ipos,
+ vector3df(0,0,0),
+ scale
+ );
//Node->setScale(scale);
printf("Added cube scene node and set it's scale\n");
@@ -199,108 +174,30 @@ static int newbphysmodel(lua_State* L){
return 1;
}
-static int delbphysmodel(lua_State* L){
- LBPhysNode* pnode = checkisbphysmodel(L,-1);
-
- //delete pnode->r->getMotionState();
- delete pnode->r->getCollisionShape();
- delete pnode->r;
-
- return 0;
-}
-static int bphyssetpos(lua_State *L){
- LBPhysNode* i = checkisbphysmodel(L,1);
- btTransform bt = i->r->getWorldTransform();
-
- lua_pushnumber(L,1);
- lua_gettable(L,-2);
- f32 x = (f32)lua_tonumber(L,-1);
- lua_pop(L,1);
-
- lua_pushnumber(L,2);
- lua_gettable(L,-2);
- f32 y = (f32)lua_tonumber(L,-1);
- lua_pop(L,1);
-
- lua_pushnumber(L,3);
- lua_gettable(L,-2);
- f32 z = (f32)lua_tonumber(L,-1);
- lua_pop(L,1);
-
- btVector3 to = btVector3(x,y,z);
- printf("managed to set phys origin\n");
- bt.setOrigin(to);
- printf("managed to set phys transform\n");
- i->r->setWorldTransform(bt);
- i->r->activate();
- printf("sucess! returning from call\n");
- return 0;
-}
-
-static int bphysgetpos(lua_State *L){
- LBPhysNode* i = checkisbphysmodel(L,1);
- btTransform bt = i->r->getWorldTransform();
- btVector3 bv = bt.getOrigin();
-
- lua_createtable(L,3,0);
-
- lua_pushnumber(L,1);
- lua_pushnumber(L,bv.x());
- lua_settable(L,-3);
-
- lua_pushnumber(L,2);
- lua_pushnumber(L,bv.y());
- lua_settable(L,-3);
-
- lua_pushnumber(L,3);
- lua_pushnumber(L,bv.z());
- lua_settable(L,-3);
-
- return 1;
-}
-
-static const luaL_reg bphysmodel_f[] = {
- {"new", newbphysbuffer},
+static const luaL_reg bphysbuffer_f[] = {
+ //{"new", newbphysmodel},
// {"gethandeler", guigethandeler},
// {"sethandeler", guisethandeler},
{0,0},
};
-static const luaL_reg bphysmodel_m[] = {
- {"setmaterial", iscenesetmaterial},
- {"getpos", bphysgetpos},
- {"setpos", bphyssetpos},
+static const luaL_reg bphysbuffer_m[] = {
+ //{"setmaterial", iscenesetmaterial},
+ //{"getpos", bphysgetpos},
+ //{"setpos", bphyssetpos},
// {"settext", setiguitext},
// {"remove", removeiguielement},
{0, 0},
};
-int bphysmodel_register(lua_State* L, IrrlichtDevice* d){
+void bphysbuffer_register(lua_State* L, IrrlichtDevice* d){
device = d;
- //printf("bphysmodel registered\n");
-
- luaL_newmetatable(L, "phys.physmodel");
-
- luaL_register(L,"physmodel",bphysmodel_f);
-
- lua_pushstring(L,"__index");
- lua_pushstring(L,"gethandeler");
- lua_gettable(L,-3);
- lua_settable(L,-4);
-
- lua_pushstring(L,"__newindex");
- lua_pushstring(L,"sethandeler");
- lua_gettable(L,-3);
- lua_settable(L,-4);
-
- lua_pushstring(L,"__gc");
- lua_pushcfunction(L,delbphysmodel);
- lua_settable(L,-4);
-
- luaL_register(L, NULL, bphysmodel_m);
-
- return 1;
+ luaL_newmetatable(L, "phys.physbuffer");//{m_physbuffer}
+ lua_newtable(L);//{m_physbuffer},{}
+ luaL_register(L,"physbuffer",bphysbuffer_m);//{m_physbuffer},{physbuffer}
+ lua_setfield(L,-2,"__index");//{m_physbuffer}
+ lua_pop(L,1);
}
diff --git a/src/client/lua_api/phys/bphysbuffer.hpp b/src/client/lua_api/phys/bphysbuffer.hpp
index a59c451..cfbf549 100644
--- a/src/client/lua_api/phys/bphysbuffer.hpp
+++ b/src/client/lua_api/phys/bphysbuffer.hpp
@@ -8,4 +8,4 @@ extern "C" {
}
#include <irrlicht.h>
-int bphysmodel_register(lua_State* L, irr::IrrlichtDevice* d);
+void bphysmodel_register(lua_State* L);
diff --git a/src/client/lua_api/phys/bphysmodel.hpp b/src/client/lua_api/phys/bphysmodel.hpp
index a59c451..1c0fbac 100644
--- a/src/client/lua_api/phys/bphysmodel.hpp
+++ b/src/client/lua_api/phys/bphysmodel.hpp
@@ -1,11 +1,12 @@
-
+#ifndef _BPHYSMODEL_HPP_
#include <stdio.h>
#include <stdlib.h>
extern "C" {
- #include <lua.h>
- #include <lauxlib.h>
- #include <lualib.h>
+ #include <lua.h>
+ #include <lauxlib.h>
+ #include <lualib.h>
}
#include <irrlicht.h>
int bphysmodel_register(lua_State* L, irr::IrrlichtDevice* d);
+#endif
diff --git a/src/client/lua_api/phys/butil.cpp b/src/client/lua_api/phys/butil.cpp
deleted file mode 100644
index 6319688..0000000
--- a/src/client/lua_api/phys/butil.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <stdio.h>
-
-extern "C" {
- #include <lua.h>
- #include <lauxlib.h>
- #include <lualib.h>
-}
-
-#include <btBulletDynamicsCommon.h>
-
-#include "butil.hpp"
-
-btVector3 lua_popbtvector(lua_State* L,int pos){
- f32 p[3];
-
- for(int i = 0; i < 3; i++){
- lua_pushnumber(L,i+1);
- lua_gettable(L,pos);
- p[i] = (f32) lua_tonumber(L,-1);
- lua_pop(L,1);
- }
-
- printf("Found vector (%f,%f,%f)\n",p[0],p[1],p[2]);
-
- return btVector3(p[0],p[1],p[2]);
-}
diff --git a/src/client/lua_api/phys/butil.hpp b/src/client/lua_api/phys/butil.hpp
deleted file mode 100644
index c288b97..0000000
--- a/src/client/lua_api/phys/butil.hpp
+++ /dev/null
@@ -1,9 +0,0 @@
-extern "C" {
- #include <lua.h>
- #include <lauxlib.h>
- #include <lualib.h>
-}
-
-#include <btBulletDynamicsCommon.h>
-
-btVector3 lua_popbtvector(lua_State* L,int pos);
diff --git a/src/client/lua_api/phys/cbphysbox.cpp b/src/client/lua_api/phys/cbphysbox.cpp
index 6a3d64e..2935d21 100644
--- a/src/client/lua_api/phys/cbphysbox.cpp
+++ b/src/client/lua_api/phys/cbphysbox.cpp
@@ -12,8 +12,9 @@ extern "C" {
#include <irrlicht.h>
#include "cbphysbox.hpp"
#include "../scene/imesh.hpp"
-#include "../../../shared/lua_api/phys/bphysbox.hpp"
+#include <shared/lua_api/phys/bphysbox.hpp>
#include "../scene/igeneric.hpp"
+#include <shared/lua_api/common.hpp>
using namespace irr;
using namespace scene;