[Bf-blender-cvs] [ead00baab1c] strand_editmode: Fix hair follicle array write/read.

Lukas Tönne noreply at git.blender.org
Sun Aug 20 09:31:00 CEST 2017


Commit: ead00baab1c32bc37b99531498b7af2da1e3ace0
Author: Lukas Tönne
Date:   Sat Aug 19 12:26:02 2017 +0100
Branches: strand_editmode
https://developer.blender.org/rBead00baab1c32bc37b99531498b7af2da1e3ace0

Fix hair follicle array write/read.

===================================================================

M	source/blender/blenkernel/intern/mesh_sample.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c

===================================================================

diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c
index 8e823350fce..9f8541d4dfb 100644
--- a/source/blender/blenkernel/intern/mesh_sample.c
+++ b/source/blender/blenkernel/intern/mesh_sample.c
@@ -428,7 +428,6 @@ MeshSampleGenerator *BKE_mesh_sample_gen_surface_random_ex(DerivedMesh *dm, unsi
 	MSurfaceSampleGenerator_Random *gen;
 	
 	DM_ensure_normals(dm);
-	DM_ensure_looptri_data(dm);
 	
 	gen = MEM_callocN(sizeof(MSurfaceSampleGenerator_Random), "MSurfaceSampleGenerator_Random");
 	sample_generator_init(&gen->base, (GeneratorFreeFp)generator_random_free, (GeneratorMakeSampleFp)generator_random_make_sample);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 336b7b58afe..ddd0e2aed73 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5126,10 +5126,14 @@ static void direct_link_hair(FileData *fd, HairPattern *hair)
 		return;
 	}
 	
+	// cache the old pointer to calculate offsets for groups
+	const HairFollicle *old_follicles = hair->follicles;
 	hair->follicles = newdataadr(fd, hair->follicles);
 	
 	link_list(fd, &hair->groups);
 	for (HairGroup *group = hair->groups.first; group; group = group->next) {
+		group->follicles = hair->follicles + (int)(group->follicles - old_follicles);
+		
 		group->strands_parent_index = newdataadr(fd, group->strands_parent_index);
 		group->strands_parent_weight = newdataadr(fd, group->strands_parent_weight);
 		
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 7939d9107bc..3d5f01375b3 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1709,7 +1709,7 @@ static void write_fmaps(WriteData *wd, ListBase *fbase)
 
 static void write_hair(WriteData *wd, HairPattern *hair)
 {
-	writestruct(wd, DATA, HairPattern, hair->num_follicles, hair->follicles);
+	writestruct(wd, DATA, HairFollicle, hair->num_follicles, hair->follicles);
 	
 	writelist(wd, DATA, HairGroup, &hair->groups);
 	for (HairGroup *group = hair->groups.first; group; group = group->next) {



More information about the Bf-blender-cvs mailing list