[Bf-blender-cvs] [4d5bb5e3de0] temp-collection-assets: Cleanup: Avoid confusing function logic
Julian Eisel
noreply at git.blender.org
Tue Jan 18 14:24:39 CET 2022
Commit: 4d5bb5e3de081d36925a775d00bd4c95b7577575
Author: Julian Eisel
Date: Tue Jan 18 14:23:41 2022 +0100
Branches: temp-collection-assets
https://developer.blender.org/rB4d5bb5e3de081d36925a775d00bd4c95b7577575
Cleanup: Avoid confusing function logic
===================================================================
M source/blender/editors/space_view3d/space_view3d.c
===================================================================
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index a15bab0a5ef..be4d45e03a0 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -501,7 +501,9 @@ static bool view3d_drop_id_in_main_region_poll(bContext *C,
return WM_drag_is_ID_type(drag, id_type);
}
-static void view3d_boundbox_drop_draw_activate(struct wmDropBox *drop, wmDrag *drag)
+static void view3d_boundbox_drop_draw_activate(struct wmDropBox *drop,
+ wmDrag *drag,
+ const float dimensions[3])
{
V3DSnapCursorState *state = drop->draw_data;
if (state) {
@@ -522,19 +524,23 @@ static void view3d_boundbox_drop_draw_activate(struct wmDropBox *drop, wmDrag *d
state = drop->draw_data = ED_view3d_cursor_snap_active();
state->draw_plane = true;
+ if (!is_zero_v3(dimensions)) {
+ mul_v3_v3fl(state->box_dimensions, dimensions, 0.5f);
+ UI_GetThemeColor4ubv(TH_GIZMO_PRIMARY, state->color_box);
+ state->draw_box = true;
+ }
+}
+
+static void view3d_boundbox_drop_draw_activate_object(struct wmDropBox *drop, wmDrag *drag)
+{
+ const int drag_id_type = WM_drag_get_ID_type(drag);
+
+ BLI_assert(drag_id_type == ID_OB);
+
float dimensions[3] = {0.0f};
if (drag->type == WM_DRAG_ID) {
- if (drag_id_type == ID_OB) {
- Object *ob = (Object *)WM_drag_get_local_ID(drag, ID_OB);
- BKE_object_dimensions_get(ob, dimensions);
- }
- else if (drag_id_type == ID_GR) {
- struct Collection *collection = (struct Collection *)WM_drag_get_local_ID(drag, ID_GR);
- BKE_collection_dimensions_calc(collection, COLLECTION_VISIBILITY_VIEWPORT, dimensions);
- }
- else {
- BLI_assert_unreachable();
- }
+ Object *ob = (Object *)WM_drag_get_local_ID(drag, ID_OB);
+ BKE_object_dimensions_get(ob, dimensions);
}
else {
struct AssetMetaData *meta_data = WM_drag_get_asset_meta_data(drag, drag_id_type);
@@ -544,11 +550,29 @@ static void view3d_boundbox_drop_draw_activate(struct wmDropBox *drop, wmDrag *d
}
}
- if (!is_zero_v3(dimensions)) {
- mul_v3_v3fl(state->box_dimensions, dimensions, 0.5f);
- UI_GetThemeColor4ubv(TH_GIZMO_PRIMARY, state->color_box);
- state->draw_box = true;
+ view3d_boundbox_drop_draw_activate(drop, drag, dimensions);
+}
+
+static void view3d_boundbox_drop_draw_activate_collection(struct wmDropBox *drop, wmDrag *drag)
+{
+ const int drag_id_type = WM_drag_get_ID_type(drag);
+
+ BLI_assert(drag_id_type == ID_GR);
+
+ float dimensions[3] = {0.0f};
+ if (drag->type == WM_DRAG_ID) {
+ Collection *collection = (Collection *)WM_drag_get_local_ID(drag, ID_GR);
+ BKE_collection_dimensions_calc(collection, COLLECTION_VISIBILITY_VIEWPORT, dimensions);
}
+ else {
+ struct AssetMetaData *meta_data = WM_drag_get_asset_meta_data(drag, drag_id_type);
+ IDProperty *dimensions_prop = BKE_asset_metadata_idprop_find(meta_data, "dimensions");
+ if (dimensions_prop) {
+ copy_v3_v3(dimensions, IDP_Array(dimensions_prop));
+ }
+ }
+
+ view3d_boundbox_drop_draw_activate(drop, drag, dimensions);
}
static void view3d_boundbox_drop_draw_deactivate(struct wmDropBox *drop, wmDrag *UNUSED(drag))
@@ -923,7 +947,7 @@ static void view3d_dropboxes(void)
WM_drag_free_imported_drag_ID,
NULL);
drop->draw = WM_drag_draw_item_name_fn;
- drop->draw_activate = view3d_boundbox_drop_draw_activate;
+ drop->draw_activate = view3d_boundbox_drop_draw_activate_object;
drop->draw_deactivate = view3d_boundbox_drop_draw_deactivate;
/* Object asset from external file. */
@@ -934,7 +958,7 @@ static void view3d_dropboxes(void)
WM_drag_free_imported_drag_ID,
NULL);
drop->draw = WM_drag_draw_item_name_fn;
- drop->draw_activate = view3d_boundbox_drop_draw_activate;
+ drop->draw_activate = view3d_boundbox_drop_draw_activate_object;
drop->draw_deactivate = view3d_boundbox_drop_draw_deactivate;
/* Local collection (adds collection instance). */
@@ -945,7 +969,7 @@ static void view3d_dropboxes(void)
WM_drag_free_imported_drag_ID,
NULL);
drop->draw = WM_drag_draw_item_name_fn;
- drop->draw_activate = view3d_boundbox_drop_draw_activate;
+ drop->draw_activate = view3d_boundbox_drop_draw_activate_collection;
drop->draw_deactivate = view3d_boundbox_drop_draw_deactivate;
/* Collection asset from external file (adds collection instance). */
@@ -959,7 +983,7 @@ static void view3d_dropboxes(void)
WM_drag_free_imported_drag_ID,
NULL);
drop->draw = WM_drag_draw_item_name_fn;
- drop->draw_activate = view3d_boundbox_drop_draw_activate;
+ drop->draw_activate = view3d_boundbox_drop_draw_activate_collection;
drop->draw_deactivate = view3d_boundbox_drop_draw_deactivate;
WM_dropbox_add(lb,
More information about the Bf-blender-cvs
mailing list