diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2011-07-14 11:03:33 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2011-07-14 11:03:33 +0400 |
commit | ad08de4c2afda4456585f6e9bb462be1143f9c14 (patch) | |
tree | 7393dad9f2c76c6d2e36d485698ba7b2ecb53f11 /source/gameengine/Ketsji/KX_Scene.cpp | |
parent | d838d82151efaa801276db0f0c972b5bbc8f1876 (diff) |
BGE Animations: Now animations are only updated based on the set animation speed. This offers a significant performance increase (about 2x fps in my animation stress tests) for cases such as the defaults: 60fps logic and 30fps animations. This means that animations now only have to be updated half the time. I've also added Animations as a profiling category. This is the time spent in Blender's animation code, and not in the BL_ShapeDeformer (the mesh deformation). I'd like the add the deformation too, but right now it's counted in the rasterizer, and I don't see an obviously clean way to have it counted as animation instead. I'll investigate more.
Diffstat (limited to 'source/gameengine/Ketsji/KX_Scene.cpp')
-rw-r--r-- | source/gameengine/Ketsji/KX_Scene.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index 27bf5d19b14..a49c1bf4b4c 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -1502,13 +1502,15 @@ void KX_Scene::LogicBeginFrame(double curtime) m_logicmgr->BeginFrame(curtime, 1.0/KX_KetsjiEngine::GetTicRate()); } - - -void KX_Scene::LogicUpdateFrame(double curtime, bool frame) +void KX_Scene::UpdateAnimations(double curtime) { // Update any animations for (int i=0; i<GetObjectList()->GetCount(); ++i) ((KX_GameObject*)GetObjectList()->GetValue(i))->UpdateActionManager(curtime); +} + +void KX_Scene::LogicUpdateFrame(double curtime, bool frame) +{ m_logicmgr->UpdateFrame(curtime, frame); } @@ -1671,6 +1673,11 @@ double KX_Scene::getSuspendedDelta() return m_suspendeddelta; } +short KX_Scene::GetAnimationFPS() +{ + return m_blenderScene->r.frs_sec; +} + #ifdef USE_BULLET #include "KX_BulletPhysicsController.h" #endif |