Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2012-04-13 09:39:27 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2012-04-13 09:39:27 +0400
commit60d3b8f27b31fea67a91184868b20ed95bab458a (patch)
tree5089854f068c26ba026e16e07c580ac2d40ee743 /source
parente9358a38060fefe280018e8ac62e142dabc32a0d (diff)
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.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/mesh.c8
-rw-r--r--source/blender/blenloader/intern/readfile.c7
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c6
3 files changed, 18 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index bcb95211bcc..9a10a00bf45 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -1978,6 +1978,11 @@ static void bm_corners_to_loops(Mesh *me, int findex, int loopstart, int numTex,
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 @@ void BKE_mesh_convert_mfaces_to_mpolys(Mesh *mesh)
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*/
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 60f4f3c0f31..e9a5dada044 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -3708,7 +3708,14 @@ static void lib_link_mesh(FileData *fd, Main *main)
/*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;
}
/*
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 11c58139630..42849fbfa16 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -490,7 +490,7 @@ static int rna_MultiresModifier_external_get(PointerRNA *ptr)
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_get(PointerRNA *ptr, char *value)
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 void rna_MultiresModifier_filepath_set(PointerRNA *ptr, const char *value
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: "");
}