[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16872] trunk/blender/source: BGE patch: add frameProp to Ipo actuator (Carsten's request).

Benoit Bolsee benoit.bolsee at online.be
Wed Oct 1 23:17:01 CEST 2008


Revision: 16872
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16872
Author:   ben2610
Date:     2008-10-01 23:17:00 +0200 (Wed, 01 Oct 2008)

Log Message:
-----------
BGE patch: add frameProp to Ipo actuator (Carsten's request).

Modified Paths:
--------------
    trunk/blender/source/blender/makesdna/DNA_actuator_types.h
    trunk/blender/source/blender/src/buttons_logic.c
    trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
    trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.h

Modified: trunk/blender/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_actuator_types.h	2008-10-01 19:16:13 UTC (rev 16871)
+++ trunk/blender/source/blender/makesdna/DNA_actuator_types.h	2008-10-01 21:17:00 UTC (rev 16872)
@@ -113,6 +113,7 @@
 	short flag, type;
 	int sta, end;
 	char name[32];
+	char frameProp[32];	/* Set this property to the actions current frame */
 	
 	short pad1, cur, butsta, butend;
 	

Modified: trunk/blender/source/blender/src/buttons_logic.c
===================================================================
--- trunk/blender/source/blender/src/buttons_logic.c	2008-10-01 19:16:13 UTC (rev 16871)
+++ trunk/blender/source/blender/src/buttons_logic.c	2008-10-01 21:17:00 UTC (rev 16872)
@@ -1866,7 +1866,7 @@
 		{
 			ia= act->data;
 			
-			ysize= 52;
+			ysize= 72;
 			
 			glRects(xco, yco-ysize, xco+width, yco);
 			uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1);
@@ -1915,6 +1915,10 @@
 				"Child",	xco+10+(width-80), yco-44, 60, 19, 
 				&ia->flag, 0, 0, 0, 0, 
 				"Update IPO on all children Objects as well");
+			uiDefBut(block, TEX, 0, 
+				"FrameProp: ",		xco+10, yco-64, width-20, 19, 
+				ia->frameProp, 0.0, 31.0, 0, 0, 
+				"Assign this property this action current frame number");
 
 			yco-= ysize;
 			break;

Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp	2008-10-01 19:16:13 UTC (rev 16871)
+++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp	2008-10-01 21:17:00 UTC (rev 16872)
@@ -235,7 +235,8 @@
 			{
 				bIpoActuator* ipoact = (bIpoActuator*) bact->data;
 				bool ipochild = (ipoact->flag & ACT_IPOCHILD) !=0;
-				STR_String propname = ( ipoact->name ? ipoact->name : "");
+				STR_String propname = ipoact->name;
+				STR_String frameProp = ipoact->frameProp;
 				// first bit?
 				bool ipo_as_force = (ipoact->flag & ACT_IPOFORCE);
 				bool local = (ipoact->flag & ACT_IPOLOCAL);
@@ -244,6 +245,7 @@
 				KX_IpoActuator* tmpbaseact = new KX_IpoActuator(
 					gameobj,
 					propname ,
+					frameProp,
 					ipoact->sta,
 					ipoact->end,
 					ipochild,

Modified: trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.cpp	2008-10-01 19:16:13 UTC (rev 16871)
+++ trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.cpp	2008-10-01 21:17:00 UTC (rev 16872)
@@ -37,6 +37,7 @@
  
 #include "KX_IpoActuator.h"
 #include "KX_GameObject.h"
+#include "FloatValue.h"
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -62,6 +63,7 @@
 
 KX_IpoActuator::KX_IpoActuator(SCA_IObject* gameobj,
 							   const STR_String& propname,
+							   const STR_String& framePropname,
 							   float starttime,
 							   float endtime,
 							   bool recurse,
@@ -78,6 +80,7 @@
 	m_localtime(starttime),
 	m_direction(1),
 	m_propname(propname),
+	m_framepropname(framePropname),
 	m_ipo_as_force(ipo_as_force),
 	m_ipo_add(ipo_add),
 	m_ipo_local(ipo_local),
@@ -356,7 +359,20 @@
 	default:
 		result = false;
 	}
-	
+
+	/* Set the property if its defined */
+	if (m_framepropname[0] != '\0') {
+		CValue* propowner = GetParent();
+		CValue* oldprop = propowner->GetProperty(m_framepropname);
+		CValue* newval = new CFloatValue(m_localtime);
+		if (oldprop) {
+			oldprop->SetValue(newval);
+		} else {
+			propowner->SetProperty(m_framepropname, newval);
+		}
+		newval->Release();
+	}
+
 	if (!result)
 	{
 		if (m_type != KX_ACT_IPO_LOOPSTOP)

Modified: trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.h	2008-10-01 19:16:13 UTC (rev 16871)
+++ trunk/blender/source/gameengine/Ketsji/KX_IpoActuator.h	2008-10-01 21:17:00 UTC (rev 16872)
@@ -72,6 +72,9 @@
 	/** Name of the property (only used in from_prop mode). */
 	STR_String	m_propname;
 
+	/** Name of the property where we write the current frame number */
+	STR_String	m_framepropname;
+
 	/** Interpret the ipo as a force? */
 	bool    m_ipo_as_force;
 	
@@ -111,6 +114,7 @@
 
 	KX_IpoActuator(SCA_IObject* gameobj,
 				   const STR_String& propname,
+				   const STR_String& framePropname,
 				   float starttime,
 				   float endtime,
 				   bool recurse,





More information about the Bf-blender-cvs mailing list