[Bf-blender-cvs] [1abf7dd] master: Fix T48697: Brush curve-stroke snaps strangely
Campbell Barton
noreply at git.blender.org
Tue Jun 21 08:14:55 CEST 2016
Commit: 1abf7dd83509b61d16589c5b12b3a2b941bab79f
Author: Campbell Barton
Date: Tue Jun 21 16:17:05 2016 +1000
Branches: master
https://developer.blender.org/rB1abf7dd83509b61d16589c5b12b3a2b941bab79f
Fix T48697: Brush curve-stroke snaps strangely
Support Snapping screen-space 2d curves, (was applying world-space coords in screen-space).
Also show snap settings in header.
===================================================================
M release/scripts/startup/bl_ui/space_view3d.py
M source/blender/editors/transform/transform_snap.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index b88b831..62d71b2 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -81,7 +81,20 @@ class VIEW3D_HT_header(Header):
row.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
# Snap
- if not obj or mode not in {'SCULPT', 'VERTEX_PAINT', 'WEIGHT_PAINT', 'TEXTURE_PAINT'}:
+ show_snap = False
+ if obj is None:
+ show_snap = True
+ else:
+ if mode not in {'SCULPT', 'VERTEX_PAINT', 'WEIGHT_PAINT', 'TEXTURE_PAINT'}:
+ show_snap = True
+ else:
+ paint_settings = UnifiedPaintPanel.paint_settings(context)
+ if paint_settings:
+ brush = paint_settings.brush
+ if brush and brush.stroke_method == 'CURVE':
+ show_snap = True
+
+ if show_snap:
snap_element = toolsettings.snap_element
row = layout.row(align=True)
row.prop(toolsettings, "use_snap", text="")
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index d9b12bb..0bb6431 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -842,6 +842,14 @@ static void ApplySnapTranslation(TransInfo *t, float vec[3])
vec[1] = point[1] - t->tsnap.snapTarget[1];
}
else {
+ if (t->spacetype == SPACE_VIEW3D) {
+ if (t->options & CTX_PAINT_CURVE) {
+ if (ED_view3d_project_float_global(t->ar, point, point, V3D_PROJ_TEST_NOP) != V3D_PROJ_RET_OK) {
+ zero_v3(point); /* no good answer here... */
+ }
+ }
+ }
+
sub_v3_v3v3(vec, point, t->tsnap.snapTarget);
}
}
More information about the Bf-blender-cvs
mailing list