[Bf-blender-cvs] [e1abd5947ff] soc-2021-uv-editor-improvements: UV: Absolute grid snap for UV editor
Siddhartha Jejurkar
noreply at git.blender.org
Sat Jul 10 14:07:09 CEST 2021
Commit: e1abd5947ff920ec322e52b708ae4fc54fa8dec1
Author: Siddhartha Jejurkar
Date: Sat Jul 10 17:32:07 2021 +0530
Branches: soc-2021-uv-editor-improvements
https://developer.blender.org/rBe1abd5947ff920ec322e52b708ae4fc54fa8dec1
UV: Absolute grid snap for UV editor
Adds a UI toggle for absolute grid snap when using Increment snapping in
UV editor. This implementation mimics the behavior observed with the
same toggle in the 3D viewport.
===================================================================
M release/scripts/startup/bl_ui/space_image.py
M source/blender/editors/transform/transform_snap.c
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index 8451d337e92..e7616a4e5ed 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -941,6 +941,10 @@ class IMAGE_PT_snapping(Panel):
col.label(text="Target")
row = col.row(align=True)
row.prop(tool_settings, "snap_target", expand=True)
+
+ col.separator()
+ if 'INCREMENT' in tool_settings.snap_uv_element:
+ col.prop(tool_settings, "use_snap_uv_grid_absolute")
col.label(text="Affect")
row = col.row(align=True)
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 2619fdf3403..a1f65dcc7c8 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -590,6 +590,12 @@ static void initSnappingMode(TransInfo *t)
t->tsnap.project = 0;
t->tsnap.mode = ts->snap_uv_mode;
+ /* NOTE : For now, absolute grid snap only works with translation */
+ if ((t->tsnap.mode & SCE_SNAP_MODE_INCREMENT) && (ts->snap_flag & SCE_SNAP_ABS_UV_GRID) &&
+ (t->mode == TFM_TRANSLATION)) {
+ t->tsnap.mode &= ~SCE_SNAP_MODE_INCREMENT;
+ t->tsnap.mode |= SCE_SNAP_MODE_GRID;
+ }
}
else if (t->spacetype == SPACE_SEQ) {
t->tsnap.mode = SEQ_tool_settings_snap_mode_get(t->scene);
@@ -1539,7 +1545,8 @@ bool transform_snap_grid(TransInfo *t, float *val)
return false;
}
- if (t->spacetype != SPACE_VIEW3D) {
+ /* Don't do grid snapping if not in 3D viewport or UV editor */
+ if (!((t->spacetype == SPACE_VIEW3D) || (t->spacetype == SPACE_IMAGE))) {
return false;
}
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index f110d8c998e..274c4b96ff6 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1460,14 +1460,12 @@ typedef struct ToolSettings {
char edge_mode_live_unwrap;
- char _pad1[1];
-
/* Transform */
char transform_pivot_point;
char transform_flag;
char snap_mode, snap_node_mode;
char snap_uv_mode;
- char snap_flag;
+ short snap_flag;
char snap_target;
char snap_transform_mode_flag;
@@ -2048,6 +2046,7 @@ enum {
#define SCE_SNAP_ABS_GRID (1 << 5)
#define SCE_SNAP_BACKFACE_CULLING (1 << 6)
#define SCE_SNAP_SEQ (1 << 7)
+#define SCE_SNAP_ABS_UV_GRID (1 << 8)
/** #ToolSettings.snap_target */
#define SCE_SNAP_TARGET_CLOSEST 0
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 0a91d5f01bc..57f26ae998c 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -3139,6 +3139,14 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Snap UV Element", "Type of element to snap to");
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL); /* header redraw */
+ prop = RNA_def_property(srna, "use_snap_uv_grid_absolute", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_ABS_UV_GRID);
+ RNA_def_property_ui_text(
+ prop,
+ "Absolute Grid Snap",
+ "Absolute grid alignment while translating (based on the pivot center)");
+ RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL); /* header redraw */
+
prop = RNA_def_property(srna, "snap_target", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "snap_target");
RNA_def_property_enum_items(prop, rna_enum_snap_target_items);
More information about the Bf-blender-cvs
mailing list