aboutsummaryrefslogtreecommitdiff
path: root/src/client/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/main.cpp')
-rw-r--r--src/client/main.cpp59
1 files changed, 38 insertions, 21 deletions
diff --git a/src/client/main.cpp b/src/client/main.cpp
index 6e515ad..0a82e99 100644
--- a/src/client/main.cpp
+++ b/src/client/main.cpp
@@ -59,10 +59,10 @@ void loadIrrLibs(lua_State* L, IrrlichtDevice* device){
load_iofuncs(L);
}
-void dropRigidBody(btRigidBody* rb){
- ISceneNode *Node = static_cast<ISceneNode*>(rb->getUserPointer());
- if(Node)
- Node->remove();
+void dropCollisionObject(btCollisionObject* rb){
+ ISceneNode *node = static_cast<ISceneNode*>(rb->getUserPointer());
+ if(node)
+ node->remove();
}
void dropChar(btKinematicCharacterController *a){
@@ -71,6 +71,12 @@ void dropChar(btKinematicCharacterController *a){
node->remove();
}
+void dropGhostObject(btGhostObject *ghost){
+ ISceneNode *node = (ISceneNode*)ghost->getUserPointer();
+ if(node)
+ node->remove();
+}
+
// Converts a quaternion to an euler angle
void QuaternionToEuler(const btQuaternion &TQuat, btVector3 &TEuler) {
btScalar W = TQuat.getW();
@@ -88,20 +94,22 @@ void QuaternionToEuler(const btQuaternion &TQuat, btVector3 &TEuler) {
TEuler *= core::RADTODEG;
}
-void UpdateElement(btRigidBody* TObject){
+void UpdateElement(btCollisionObject* obj){
- if(TObject->getUserPointer() != NULL){
+ if(obj->getUserPointer() != NULL){
//UpdateRender(*Iterator);
- scene::ISceneNode *Node = static_cast<scene::ISceneNode *>((TObject)->getUserPointer());
+ scene::ISceneNode *node = static_cast<scene::ISceneNode *>(obj->getUserPointer());
// Set position
- btVector3 Point = TObject->getCenterOfMassPosition();
- Node->setPosition(core::vector3df((f32)Point[0], (f32)Point[1], (f32)Point[2]));
+ btTransform transform = obj->getWorldTransform();
+ btVector3 pos = transform.getOrigin();
+ node->setPosition(core::vector3df((f32)pos[0], (f32)pos[1], (f32)pos[2]));
- // Set rotation
- btVector3 EulerRotation;
- QuaternionToEuler(TObject->getOrientation(), EulerRotation);
- Node->setRotation(core::vector3df(EulerRotation[0], EulerRotation[1], EulerRotation[2]));
+ //Set rotation
+ btQuaternion rot = transform.getRotation();
+ btVector3 eulerrot;
+ QuaternionToEuler(rot,eulerrot);
+ node->setRotation(core::vector3df(eulerrot[0], eulerrot[1], eulerrot[2]));
}
}
@@ -153,11 +161,13 @@ int main(int argc, char *argv[]){
device->setEventReceiver(&ger);
pusherrorfunc(L);//errfunc
- switch(luaL_loadfile(state,"init.lua")){//errmsg or nothing
+ int err = luaL_loadfile(state,"init.lua");
+ printf("Error loading init.lua: %d\n",err);
+ switch(err){//errmsg or nothing
case 0:
break; //no error
case LUA_ERRSYNTAX:
- printf("Syntax error, failed to load: %s\n%s","../data/init.lua",lua_tostring(L,-1));
+ printf("Syntax error, failed to load: %s\n%s\n","../data/init.lua",lua_tostring(L,-1));
break;
case LUA_ERRMEM:
printf("Failed to allocate memroy\n");
@@ -169,6 +179,7 @@ int main(int argc, char *argv[]){
//errfunc,initfile()
printf("Loaded file\n");
lua_pcall(state,0,0,-2);
+ printf("Finished running init.lua");
//int iErr = luaL_dofile(state,"init.lua");
//if(iErr != 0){
//printf("Failed to open lua file:%s/init.lua\n",path);
@@ -198,17 +209,20 @@ int main(int argc, char *argv[]){
//printf("End gameloop phys\n");
if(device->isWindowActive()){
driver->beginScene(true, true, background);
-
- lua_getglobal(state,"GAME");
- lua_getfield(state,-1,"draw");
+ //printf("Device active, began scene\n");
+ pusherrorfunc(state);
+ lua_getglobal(state,"GAME");//err(),{GAME}
+ lua_getfield(state,-1,"draw");//err(),{GAME},GAME.draw()
if(!lua_isnil(state,-1)){
- lua_call(state,0,0);
- lua_pop(state,1);
- }else{
+ lua_pcall(state,0,0,-3);
lua_pop(state,2);
+ }else{
+ lua_pop(state,3);
}
+ //printf("Finished calling GAME.draw()\n");
smgr->drawAll();
+ //printf("Scene manager drew all\n");
lua_getglobal(state,"GAME");
lua_getfield(state,-1,"drawPostScene");
if(!lua_isnil(state,-1)){
@@ -217,7 +231,9 @@ int main(int argc, char *argv[]){
}else{
lua_pop(state,2);
}
+ //printf("Post draw scene completed\n");
guienv->drawAll();
+ //printf("Gui draw all completed\n");
lua_getglobal(state,"GAME");
lua_getfield(state,-1,"drawPostGui");
if(!lua_isnil(state,-1)){
@@ -226,6 +242,7 @@ int main(int argc, char *argv[]){
}else{
lua_pop(state,2);
}
+ //printf("GAME.drawPostGui completed\n");
driver->endScene();
}else{
device->yield();