diff options
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 41 | ||||
-rw-r--r-- | source/blender/blenloader/BLO_readfile.h | 3 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 15 |
3 files changed, 39 insertions, 20 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index a6796d0513c..6a309e040c0 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -144,6 +144,7 @@ #include "DRW_engine.h" #include "BLO_read_write.h" +#include "BLO_readfile.h" #include "SEQ_sequencer.h" @@ -833,7 +834,7 @@ static void object_blend_read_lib(BlendLibReader *reader, ID *id) { Object *ob = (Object *)id; - bool warn = false; + BlendFileReadReport *reports = BLO_read_lib_reports(reader); /* XXX deprecated - old animation system <<< */ BLO_read_id_address(reader, ob->id.lib, &ob->ipo); @@ -851,8 +852,8 @@ static void object_blend_read_lib(BlendLibReader *reader, ID *id) else { if (ob->instance_collection != NULL) { ID *new_id = BLO_read_get_new_id_address(reader, ob->id.lib, &ob->instance_collection->id); - BLO_reportf_wrap(BLO_read_lib_reports(reader), - RPT_WARNING, + BLO_reportf_wrap(reports, + RPT_INFO, TIP_("Non-Empty object '%s' cannot duplicate collection '%s' " "anymore in Blender 2.80, removed instancing"), ob->id.name + 2, @@ -870,11 +871,17 @@ static void object_blend_read_lib(BlendLibReader *reader, ID *id) ob->proxy = NULL; if (ob->id.lib) { - printf("Proxy lost from object %s lib %s\n", ob->id.name + 2, ob->id.lib->filepath); + BLO_reportf_wrap(reports, + RPT_INFO, + TIP_("Proxy lost from object %s lib %s\n"), + ob->id.name + 2, + ob->id.lib->filepath); } else { - printf("Proxy lost from object %s lib <NONE>\n", ob->id.name + 2); + BLO_reportf_wrap( + reports, RPT_INFO, TIP_("Proxy lost from object %s lib <NONE>\n"), ob->id.name + 2); } + reports->count.missing_obproxies++; } else { /* this triggers object_update to always use a copy */ @@ -887,15 +894,7 @@ static void object_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, ob->id.lib, &ob->data); if (ob->data == NULL && poin != NULL) { - if (ob->id.lib) { - printf("Can't find obdata of %s lib %s\n", ob->id.name + 2, ob->id.lib->filepath); - } - else { - printf("Object %s lost data.\n", ob->id.name + 2); - } - ob->type = OB_EMPTY; - warn = true; if (ob->pose) { /* we can't call #BKE_pose_free() here because of library linking @@ -911,6 +910,18 @@ static void object_blend_read_lib(BlendLibReader *reader, ID *id) ob->pose = NULL; ob->mode &= ~OB_MODE_POSE; } + + if (ob->id.lib) { + BLO_reportf_wrap(reports, + RPT_INFO, + TIP_("Can't find obdata of %s lib %s\n"), + ob->id.name + 2, + ob->id.lib->filepath); + } + else { + BLO_reportf_wrap(reports, RPT_INFO, TIP_("Object %s lost data\n"), ob->id.name + 2); + } + reports->count.missing_obdata++; } for (int a = 0; a < ob->totcol; a++) { BLO_read_id_address(reader, ob->id.lib, &ob->mat[a]); @@ -992,10 +1003,6 @@ static void object_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, ob->id.lib, &ob->rigidbody_constraint->ob1); BLO_read_id_address(reader, ob->id.lib, &ob->rigidbody_constraint->ob2); } - - if (warn) { - BLO_reportf_wrap(BLO_read_lib_reports(reader), RPT_WARNING, "Warning in console"); - } } /* XXX deprecated - old animation system */ diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h index 04e13fbd1d6..c3a33115613 100644 --- a/source/blender/blenloader/BLO_readfile.h +++ b/source/blender/blenloader/BLO_readfile.h @@ -108,6 +108,9 @@ typedef struct BlendFileReadReport { * during this file read. */ int missing_libraries; int missing_linked_id; + /* Some sub-categories of the above `missing_linked_id` counter. */ + int missing_obdata; + int missing_obproxies; /* Number of root override IDs that were resynced. */ int resynced_lib_overrides; } count; diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 06aaf95f232..92f3eb67783 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -797,6 +797,7 @@ static void file_read_reports_finalize(BlendFileReadReport *bf_reports) bf_reports->count.resynced_lib_overrides, duration_lib_override_recursive_resync_minutes, duration_lib_override_recursive_resync_seconds); + if (bf_reports->resynced_lib_overrides_libraries_count != 0) { for (LinkNode *node_lib = bf_reports->resynced_lib_overrides_libraries; node_lib != NULL; node_lib = node_lib->next) { @@ -805,14 +806,22 @@ static void file_read_reports_finalize(BlendFileReadReport *bf_reports) bf_reports->reports, RPT_INFO, "Library %s needs overrides resync.", library->filepath); } } + if (bf_reports->count.missing_libraries != 0 || bf_reports->count.missing_linked_id != 0) { BKE_reportf(bf_reports->reports, RPT_WARNING, - "%d libraries and %d linked data-blocks are missing, please check the " - "Info and Outliner editors for details", + "%d libraries and %d linked data-blocks are missing (including %d ObjectData and " + "%d Proxies), please check the Info and Outliner editors for details", bf_reports->count.missing_libraries, - bf_reports->count.missing_linked_id); + bf_reports->count.missing_linked_id, + bf_reports->count.missing_obdata, + bf_reports->count.missing_obproxies); } + else { + BLI_assert(bf_reports->count.missing_obdata == 0); + BLI_assert(bf_reports->count.missing_obproxies == 0); + } + if (bf_reports->resynced_lib_overrides_libraries_count != 0) { BKE_reportf(bf_reports->reports, RPT_WARNING, |