[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