diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp index fd47df7f770..0d2aa774394 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp @@ -435,10 +435,12 @@ bool GPG_Application::processEvent(GHOST_IEvent* event) m_exitRequested = m_ketsjiengine->GetExitCode(); // kick the engine - m_ketsjiengine->NextFrame(); - - // render the frame - m_ketsjiengine->Render(); + bool renderFrame = m_ketsjiengine->NextFrame(); + if (renderFrame) + { + // render the frame + m_ketsjiengine->Render(); + } } m_exitString = m_ketsjiengine->GetExitString(); } @@ -496,6 +498,9 @@ bool GPG_Application::initEngine(GHOST_IWindow* window, const int stereoMode) bool profile = (SYS_GetCommandLineInt(syshandle, "show_profile", 0) != 0); bool fixedFr = (G.fileflags & G_FILE_ENABLE_ALL_FRAMES); + bool showPhysics = (G.fileflags & G_FILE_SHOW_PHYSICS); + SYS_WriteCommandLineInt(syshandle, "show_physics", showPhysics); + bool fixed_framerate= (SYS_GetCommandLineInt(syshandle, "fixed_framerate", fixedFr) != 0); bool frameRate = (SYS_GetCommandLineInt(syshandle, "show_framerate", 0) != 0); bool useVertexArrays = SYS_GetCommandLineInt(syshandle,"vertexarrays",1) != 0; diff --git a/source/gameengine/Ketsji/KX_ISceneConverter.h b/source/gameengine/Ketsji/KX_ISceneConverter.h index 2727ce7746e..2e4250dfe1e 100644 --- a/source/gameengine/Ketsji/KX_ISceneConverter.h +++ b/source/gameengine/Ketsji/KX_ISceneConverter.h @@ -39,7 +39,7 @@ class KX_ISceneConverter { public: - KX_ISceneConverter() {} + KX_ISceneConverter() :addInitFromFrame(false) {}//this addInitFromFrame is a back hack, todo remove virtual ~KX_ISceneConverter () {}; /* diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index d3eb4db6f35..ecb6c8d9dcf 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -368,8 +368,14 @@ void CcdPhysicsController::setScaling(float scaleX,float scaleY,float scaleZ) if (m_body && m_body->getCollisionShape()) { m_body->getCollisionShape()->setLocalScaling(m_cci.m_scaling); - m_body->getCollisionShape()->calculateLocalInertia(m_cci.m_mass, m_cci.m_localInertiaTensor); - m_body->setMassProps(m_cci.m_mass, m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); + + //printf("no inertia recalc for fixed objects with mass=0\n"); + if (m_cci.m_mass) + { + m_body->getCollisionShape()->calculateLocalInertia(m_cci.m_mass, m_cci.m_localInertiaTensor); + m_body->setMassProps(m_cci.m_mass, m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); + } + } } }