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:
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r--source/blender/makesdna/DNA_scene_defaults.h2
-rw-r--r--source/blender/makesdna/DNA_scene_types.h52
2 files changed, 35 insertions, 19 deletions
diff --git a/source/blender/makesdna/DNA_scene_defaults.h b/source/blender/makesdna/DNA_scene_defaults.h
index 74db1d14bbc..6cc01d254ce 100644
--- a/source/blender/makesdna/DNA_scene_defaults.h
+++ b/source/blender/makesdna/DNA_scene_defaults.h
@@ -337,7 +337,9 @@
.snap_mode = SCE_SNAP_MODE_INCREMENT, \
.snap_node_mode = SCE_SNAP_MODE_GRID, \
.snap_uv_mode = SCE_SNAP_MODE_INCREMENT, \
+ .snap_flag = SCE_SNAP_TO_INCLUDE_EDITED | SCE_SNAP_TO_INCLUDE_NONEDITED, \
.snap_transform_mode_flag = SCE_SNAP_TRANSFORM_MODE_TRANSLATE, \
+ .snap_face_nearest_steps = 1, \
\
.curve_paint_settings = _DNA_DEFAULTS_CurvePaintSettings, \
\
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 1c62a550e60..c45b06f8c85 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1496,19 +1496,24 @@ typedef struct ToolSettings {
char transform_pivot_point;
char transform_flag;
/** Snap elements (per spacetype), #eSnapMode. */
- char snap_mode;
+ char _pad1[1];
+ short snap_mode;
char snap_node_mode;
char snap_uv_mode;
/** Generic flags (per spacetype), #eSnapFlag. */
- char snap_flag;
- char snap_flag_node;
- char snap_flag_seq;
- char snap_uv_flag;
+ short snap_flag;
+ short snap_flag_node;
+ short snap_flag_seq;
+ short snap_uv_flag;
/** Default snap source, #eSnapSourceSelect. */
- /* TODO(@gfxcoder): Rename `snap_target` to `snap_source_point`, because target is incorrect. */
+ /* TODO(@gfxcoder): Rename `snap_target` to `snap_source` to avoid previous ambiguity of
+ * "target" (now, "source" is geometry to be moved and "target" is geometry to which moved
+ * geometry is snapped). */
char snap_target;
/** Snap mask for transform modes, #eSnapTransformMode. */
char snap_transform_mode_flag;
+ /** Steps to break transformation into with face nearest snapping */
+ short snap_face_nearest_steps;
char proportional_edit, prop_mode;
/** Proportional edit, object mode. */
@@ -2085,10 +2090,15 @@ typedef enum eSnapFlag {
SCE_SNAP = (1 << 0),
SCE_SNAP_ROTATE = (1 << 1),
SCE_SNAP_PEEL_OBJECT = (1 << 2),
- SCE_SNAP_PROJECT = (1 << 3),
- SCE_SNAP_NO_SELF = (1 << 4),
+ SCE_SNAP_PROJECT = (1 << 3), /* Project individual elements instead of whole object. */
+ SCE_SNAP_NOT_TO_ACTIVE = (1 << 4), /* Was `SCE_SNAP_NO_SELF`, but self should be active. */
SCE_SNAP_ABS_GRID = (1 << 5),
SCE_SNAP_BACKFACE_CULLING = (1 << 6),
+ SCE_SNAP_KEEP_ON_SAME_OBJECT = (1 << 7),
+ /* see #eSnapTargetSelect */
+ SCE_SNAP_TO_INCLUDE_EDITED = (1 << 8),
+ SCE_SNAP_TO_INCLUDE_NONEDITED = (1 << 9),
+ SCE_SNAP_TO_ONLY_SELECTABLE = (1 << 10),
} eSnapFlag;
/* Due to dependency conflicts with Cycles, header cannot directly include `BLI_utildefines.h`. */
/* TODO: move this macro to a more general place. */
@@ -2096,7 +2106,7 @@ typedef enum eSnapFlag {
ENUM_OPERATORS(eSnapFlag, SCE_SNAP_BACKFACE_CULLING)
#endif
-/** #ToolSettings.snap_target and #TransSnap.source_select */
+/** See #ToolSettings.snap_target (to be renamed `snap_source`) and #TransSnap.source_select */
typedef enum eSnapSourceSelect {
SCE_SNAP_SOURCE_CLOSEST = 0,
SCE_SNAP_SOURCE_CENTER = 1,
@@ -2104,13 +2114,15 @@ typedef enum eSnapSourceSelect {
SCE_SNAP_SOURCE_ACTIVE = 3,
} eSnapSourceSelect;
-/** #TransSnap.target_select and #ToolSettings.snap_flag (SCE_SNAP_NO_SELF) */
+/** #TransSnap.target_select and #ToolSettings.snap_flag (#SCE_SNAP_NOT_TO_ACTIVE,
+ * #SCE_SNAP_TO_INCLUDE_EDITED, #SCE_SNAP_TO_INCLUDE_NONEDITED, #SCE_SNAP_TO_ONLY_SELECTABLE) */
typedef enum eSnapTargetSelect {
SCE_SNAP_TARGET_ALL = 0,
- SCE_SNAP_TARGET_NOT_SELECTED = 1,
- SCE_SNAP_TARGET_NOT_ACTIVE = 2,
- SCE_SNAP_TARGET_NOT_EDITED = 3,
- SCE_SNAP_TARGET_ONLY_SELECTABLE = 4,
+ SCE_SNAP_TARGET_NOT_SELECTED = (1 << 0),
+ SCE_SNAP_TARGET_NOT_ACTIVE = (1 << 1),
+ SCE_SNAP_TARGET_NOT_EDITED = (1 << 2),
+ SCE_SNAP_TARGET_ONLY_SELECTABLE = (1 << 3),
+ SCE_SNAP_TARGET_NOT_NONEDITED = (1 << 4),
} eSnapTargetSelect;
/** #ToolSettings.snap_mode */
@@ -2118,19 +2130,21 @@ typedef enum eSnapMode {
SCE_SNAP_MODE_NONE = 0,
SCE_SNAP_MODE_VERTEX = (1 << 0),
SCE_SNAP_MODE_EDGE = (1 << 1),
- SCE_SNAP_MODE_FACE = (1 << 2), /* TODO(@gfxcoder): Rename to `SCE_SNAP_MODE_FACE_RAYCAST`
- when other face snapping methods are added. */
+ SCE_SNAP_MODE_FACE_RAYCAST = (1 << 2),
SCE_SNAP_MODE_VOLUME = (1 << 3),
SCE_SNAP_MODE_EDGE_MIDPOINT = (1 << 4),
SCE_SNAP_MODE_EDGE_PERPENDICULAR = (1 << 5),
- SCE_SNAP_MODE_GEOM = (SCE_SNAP_MODE_VERTEX | SCE_SNAP_MODE_EDGE | SCE_SNAP_MODE_FACE |
- SCE_SNAP_MODE_EDGE_PERPENDICULAR | SCE_SNAP_MODE_EDGE_MIDPOINT),
+ SCE_SNAP_MODE_FACE_NEAREST = (1 << 8),
+
+ SCE_SNAP_MODE_GEOM = (SCE_SNAP_MODE_VERTEX | SCE_SNAP_MODE_EDGE | SCE_SNAP_MODE_FACE_RAYCAST |
+ SCE_SNAP_MODE_EDGE_PERPENDICULAR | SCE_SNAP_MODE_EDGE_MIDPOINT |
+ SCE_SNAP_MODE_FACE_NEAREST),
/** #ToolSettings.snap_node_mode */
SCE_SNAP_MODE_NODE_X = (1 << 0),
SCE_SNAP_MODE_NODE_Y = (1 << 1),
- /* #ToolSettings.snap_mode and #ToolSettings.snap_node_mode and #ToolSettings.snap_uv_mode */
+ /** #ToolSettings.snap_mode and #ToolSettings.snap_node_mode and #ToolSettings.snap_uv_mode */
SCE_SNAP_MODE_INCREMENT = (1 << 6),
SCE_SNAP_MODE_GRID = (1 << 7),
} eSnapMode;