[Bf-blender-cvs] [b3b59e3b565] master: Transform: support snap to children with 'Affect Parents'

Campbell Barton noreply at git.blender.org
Tue Sep 3 18:05:24 CEST 2019


Commit: b3b59e3b5657ad95ecca4b8c47c3b20c7e55da35
Author: Campbell Barton
Date:   Wed Sep 4 01:50:39 2019 +1000
Branches: master
https://developer.blender.org/rBb3b59e3b5657ad95ecca4b8c47c3b20c7e55da35

Transform: support snap to children with 'Affect Parents'

Resolves T69398

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

M	source/blender/editors/transform/transform_conversions.c
M	source/blender/editors/transform/transform_snap_object.c
M	source/blender/makesdna/DNA_object_types.h

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

diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 328cb1d1bbf..611992c1d3c 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -6572,7 +6572,7 @@ static void set_trans_object_base_flags(TransInfo *t)
   trans_object_base_deps_flag_prepare(view_layer);
   /* Traverse all bases and set all possible flags. */
   for (Base *base = view_layer->object_bases.first; base; base = base->next) {
-    base->flag_legacy &= ~BA_WAS_SEL;
+    base->flag_legacy &= ~(BA_WAS_SEL | BA_TRANSFORM_LOCKED_IN_PLACE);
     if (BASE_SELECTED_EDITABLE(v3d, base)) {
       Object *ob = base->object;
       Object *parsel = ob->parent;
@@ -6688,7 +6688,8 @@ static void clear_trans_object_base_flags(TransInfo *t)
     }
 
     base->flag_legacy &= ~(BA_WAS_SEL | BA_SNAP_FIX_DEPS_FIASCO | BA_TEMP_TAG |
-                           BA_TRANSFORM_CHILD | BA_TRANSFORM_PARENT);
+                           BA_TRANSFORM_CHILD | BA_TRANSFORM_PARENT |
+                           BA_TRANSFORM_LOCKED_IN_PLACE);
   }
 }
 
@@ -8137,6 +8138,7 @@ static void createTransObject(bContext *C, TransInfo *t)
                   trans_obchild_in_obmode_ensure_object(
                       tdo, ob, ob_parent_recurse, OB_SKIP_CHILD_PARENT_APPLY_TRANSFORM);
                   BLI_ghash_insert(objects_parent_root, ob, ob_parent_recurse);
+                  base->flag_legacy |= BA_TRANSFORM_LOCKED_IN_PLACE;
                 }
               }
             }
@@ -8157,6 +8159,7 @@ static void createTransObject(bContext *C, TransInfo *t)
           if (BASE_XFORM_INDIRECT(base_parent) ||
               BLI_gset_haskey(objects_in_transdata, ob->parent)) {
             trans_obchild_in_obmode_ensure_object(tdo, ob, NULL, OB_SKIP_CHILD_PARENT_IS_XFORM);
+            base->flag_legacy |= BA_TRANSFORM_LOCKED_IN_PLACE;
           }
           else {
             Object *ob_parent_recurse = BLI_ghash_lookup(objects_parent_root, ob->parent);
diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c
index d57598babee..d3cf52ce3fd 100644
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@ -226,7 +226,10 @@ static void iter_snap_objects(SnapObjectContext *sctx,
       continue;
     }
 
-    if (base->flag_legacy & BA_SNAP_FIX_DEPS_FIASCO) {
+    if (base->flag_legacy & BA_TRANSFORM_LOCKED_IN_PLACE) {
+      /* pass */
+    }
+    else if (base->flag_legacy & BA_SNAP_FIX_DEPS_FIASCO) {
       continue;
     }
 
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index 5442bb2edba..b4d65aa7ea9 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -607,7 +607,11 @@ enum {
 /* NOTE: this was used as a proper setting in past, so nullify before using */
 #define BA_TEMP_TAG (1 << 5)
 
-/* #define BA_FROMSET          (1 << 7) */ /*UNUSED*/
+/**
+ * Even if this is is tagged for transform, this flag means it's being locked in place.
+ * Use for #SCE_XFORM_SKIP_CHILDREN.
+ */
+#define BA_TRANSFORM_LOCKED_IN_PLACE (1 << 7)
 
 #define BA_TRANSFORM_CHILD (1 << 8)   /* child of a transformed object */
 #define BA_TRANSFORM_PARENT (1 << 13) /* parent of a transformed object */



More information about the Bf-blender-cvs mailing list