[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53065] trunk/blender/source/blender/ blenkernel/intern/dynamicpaint.c: Fix [#33565]: Dynamic Paint modifier surfaces not copied

Miika Hamalainen miika.hamalainen at kolumbus.fi
Sun Dec 16 20:19:45 CET 2012


Revision: 53065
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53065
Author:   miikah
Date:     2012-12-16 19:19:45 +0000 (Sun, 16 Dec 2012)
Log Message:
-----------
Fix [#33565]: Dynamic Paint modifier surfaces not copied

Dynamic Paint canvas surfaces were not copied with modifier.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/dynamicpaint.c

Modified: trunk/blender/source/blender/blenkernel/intern/dynamicpaint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/dynamicpaint.c	2012-12-16 14:50:50 UTC (rev 53064)
+++ trunk/blender/source/blender/blenkernel/intern/dynamicpaint.c	2012-12-16 19:19:45 UTC (rev 53065)
@@ -1193,7 +1193,68 @@
 
 	/* Copy data	*/
 	if (tpmd->canvas) {
+		DynamicPaintSurface *surface;
 		tpmd->canvas->pmd = tpmd;
+		/* free default surface */
+		if (tpmd->canvas->surfaces.first)
+			dynamicPaint_freeSurface(tpmd->canvas->surfaces.first);
+
+		/* copy existing surfaces */
+		for (surface = pmd->canvas->surfaces.first; surface; surface = surface->next) {
+			DynamicPaintSurface *t_surface = dynamicPaint_createNewSurface(tpmd->canvas, NULL);
+
+			/* surface settings */
+			t_surface->brush_group = surface->brush_group;
+			MEM_freeN(t_surface->effector_weights);
+			t_surface->effector_weights = MEM_dupallocN(surface->effector_weights);
+
+			BLI_strncpy(t_surface->name, surface->name, sizeof(t_surface->name));
+			t_surface->format = surface->format;
+			t_surface->type = surface->type;
+			t_surface->disp_type = surface->disp_type;
+			t_surface->image_fileformat = surface->image_fileformat;
+			t_surface->effect_ui = surface->effect_ui;
+			t_surface->preview_id = surface->preview_id;
+			t_surface->init_color_type = surface->init_color_type;
+			t_surface->flags = surface->flags;
+			t_surface->effect = surface->effect;
+
+			t_surface->image_resolution = surface->image_resolution;
+			t_surface->substeps = surface->substeps;
+			t_surface->start_frame = surface->start_frame;
+			t_surface->end_frame = surface->end_frame;
+
+			copy_v4_v4(t_surface->init_color, surface->init_color);
+			t_surface->init_texture = surface->init_texture;
+			BLI_strncpy(t_surface->init_layername, surface->init_layername, sizeof(t_surface->init_layername));
+
+			t_surface->dry_speed = surface->dry_speed;
+			t_surface->diss_speed = surface->diss_speed;
+			t_surface->color_dry_threshold = surface->color_dry_threshold;
+			t_surface->depth_clamp = surface->depth_clamp;
+			t_surface->disp_factor = surface->disp_factor;
+
+
+			t_surface->spread_speed = surface->spread_speed;
+			t_surface->color_spread_speed = surface->color_spread_speed;
+			t_surface->shrink_speed = surface->shrink_speed;
+			t_surface->drip_vel = surface->drip_vel;
+			t_surface->drip_acc = surface->drip_acc;
+
+			t_surface->influence_scale = surface->influence_scale;
+			t_surface->radius_scale = surface->radius_scale;
+
+			t_surface->wave_damping = surface->wave_damping;
+			t_surface->wave_speed = surface->wave_speed;
+			t_surface->wave_timescale = surface->wave_timescale;
+			t_surface->wave_spring = surface->wave_spring;
+
+			BLI_strncpy(t_surface->uvlayer_name, surface->uvlayer_name, sizeof(t_surface->uvlayer_name));
+			BLI_strncpy(t_surface->image_output_path, surface->image_output_path, sizeof(t_surface->image_output_path));
+			BLI_strncpy(t_surface->output_name, surface->output_name, sizeof(t_surface->output_name));
+			BLI_strncpy(t_surface->output_name2, surface->output_name2, sizeof(t_surface->output_name2));
+		}
+		dynamicPaint_resetPreview(tpmd->canvas);
 	}
 	else if (tpmd->brush) {
 		DynamicPaintBrushSettings *brush = pmd->brush, *t_brush = tpmd->brush;




More information about the Bf-blender-cvs mailing list