[Bf-blender-cvs] [7fe3d1e7d71] blender2.8: Fix T57934: non-empty duplicators don't render

Campbell Barton noreply at git.blender.org
Tue Dec 11 05:05:14 CET 2018


Commit: 7fe3d1e7d718561e275f21acc7261207e67bf685
Author: Campbell Barton
Date:   Tue Dec 11 15:02:58 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB7fe3d1e7d718561e275f21acc7261207e67bf685

Fix T57934: non-empty duplicators don't render

Convert non-empty duplicators to empties.

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

M	source/blender/blenkernel/BKE_object.h
M	source/blender/blenkernel/intern/object.c
M	source/blender/blenloader/intern/versioning_280.c

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

diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index ff069bcbe79..2ccee7a4a68 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -349,6 +349,8 @@ bool BKE_object_modifier_update_subframe(
         struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
         bool update_mesh, int parent_recursion, float frame, int type);
 
+void BKE_object_type_set_empty_for_versioning(struct Object *ob);
+
 bool BKE_image_empty_visible_in_view3d(const struct Object *ob, const struct RegionView3D *rv3d);
 
 #ifdef __cplusplus
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index b5dfb5d8244..9c166d154a3 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -4048,6 +4048,18 @@ bool BKE_object_modifier_update_subframe(
 	return false;
 }
 
+
+void BKE_object_type_set_empty_for_versioning(Object *ob)
+{
+	ob->type = OB_EMPTY;
+	ob->data = NULL;
+	if (ob->pose) {
+		BKE_pose_free_ex(ob->pose, false);
+		ob->pose = NULL;
+	}
+	ob->mode = OB_MODE_OBJECT;
+}
+
 bool BKE_image_empty_visible_in_view3d(const Object *ob, const RegionView3D *rv3d)
 {
 	int visibility_flag = ob->empty_image_visibility_flag;
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 9e6f64586ae..d10d86de2bc 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -2509,6 +2509,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
 		for (Camera *ca = bmain->camera.first; ca; ca = ca->id.next) {
 			ca->drawsize *= 2.0f;
 		}
+		for (Object *ob = bmain->object.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);
+				}
+			}
+		}
 	}
 
 	{



More information about the Bf-blender-cvs mailing list