Revision: 15213
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15213
Author:   campbellbarton
Date:     2008-06-13 04:20:09 +0200 (Fri, 13 Jun 2008)

Log Message:
-----------
Some pose action ipo corruptions when using BGE, added some debug printf's when 
copying to/from the same pose since it should never happen.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/action.c
    trunk/blender/source/gameengine/Converter/BL_ArmatureObject.cpp

Modified: trunk/blender/source/blender/blenkernel/intern/action.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/action.c     2008-06-12 
21:17:02 UTC (rev 15212)
+++ trunk/blender/source/blender/blenkernel/intern/action.c     2008-06-13 
02:20:09 UTC (rev 15213)
@@ -290,6 +290,12 @@
                return;
        }
        
+       if (*dst==src) {
+               printf("copy_pose source and target are the same\n");
+               *dst=NULL;
+               return;
+       }
+       
        outPose= MEM_callocN(sizeof(bPose), "pose");
        
        duplicatelist(&outPose->chanbase, &src->chanbase);
@@ -740,6 +746,11 @@
        const bPoseChannel *schan;
        bPoseChannel *pchan= pose->chanbase.first;
 
+       if (pose==src) {
+               printf("extract_pose_from_pose source and target are the 
same\n");
+               return;
+       }
+
        for (schan=src->chanbase.first; schan; schan=schan->next, pchan= 
pchan->next) {
                copy_pose_channel_data(pchan, schan);
        }
@@ -817,6 +828,12 @@
                return;
        }
 
+       if (to==from) {
+               printf("copy_pose_result source and target are the same\n");
+               return;
+       }
+
+
        for(pchanfrom= from->chanbase.first; pchanfrom; pchanfrom= 
pchanfrom->next) {
                pchanto= get_pose_channel(to, pchanfrom->name);
                if(pchanto) {

Modified: trunk/blender/source/gameengine/Converter/BL_ArmatureObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ArmatureObject.cpp     
2008-06-12 21:17:02 UTC (rev 15212)
+++ trunk/blender/source/gameengine/Converter/BL_ArmatureObject.cpp     
2008-06-13 02:20:09 UTC (rev 15213)
@@ -92,9 +92,10 @@
 /* there is only 1 unique Pose per Armature */
 void BL_ArmatureObject::ApplyPose()
 {
-       if (m_pose){
+       if (m_pose) {
                // copy to armature object
-               extract_pose_from_pose(m_objArma->pose, m_pose);
+               if (m_objArma->pose != m_pose)/* This should never happen but 
it does - Campbell */
+                       extract_pose_from_pose(m_objArma->pose, m_pose);
                
                // is this needed anymore?
                //if (!m_mrdPose)


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

Reply via email to