[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