[Bf-blender-cvs] [8d813f2eed8] retopo_transform: added snapping options to transform api

jon denning noreply at git.blender.org
Sat Jul 16 13:00:38 CEST 2022


Commit: 8d813f2eed8b5139acd670f1d7a33e5a0f449d81
Author: jon denning
Date:   Wed Jun 8 09:45:03 2022 -0400
Branches: retopo_transform
https://developer.blender.org/rB8d813f2eed8b5139acd670f1d7a33e5a0f449d81

added snapping options to transform api

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

M	source/blender/editors/transform/transform_ops.c

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

diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index 472b2b36750..e0d6ecac6f9 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -566,6 +566,17 @@ static bool transform_poll_property(const bContext *UNUSED(C),
     }
   }
 
+  /* Snapping. */
+  {
+    PropertyRNA *prop_snap = RNA_struct_find_property(op->ptr, "snap");
+    if (prop_snap && (prop_snap != prop) &&
+        (RNA_property_boolean_get(op->ptr, prop_snap) == false)) {
+      if (STRPREFIX(prop_id, "snap") || STRPREFIX(prop_id, "use_snap")) {
+        return false;
+      }
+    }
+  }
+
   return true;
 }
 
@@ -648,13 +659,31 @@ void Transform_Properties(struct wmOperatorType *ot, int flags)
     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) {
-      /* 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).  Use "Source snap point" and "Point on
-       * source that will snap to target" for name and description, respectively. */
-      prop = RNA_def_enum(ot->srna, "snap_target", rna_enum_snap_source_items, 0, "Target", "");
+      /* 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).  Use "Source snap point" and "Point on source that will snap to
+       * target" for name and description, respectively. */
+      prop = RNA_def_enum(ot->srna, "snap_target", rna_enum_snap_source_items, 0, "Snap With", "");
       RNA_def_property_flag(prop, PROP_HIDDEN);
+
+      /* Target selection. */
+      prop = RNA_def_boolean(ot->srna, "use_snap_self", true, "Target: Include Active", "");
+      RNA_def_property_flag(prop, PROP_HIDDEN);
+      prop = RNA_def_boolean(ot->srna, "use_snap_edit", true, "Target: Include Edit", "");
+      RNA_def_property_flag(prop, PROP_HIDDEN);
+      prop = RNA_def_boolean(ot->srna, "use_snap_nonedit", true, "Target: Include Non-Edited", "");
+      RNA_def_property_flag(prop, PROP_HIDDEN);
+      prop = RNA_def_boolean(
+          ot->srna, "use_snap_selectable", true, "Target: Exclude Non-Selectable", "");
+      RNA_def_property_flag(prop, PROP_HIDDEN);
+
       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);
@@ -667,6 +696,11 @@ void Transform_Properties(struct wmOperatorType *ot, int flags)
         RNA_def_property_flag(prop, PROP_HIDDEN);
       }
     }
+    else {
+      prop = RNA_def_boolean(
+          ot->srna, "use_snap_selectable", true, "Target: Exclude Non-Selectable", "");
+      RNA_def_property_flag(prop, PROP_HIDDEN);
+    }
   }
 
   if (flags & P_GPENCIL_EDIT) {



More information about the Bf-blender-cvs mailing list