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,


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to