Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Luc Peurière <jlp@nerim.net>2005-12-18 22:10:26 +0300
committerJean-Luc Peurière <jlp@nerim.net>2005-12-18 22:10:26 +0300
commit63d0e03bcfd6a9d1e0ce800d2f7d797e336f7f21 (patch)
treee530c810698df762d41b2eaa8c9a22225a69d509 /source/gameengine/Ketsji/KX_KetsjiEngine.cpp
parentc33831ac1632ac0a0e42e174035dd0d0ea15a087 (diff)
applying Volker Mische engine patch
correct bug #3594
Diffstat (limited to 'source/gameengine/Ketsji/KX_KetsjiEngine.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index a163e8fde58..e82ecd83fee 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -99,6 +99,9 @@ const char KX_KetsjiEngine::m_profileLabels[tc_numCategories][15] = {
double KX_KetsjiEngine::m_ticrate = DEFAULT_LOGIC_TIC_RATE;
+double KX_KetsjiEngine::m_suspendedtime = 0.0;
+double KX_KetsjiEngine::m_suspendeddelta = 0.0;
+
/**
* Constructor of the Ketsji Engine
@@ -355,6 +358,12 @@ void KX_KetsjiEngine::NextFrame()
if (!scene->IsSuspended())
{
+ // if the scene was suspended recalcutlate the delta tu "curtime"
+ m_suspendedtime = scene->getSuspendedTime();
+ if (scene->getSuspendedTime()!=0.0)
+ scene->setSuspendedDelta(scene->getSuspendedDelta()+curtime-scene->getSuspendedTime());
+ m_suspendeddelta = scene->getSuspendedDelta();
+
m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
m_logger->StartLog(tc_network, m_kxsystem->GetTimeInSeconds(), true);
scene->GetNetworkScene()->proceed(localtime);
@@ -403,7 +412,11 @@ void KX_KetsjiEngine::NextFrame()
m_sceneconverter->WritePhysicsObjectToAnimationIpo(m_currentFrame++);
}
+ scene->setSuspendedTime(0.0);
} // suspended
+ else
+ if(scene->getSuspendedTime()==0.0)
+ scene->setSuspendedTime(curtime);
DoSound(scene);
@@ -439,6 +452,12 @@ void KX_KetsjiEngine::NextFrame()
if (!scene->IsSuspended())
{
+ // if the scene was suspended recalcutlate the delta tu "curtime"
+ m_suspendedtime = scene->getSuspendedTime();
+ if (scene->getSuspendedTime()!=0.0)
+ scene->setSuspendedDelta(scene->getSuspendedDelta()+curtime-scene->getSuspendedTime());
+ m_suspendeddelta = scene->getSuspendedDelta();
+
// set Python hooks for each scene
PHY_SetActiveEnvironment(scene->GetPhysicsEnvironment());
PHY_SetActiveScene(scene);
@@ -459,7 +478,12 @@ void KX_KetsjiEngine::NextFrame()
// Actuators can affect the scenegraph
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
scene->UpdateParents(curtime);
+
+ scene->setSuspendedTime(0.0);
} // suspended
+ else
+ if(scene->getSuspendedTime()==0.0)
+ scene->setSuspendedTime(curtime);
DoSound(scene);
@@ -1224,6 +1248,11 @@ bool KX_KetsjiEngine::GetUseFixedTime(void) const
return m_bFixedTime;
}
+double KX_KetsjiEngine::GetSuspendedDelta()
+{
+ return m_suspendeddelta;
+}
+
double KX_KetsjiEngine::GetTicRate()
{
return m_ticrate;