[Bf-blender-cvs] [38d9301] strand_editmode: Another fix for mirror editing of strand data.

Lukas Tönne noreply at git.blender.org
Tue May 5 14:29:17 CEST 2015


Commit: 38d93016746cc498f7b52ad1547de1548e3d1556
Author: Lukas Tönne
Date:   Tue May 5 14:27:44 2015 +0200
Branches: strand_editmode
https://developer.blender.org/rB38d93016746cc498f7b52ad1547de1548e3d1556

Another fix for mirror editing of strand data.

Currently strand edit mode tool use the object data 'x mirror' flag.
This flag is only available on mesh objects, but the strand editing
can be used for dupli override caches etc. as well. Eventually strand
editing should get it's own independent flag to avoid this problem.

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

M	release/scripts/startup/bl_ui/space_view3d_toolbar.py
M	source/blender/editors/hair/hair_stroke.c

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

diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 0c2e1d1..8a27d71 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -1879,8 +1879,9 @@ class VIEW3D_PT_tools_hairmode(View3DPanel, Panel):
         settings = context.tool_settings.hair_edit
         ob = context.active_object
 
-        col = layout.column(align=True)
-        col.prop(ob.data, "use_mirror_x")
+        if ob.data:
+            col = layout.column(align=True)
+            col.prop(ob.data, "use_mirror_x")
 
 
 # Grease Pencil drawing tools
diff --git a/source/blender/editors/hair/hair_stroke.c b/source/blender/editors/hair/hair_stroke.c
index 76b63e8..38c1b86 100644
--- a/source/blender/editors/hair/hair_stroke.c
+++ b/source/blender/editors/hair/hair_stroke.c
@@ -264,6 +264,7 @@ static int hair_tool_apply_strand_edges(HairToolData *data, EdgeToolCb cb, void
 	const float rad = BKE_brush_size_get(scene, brush);
 	const float radsq = rad*rad;
 	const float threshold = 0.0f; /* XXX could be useful, is it needed? */
+	const bool use_mirror = hair_use_mirror_x(data->ob);
 	
 	BMVert *v, *vprev, *v_mirr, *vprev_mirr;
 	BMIter iter;
@@ -280,9 +281,11 @@ static int hair_tool_apply_strand_edges(HairToolData *data, EdgeToolCb cb, void
 					cb(data, userdata, vprev, v, factor, lambda);
 					++tot;
 					
-					v_mirr = ED_strands_mirror_get(data->edit, v);
-					if (vprev_mirr && v_mirr)
-						cb(data, userdata, vprev_mirr, v_mirr, factor, lambda);
+					if (use_mirror) {
+						v_mirr = ED_strands_mirror_get(data->edit, v);
+						if (vprev_mirr && v_mirr)
+							cb(data, userdata, vprev_mirr, v_mirr, factor, lambda);
+					}
 				}
 			}
 		}




More information about the Bf-blender-cvs mailing list