[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45584] trunk/blender/source/blender: Fix loading external MDisps, BMesh merge bug.

Nicholas Bishop nicholasbishop at gmail.com
Fri Apr 13 07:39:27 CEST 2012


Revision: 45584
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45584
Author:   nicholasbishop
Date:     2012-04-13 05:39:27 +0000 (Fri, 13 Apr 2012)
Log Message:
-----------
Fix loading external MDisps, BMesh merge bug.

* When converting mfaces to mpolys, load external MDisp data in, add
  CustomDataExternal struct to loopdata if needed.

* Fix multires modifier's filepath RNA functions to use ldata rather
  than fdata.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2012-04-13 04:02:26 UTC (rev 45583)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2012-04-13 05:39:27 UTC (rev 45584)
@@ -1978,6 +1978,11 @@
 		float (*disps)[3] = fd->disps;
 		int i, tot = mf->v4 ? 4 : 3;
 		int side, corners;
+
+		if (CustomData_external_test(&me->fdata, CD_MDISPS)) {
+			CustomData_external_add(&me->ldata, &me->id, CD_MDISPS,
+									me->totloop, me->fdata.external->filename);
+		}
 		
 		corners = multires_mdisp_corners(fd);
 		
@@ -2042,6 +2047,9 @@
 	CustomData_to_bmeshpoly(&mesh->fdata, &mesh->pdata, &mesh->ldata,
 		mesh->totloop, mesh->totpoly);
 
+	/* ensure external data is transferred */
+	CustomData_external_read(&mesh->fdata, &mesh->id, CD_MASK_MDISPS, mesh->totface);
+
 	eh = BLI_edgehash_new();
 
 	/*build edge hash*/

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2012-04-13 04:02:26 UTC (rev 45583)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2012-04-13 05:39:27 UTC (rev 45584)
@@ -3708,7 +3708,14 @@
 
 			/*check if we need to convert mfaces to mpolys*/
 			if (me->totface && !me->totpoly) {
+				/* temporarily switch main so that reading from
+				   external CustomData works */
+				Main *gmain = G.main;
+				G.main = main;
+				
 				BKE_mesh_convert_mfaces_to_mpolys(me);
+
+				G.main = gmain;
 			}
 			
 			/*

Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-04-13 04:02:26 UTC (rev 45583)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-04-13 05:39:27 UTC (rev 45584)
@@ -490,7 +490,7 @@
 static void rna_MultiresModifier_filepath_get(PointerRNA *ptr, char *value)
 {
 	Object *ob = (Object*)ptr->id.data;
-	CustomDataExternal *external = ((Mesh*)ob->data)->fdata.external;
+	CustomDataExternal *external = ((Mesh*)ob->data)->ldata.external;
 
 	BLI_strncpy(value, (external)? external->filename: "", sizeof(external->filename));
 }
@@ -498,7 +498,7 @@
 static void rna_MultiresModifier_filepath_set(PointerRNA *ptr, const char *value)
 {
 	Object *ob = (Object*)ptr->id.data;
-	CustomDataExternal *external = ((Mesh*)ob->data)->fdata.external;
+	CustomDataExternal *external = ((Mesh*)ob->data)->ldata.external;
 
 	if (external && strcmp(external->filename, value)) {
 		BLI_strncpy(external->filename, value, sizeof(external->filename));
@@ -509,7 +509,7 @@
 static int rna_MultiresModifier_filepath_length(PointerRNA *ptr)
 {
 	Object *ob = (Object*)ptr->id.data;
-	CustomDataExternal *external = ((Mesh*)ob->data)->fdata.external;
+	CustomDataExternal *external = ((Mesh*)ob->data)->ldata.external;
 
 	return strlen((external)? external->filename: "");
 }




More information about the Bf-blender-cvs mailing list