[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16525] trunk/blender/source/gameengine/ Converter/BL_BlenderDataConversion.cpp: Fix a game engine crash with mesh objects parented to an armature

Brecht Van Lommel brechtvanlommel at pandora.be
Sun Sep 14 19:59:22 CEST 2008


Revision: 16525
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16525
Author:   blendix
Date:     2008-09-14 19:59:22 +0200 (Sun, 14 Sep 2008)

Log Message:
-----------
Fix a game engine crash with mesh objects parented to an armature
without vertex groups.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp

Modified: trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2008-09-14 17:56:15 UTC (rev 16524)
+++ trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2008-09-14 17:59:22 UTC (rev 16525)
@@ -783,9 +783,9 @@
 		MT_Point2 uv20(0.0,0.0),uv21(0.0,0.0),uv22(0.0,0.0),uv23(0.0,0.0);
 		unsigned int rgb0,rgb1,rgb2,rgb3 = 0;
 
-		MT_Vector3 no0, no1, no2, no3;
 		MT_Point3 pt0, pt1, pt2, pt3;
-		MT_Vector4 tan0, tan1, tan2, tan3;
+		MT_Vector3 no0(0,0,0), no1(0,0,0), no2(0,0,0), no3(0,0,0);
+		MT_Vector4 tan0(0,0,0,0), tan1(0,0,0,0), tan2(0,0,0,0), tan3(0,0,0,0);
 
 		/* get coordinates, normals and tangents */
 		pt0 = MT_Point3(mvert[mface->v1].co);
@@ -807,8 +807,6 @@
 				NormalShortToFloat(n3, mvert[mface->v4].no);
 				no3 = n3;
 			}
-			else
-				no3 = MT_Vector3(0.0, 0.0, 0.0);
 		}
 		else {
 			float fno[3];
@@ -2186,16 +2184,16 @@
 	for(oit=allblobj.begin(); oit!=allblobj.end(); oit++)
 	{
 		Object* blenderobj = *oit;
-		if (blenderobj->type==OB_MESH){
+		if (blenderobj->type==OB_MESH) {
 			Mesh *me = (Mesh*)blenderobj->data;
 	
 			if (me->dvert){
-				KX_GameObject *obj = converter->FindGameObject(blenderobj);
+				BL_DeformableGameObject *obj = (BL_DeformableGameObject*)converter->FindGameObject(blenderobj);
 	
 				if (obj && blenderobj->parent && blenderobj->parent->type==OB_ARMATURE && blenderobj->partype==PARSKEL){
 					KX_GameObject *par = converter->FindGameObject(blenderobj->parent);
-					if (par)
-						((BL_SkinDeformer*)(((BL_DeformableGameObject*)obj)->m_pDeformer))->SetArmature((BL_ArmatureObject*) par);
+					if (par && obj->m_pDeformer)
+						((BL_SkinDeformer*)obj->m_pDeformer)->SetArmature((BL_ArmatureObject*) par);
 				}
 			}
 		}





More information about the Bf-blender-cvs mailing list