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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-05-01 09:41:08 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-05-01 09:41:08 +0400
commit84d55542c32e5c979f7ed7a301f28e7bb4c96d36 (patch)
tree14b63ba0f8d0286d149107f540c494965ebdc5d3
parent9736061c07491286021b039d1307b3951496cf3b (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.c17
-rw-r--r--source/blender/blenloader/intern/readfile.c35
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! */