Commit: f6063935227f0b97f1f635a50486139c09ba04dc Author: jon denning Date: Fri Jun 3 11:53:52 2022 -0400 Branches: retopo_transform https://developer.blender.org/rBf6063935227f0b97f1f635a50486139c09ba04dc
sync with work on laptop =================================================================== M source/blender/editors/transform/transform_ops.c M source/blender/editors/transform/transform_snap.c =================================================================== diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 600f525b428..a56341d227f 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -566,6 +566,16 @@ static bool transform_poll_property(const bContext *UNUSED(C), } } + /* Snapping. */ + { + PropertyRNA *prop_pet = RNA_struct_find_property(op->ptr, "snap"); + if (prop_pet && (prop_pet != prop) && (RNA_property_boolean_get(op->ptr, prop_pet) == false)) { + if (STRPREFIX(prop_id, "snap") || STRPREFIX(prop_id, "use_snap")) { + return false; + } + } + } + return true; } @@ -645,18 +655,21 @@ void Transform_Properties(struct wmOperatorType *ot, int flags) if (flags & P_SNAP) { prop = RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + + prop = RNA_def_enum( + ot->srna, "snap_elements", rna_enum_snap_element_items, 0, "Snap to Elements", ""); + RNA_def_property_flag(prop, PROP_ENUM_FLAG); + + RNA_def_boolean(ot->srna, "use_snap_project", false, "Project Individual Elements", ""); if (flags & P_GEO_SNAP) { - prop = RNA_def_enum(ot->srna, "snap_target", rna_enum_snap_target_items, 0, "Target", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_enum(ot->srna, "snap_target", rna_enum_snap_target_items, 0, "Target", ""); prop = RNA_def_float_vector( ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX); RNA_def_property_flag(prop, PROP_HIDDEN); if (flags & P_ALIGN_SNAP) { - prop = RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", ""); prop = RNA_def_float_vector( ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX); RNA_def_property_flag(prop, PROP_HIDDEN); diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 26a833fcaf0..98ced64ded8 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -816,12 +816,7 @@ static eSnapTargetSelect snap_select_target_get(TransInfo *t) static void initSnappingMode(TransInfo *t) { - ToolSettings *ts = t->settings; - t->tsnap.mode = snap_mode_from_spacetype(t); - t->tsnap.target_select = snap_select_target_get(t); - t->tsnap.face_nearest_steps = max_ii(ts->snap_face_nearest_steps, 1); - - if ((t->spacetype != SPACE_VIEW3D) || !(ts->snap_mode & SCE_SNAP_MODE_FACE_RAYCAST)) { + if ((t->spacetype != SPACE_VIEW3D) || !(t->tsnap.mode & SCE_SNAP_MODE_FACE_RAYCAST)) { /* Force project off when not supported. */ t->tsnap.project = false; } @@ -867,11 +862,15 @@ static void initSnappingMode(TransInfo *t) void initSnapping(TransInfo *t, wmOperator *op) { - resetSnapping(t); - t->tsnap.flag = snap_flag_from_spacetype(t); ToolSettings *ts = t->settings; eSnapTarget snap_target = ts->snap_target; + resetSnapping(t); + t->tsnap.mode = snap_mode_from_spacetype(t); + t->tsnap.flag = snap_flag_from_spacetype(t); + t->tsnap.target_select = snap_select_target_get(t); + t->tsnap.face_nearest_steps = max_ii(ts->snap_face_nearest_steps, 1); + /* if snap property exists */ PropertyRNA *prop; if (op && (prop = RNA_struct_find_property(op->ptr, "snap")) && @@ -879,6 +878,11 @@ void initSnapping(TransInfo *t, wmOperator *op) if (RNA_property_boolean_get(op->ptr, prop)) { t->modifiers |= MOD_SNAP; + if ((prop = RNA_struct_find_property(op->ptr, "snap_elements")) && + RNA_property_is_set(op->ptr, prop)) { + t->tsnap.mode = RNA_property_enum_get(op->ptr, prop); + } + if ((prop = RNA_struct_find_property(op->ptr, "snap_target")) && RNA_property_is_set(op->ptr, prop)) { snap_target = RNA_property_enum_get(op->ptr, prop); @@ -1174,7 +1178,7 @@ static void snap_calc_uv_fn(TransInfo *t, float *UNUSED(vec)) objects, objects_len, t->mval, - t->tsnap.modeSelect == SNAP_NOT_SELECTED, + t->tsnap.mode == SCE_SNAP_MODE_NONE, &dist_sq, t->tsnap.snapPoint)) { t->tsnap.snapPoint[0] *= t->aspect[0]; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs