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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2008-09-17 01:11:38 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2008-09-17 01:11:38 +0400
commit73fd8000775e1558b5140ace86860477d61d8b98 (patch)
treea37da0fe2690c8a67baa7666724d77744ea2da5f /source/gameengine/Ketsji/KX_IpoActuator.cpp
parent0c77a178da71bcd5f8a83c1c951885320ba8a8d2 (diff)
Fix for bug #5413: game engine armature actions and shapes keys
didn't work correct with scene suspend/resume, now works the same as IPO's.
Diffstat (limited to 'source/gameengine/Ketsji/KX_IpoActuator.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_IpoActuator.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/source/gameengine/Ketsji/KX_IpoActuator.cpp b/source/gameengine/Ketsji/KX_IpoActuator.cpp
index a203ea6a6ff..75e4ade6574 100644
--- a/source/gameengine/Ketsji/KX_IpoActuator.cpp
+++ b/source/gameengine/Ketsji/KX_IpoActuator.cpp
@@ -130,7 +130,6 @@ void KX_IpoActuator::SetStartTime(float curtime)
{
float direction = m_startframe < m_endframe ? 1.0f : -1.0f;
- curtime = curtime - KX_KetsjiEngine::GetSuspendedDelta();
if (m_direction > 0)
m_starttime = curtime - direction*(m_localtime - m_startframe)/KX_KetsjiEngine::GetAnimFrameRate();
else
@@ -139,7 +138,7 @@ void KX_IpoActuator::SetStartTime(float curtime)
void KX_IpoActuator::SetLocalTime(float curtime)
{
- float delta_time = ((curtime - m_starttime) - KX_KetsjiEngine::GetSuspendedDelta())*KX_KetsjiEngine::GetAnimFrameRate();
+ float delta_time = (curtime - m_starttime)*KX_KetsjiEngine::GetAnimFrameRate();
// negative delta_time is caused by floating point inaccuracy
// perhaps the inaccuracy could be reduced a bit
@@ -165,6 +164,8 @@ bool KX_IpoActuator::Update(double curtime, bool frame)
int numevents = 0;
bool bIpoStart = false;
+ curtime -= KX_KetsjiEngine::GetSuspendedDelta();
+
if (frame)
{
numevents = m_events.size();
@@ -180,7 +181,7 @@ bool KX_IpoActuator::Update(double curtime, bool frame)
if (m_starttime < -2.0f*start_smaller_then_end*(m_endframe - m_startframe))
{
// start for all Ipo, initial start for LOOP_STOP
- m_starttime = curtime - KX_KetsjiEngine::GetSuspendedDelta();
+ m_starttime = curtime;
m_bIpoPlaying = true;
bIpoStart = true;
}