diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2006-12-27 01:02:31 +0300 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2006-12-27 01:02:31 +0300 |
commit | 14d60ca000e11d0a3967ca25ba3b85072869d732 (patch) | |
tree | 9a7f39cdd9532d1a77b9d0b9df4d167a61996134 /source/gameengine | |
parent | 7b14c36a1800ade761b8c4b95691ead20748e3ad (diff) |
-fixes in player: draw physics debugging, only render frames when actually updated, fix with hierarchies not properly build (causing crashes)
Diffstat (limited to 'source/gameengine')
-rw-r--r-- | source/gameengine/GamePlayer/ghost/GPG_Application.cpp | 13 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_ISceneConverter.h | 2 | ||||
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 10 |
3 files changed, 18 insertions, 7 deletions
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); + } + } } } |