[Bf-blender-cvs] [e5c8f096f86] master: Cleanup: expand checks for selection when snapping

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


Commit: e5c8f096f8649250a828d63f5e28577b7ef51677
Author: Campbell Barton
Date:   Wed Sep 4 01:32:32 2019 +1000
Branches: master
https://developer.blender.org/rBe5c8f096f8649250a828d63f5e28577b7ef51677

Cleanup: expand checks for selection when snapping

Adding extra checks here was getting unreadable,
expand to allow for easier to follow logic.

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

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

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

diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c
index e809b3d1acd..d57598babee 100644
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@ -221,22 +221,37 @@ static void iter_snap_objects(SnapObjectContext *sctx,
 
   Base *base_act = view_layer->basact;
   for (Base *base = view_layer->object_bases.first; base != NULL; base = base->next) {
-    if ((BASE_VISIBLE(v3d, base)) && (base->flag_legacy & BA_SNAP_FIX_DEPS_FIASCO) == 0 &&
-        !((snap_select == SNAP_NOT_SELECTED &&
-           ((base->flag & BASE_SELECTED) || (base->flag_legacy & BA_WAS_SEL))) ||
-          (snap_select == SNAP_NOT_ACTIVE && base == base_act))) {
-      Object *obj_eval = DEG_get_evaluated_object(sctx->depsgraph, base->object);
-      if (obj_eval->transflag & OB_DUPLI) {
-        DupliObject *dupli_ob;
-        ListBase *lb = object_duplilist(sctx->depsgraph, sctx->scene, obj_eval);
-        for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) {
-          sob_callback(sctx, use_object_edit_cage, dupli_ob->ob, dupli_ob->mat, data);
-        }
-        free_object_duplilist(lb);
+
+    if (!BASE_VISIBLE(v3d, base)) {
+      continue;
+    }
+
+    if (base->flag_legacy & BA_SNAP_FIX_DEPS_FIASCO) {
+      continue;
+    }
+
+    if (snap_select == SNAP_NOT_SELECTED) {
+      if ((base->flag & BASE_SELECTED) || (base->flag_legacy & BA_WAS_SEL)) {
+        continue;
+      }
+    }
+    else if (snap_select == SNAP_NOT_ACTIVE) {
+      if (base == base_act) {
+        continue;
       }
+    }
 
-      sob_callback(sctx, use_object_edit_cage, obj_eval, obj_eval->obmat, data);
+    Object *obj_eval = DEG_get_evaluated_object(sctx->depsgraph, base->object);
+    if (obj_eval->transflag & OB_DUPLI) {
+      DupliObject *dupli_ob;
+      ListBase *lb = object_duplilist(sctx->depsgraph, sctx->scene, obj_eval);
+      for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) {
+        sob_callback(sctx, use_object_edit_cage, dupli_ob->ob, dupli_ob->mat, data);
+      }
+      free_object_duplilist(lb);
     }
+
+    sob_callback(sctx, use_object_edit_cage, obj_eval, obj_eval->obmat, data);
   }
 }



More information about the Bf-blender-cvs mailing list