Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2019-06-04 16:18:37 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-06-04 16:24:23 +0300
commit2fb54ef86e57598e4d27987066db7a06a8269413 (patch)
tree5c2bf71830a2839e319f7dd6cd3234e329af4ae6 /source/blender/blenloader
parent5361fc2c33253a7673c3352ae98070c9cf49165f (diff)
Fix T65054: Blender 2.80 crashes when opening a scene created by blender 2.7x with hierarchy duplication set to "group".
Regression introduced by rB7fe3d1e7d718 (fixing T57934). This effectively reverts rBrB7fe3d1e7d718, since changing the type of an object is a very bad idea in general, and would need a careful and complex check of all of its usages (many object usages assume a specific type of object...). Instead, we simply remove duplicollection on those objects, and give a warning in case dupligroup was effectively used (in many reported cases, dupligroup was a 'mistake setting', without actually instancing aniything). Note that the otehr idea to fix that versioning issue (to create a new empty object for the instancing) is much less easy than it might look (one would need to take into account potential animations, relations between objects, etc.). Doable probably, but way overkill for a corner-case 'bad' usage of the feature in the first place.
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r--source/blender/blenloader/intern/readfile.c9
-rw-r--r--source/blender/blenloader/intern/versioning_280.c7
2 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index d110af60a83..32f0d35cd53 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5220,6 +5220,15 @@ static void lib_link_object(FileData *fd, Main *main)
ob->instance_collection = newlibadr_us(fd, ob->id.lib, ob->instance_collection);
}
else {
+ if (ob->instance_collection != NULL) {
+ ID *id = newlibadr(fd, ob->id.lib, ob->instance_collection);
+ blo_reportf_wrap(fd->reports,
+ RPT_WARNING,
+ TIP_("Non-Empty object '%s' cannot duplicate collection '%s' "
+ "anymore in Blender 2.80, removed instancing"),
+ ob->id.name + 2,
+ id->name + 2);
+ }
ob->instance_collection = NULL;
ob->transflag &= ~OB_DUPLICOLLECTION;
}
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index c4436cc8128..152cde0c0dc 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -2742,13 +2742,6 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
for (Camera *ca = bmain->cameras.first; ca; ca = ca->id.next) {
ca->drawsize *= 2.0f;
}
- for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) {
- if (ob->type != OB_EMPTY) {
- if (UNLIKELY(ob->transflag & OB_DUPLICOLLECTION)) {
- BKE_object_type_set_empty_for_versioning(ob);
- }
- }
- }
/* Grease pencil primitive curve */
if (!DNA_struct_elem_find(