diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-05-01 09:41:08 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-05-01 09:41:08 +0400 |
commit | 84d55542c32e5c979f7ed7a301f28e7bb4c96d36 (patch) | |
tree | 14b63ba0f8d0286d149107f540c494965ebdc5d3 | |
parent | 9736061c07491286021b039d1307b3951496cf3b (diff) |
fix for r36399
- missing copy, free calls to curve falloff.
- missing localizing call for texture preview.
- also moved versioning into do_versions()
-rw-r--r-- | source/blender/blenkernel/intern/texture.c | 17 | ||||
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 35 |
2 files changed, 36 insertions, 16 deletions
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 5cba963b0a6..c518403d663 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -486,7 +486,10 @@ void free_texture(Tex *tex) if(tex->coba) MEM_freeN(tex->coba); if(tex->env) BKE_free_envmap(tex->env); - if(tex->pd) BKE_free_pointdensity(tex->pd); + if(tex->pd) { + curvemapping_free(tex->pd->falloff_curve); + BKE_free_pointdensity(tex->pd); + } if(tex->vd) BKE_free_voxeldata(tex->vd); BKE_free_animdata((struct ID *)tex); @@ -762,9 +765,15 @@ Tex *copy_texture(Tex *tex) if(texn->coba) texn->coba= MEM_dupallocN(texn->coba); if(texn->env) texn->env= BKE_copy_envmap(texn->env); - if(texn->pd) texn->pd= MEM_dupallocN(texn->pd); + + if(texn->pd) { + texn->pd= MEM_dupallocN(texn->pd); + if(texn->pd->falloff_curve) { + texn->pd->falloff_curve = curvemapping_copy(texn->pd->falloff_curve); + } + } + if(texn->vd) texn->vd= MEM_dupallocN(texn->vd); - if(tex->preview) texn->preview = BKE_previewimg_copy(tex->preview); if(tex->nodetree) { @@ -802,6 +811,8 @@ Tex *localize_texture(Tex *tex) texn->pd->coba= MEM_dupallocN(texn->pd->coba); } + texn->pd->falloff_curve= curvemapping_copy(texn->pd->falloff_curve); + } if(texn->vd) { texn->vd= MEM_dupallocN(texn->vd); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 085866414de..3db42e84b94 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2964,20 +2964,9 @@ static void direct_link_texture(FileData *fd, Tex *tex) tex->pd->point_tree = NULL; tex->pd->coba= newdataadr(fd, tex->pd->coba); tex->pd->falloff_curve= newdataadr(fd, tex->pd->falloff_curve); - - /*hack to avoid a do_versions patch*/ - if (tex->pd->falloff_speed_scale == 0.0) - tex->pd->falloff_speed_scale = 100.0; - - if (!tex->pd->falloff_curve) { - tex->pd->falloff_curve = curvemapping_add(1, 0, 0, 1, 1); - - tex->pd->falloff_curve->preset = CURVE_PRESET_LINE; - tex->pd->falloff_curve->cm->flag &= ~CUMA_EXTEND_EXTRAPOLATE; - curvemap_reset(tex->pd->falloff_curve->cm, &tex->pd->falloff_curve->clipr, tex->pd->falloff_curve->preset, CURVEMAP_SLOPE_POSITIVE); - curvemapping_changed(tex->pd->falloff_curve, 0); - } else + if(tex->pd->falloff_curve) { direct_link_curvemapping(fd, tex->pd->falloff_curve); + } } tex->vd= newdataadr(fd, tex->vd); @@ -11637,6 +11626,26 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } } + + { + /* Initialize texture point density curve falloff */ + Tex *tex; + for(tex= main->tex.first; tex; tex= tex->id.next) { + if(tex->pd) { + if (tex->pd->falloff_speed_scale == 0.0) + tex->pd->falloff_speed_scale = 100.0; + + if (!tex->pd->falloff_curve) { + tex->pd->falloff_curve = curvemapping_add(1, 0, 0, 1, 1); + + tex->pd->falloff_curve->preset = CURVE_PRESET_LINE; + tex->pd->falloff_curve->cm->flag &= ~CUMA_EXTEND_EXTRAPOLATE; + curvemap_reset(tex->pd->falloff_curve->cm, &tex->pd->falloff_curve->clipr, tex->pd->falloff_curve->preset, CURVEMAP_SLOPE_POSITIVE); + curvemapping_changed(tex->pd->falloff_curve, 0); + } + } + } + } } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ |