[Bf-blender-cvs] [91e32bff908] master: Fix T80796: Frame all ignores geometry from instances
Campbell Barton
noreply at git.blender.org
Tue Sep 15 09:00:53 CEST 2020
Commit: 91e32bff90866acbfceda3b96a3462a55f7ccb71
Author: Campbell Barton
Date: Tue Sep 15 16:57:56 2020 +1000
Branches: master
https://developer.blender.org/rB91e32bff90866acbfceda3b96a3462a55f7ccb71
Fix T80796: Frame all ignores geometry from instances
Make "Frame All" share functionality with "Frame Selected",
accounting for duplis when calculating the bounds.
===================================================================
M source/blender/editors/space_view3d/view3d_edit.c
===================================================================
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 76ca4ed55b2..440e486a75a 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -2788,6 +2788,25 @@ static bool view3d_object_skip_minmax(const View3D *v3d,
return false;
}
+static void view3d_object_calc_minmax(Depsgraph *depsgraph,
+ Scene *scene,
+ Object *ob_eval,
+ const bool only_center,
+ float min[3],
+ float max[3])
+{
+ /* Account for duplis. */
+ if (BKE_object_minmax_dupli(depsgraph, scene, ob_eval, min, max, false) == 0) {
+ /* Use if duplis aren't found. */
+ if (only_center) {
+ minmax_v3v3_v3(min, max, ob_eval->obmat[3]);
+ }
+ else {
+ BKE_object_minmax(ob_eval, min, max, false);
+ }
+ }
+}
+
static void view3d_from_minmax(bContext *C,
View3D *v3d,
ARegion *region,
@@ -2901,7 +2920,7 @@ static int view3d_all_exec(bContext *C, wmOperator *op)
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = CTX_wm_region_view3d(C);
Scene *scene = CTX_data_scene(C);
- const Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
+ Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
ViewLayer *view_layer_eval = DEG_get_evaluated_view_layer(depsgraph);
Base *base_eval;
const bool use_all_regions = RNA_boolean_get(op->ptr, "use_all_regions");
@@ -2935,13 +2954,7 @@ static int view3d_all_exec(bContext *C, wmOperator *op)
if (view3d_object_skip_minmax(v3d, rv3d, ob, skip_camera, &only_center)) {
continue;
}
-
- if (only_center) {
- minmax_v3v3_v3(min, max, base_eval->object->obmat[3]);
- }
- else {
- BKE_object_minmax(base_eval->object, min, max, false);
- }
+ view3d_object_calc_minmax(depsgraph, scene, base_eval->object, only_center, min, max);
changed = true;
}
}
@@ -3102,18 +3115,7 @@ static int viewselected_exec(bContext *C, wmOperator *op)
if (view3d_object_skip_minmax(v3d, rv3d, ob, skip_camera, &only_center)) {
continue;
}
-
- /* account for duplis */
- if (BKE_object_minmax_dupli(depsgraph, scene, base_eval->object, min, max, false) == 0) {
- /* use if duplis not found */
- if (only_center) {
- minmax_v3v3_v3(min, max, base_eval->object->obmat[3]);
- }
- else {
- BKE_object_minmax(base_eval->object, min, max, false);
- }
- }
-
+ view3d_object_calc_minmax(depsgraph, scene, base_eval->object, only_center, min, max);
ok = 1;
}
}
More information about the Bf-blender-cvs
mailing list