[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39200] branches/soc-2011-pepper/source/ gameengine: BGE Animations: Fixing the Continue option when using the Flipper play type.

Mitchell Stokes mogurijin at gmail.com
Tue Aug 9 05:06:24 CEST 2011


Revision: 39200
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39200
Author:   moguri
Date:     2011-08-09 03:06:22 +0000 (Tue, 09 Aug 2011)
Log Message:
-----------
BGE Animations: Fixing the Continue option when using the Flipper play type. Also removing a couple of debug prints.

Modified Paths:
--------------
    branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionActuator.cpp
    branches/soc-2011-pepper/source/gameengine/Ketsji/BL_Action.cpp

Modified: branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionActuator.cpp
===================================================================
--- branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionActuator.cpp	2011-08-08 21:28:51 UTC (rev 39199)
+++ branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionActuator.cpp	2011-08-09 03:06:22 UTC (rev 39200)
@@ -174,8 +174,10 @@
 		start = end = prop->GetNumber();
 	}
 
-	// Continue only really makes sense for play stop. All other modes go until they are complete.
-	if (m_flag & ACT_FLAG_CONTINUE && m_playtype == ACT_ACTION_LOOP_STOP)
+	// Continue only really makes sense for play stop and flipper. All other modes go until they are complete.
+	if (m_flag & ACT_FLAG_CONTINUE &&
+		(m_playtype == ACT_ACTION_LOOP_STOP ||
+		m_playtype == ACT_ACTION_FLIPPER))
 		use_continue = true;
 	
 	
@@ -189,6 +191,9 @@
 	
 	if (bPositiveEvent)
 	{
+		if (use_continue && m_flag & ACT_FLAG_ACTIVE)
+			start = m_localtime = obj->GetActionFrame(m_layer);
+
 		if (obj->PlayAction(m_action->id.name+2, start, end, m_layer, m_priority, m_blendin, play_mode, m_layer_weight, m_ipo_flags))
 		{
 			m_flag |= ACT_FLAG_ACTIVE;
@@ -215,11 +220,13 @@
 			return false;
 		}
 
+		
+		m_localtime = obj->GetActionFrame(m_layer);
+		if (m_localtime < min(m_startframe, m_endframe) || m_localtime > max(m_startframe, m_endframe))
+			m_localtime = m_startframe;
+
 		if (m_playtype == ACT_ACTION_LOOP_STOP)
 		{
-			m_localtime = obj->GetActionFrame(m_layer);
-			if (m_localtime < min(m_startframe, m_endframe) || m_localtime > max(m_startframe, m_endframe))
-				m_localtime = m_startframe;
 			obj->StopAction(m_layer); // Stop the action after getting the frame
 
 			// We're done

Modified: branches/soc-2011-pepper/source/gameengine/Ketsji/BL_Action.cpp
===================================================================
--- branches/soc-2011-pepper/source/gameengine/Ketsji/BL_Action.cpp	2011-08-08 21:28:51 UTC (rev 39199)
+++ branches/soc-2011-pepper/source/gameengine/Ketsji/BL_Action.cpp	2011-08-09 03:06:22 UTC (rev 39200)
@@ -252,9 +252,7 @@
 	float dt = m_localtime - m_startframe;
 
 	m_starttime = curtime - dt / (KX_KetsjiEngine::GetAnimFrameRate()*m_speed);
-	printf("Before: %f, ", m_localtime);
 	SetLocalTime(curtime);
-	printf("After: %f\n", m_localtime);
 }
 
 void BL_Action::IncrementBlending(float curtime)




More information about the Bf-blender-cvs mailing list