[Bf-blender-cvs] [3142ae19d22] master: Fix T70080: Newly created objects not visible with local collections
Dalai Felinto
noreply at git.blender.org
Tue Sep 24 19:42:05 CEST 2019
Commit: 3142ae19d22767507ec190ff39c89210ac96c39d
Author: Dalai Felinto
Date: Tue Sep 24 11:48:49 2019 -0300
Branches: master
https://developer.blender.org/rB3142ae19d22767507ec190ff39c89210ac96c39d
Fix T70080: Newly created objects not visible with local collections
The tricky part here is to support a hidden parent and a "visible" child
collection. In this case the object should obviously be invisible. It is
all working now.
===================================================================
M source/blender/blenkernel/intern/layer.c
===================================================================
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 984e94c05c9..9b18052ef1e 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -654,7 +654,8 @@ static short layer_collection_sync(ViewLayer *view_layer,
ListBase *new_object_bases,
short parent_exclude,
short parent_restrict,
- short parent_layer_restrict)
+ short parent_layer_restrict,
+ unsigned short parent_local_collections_bits)
{
/* TODO: support recovery after removal of intermediate collections, reordering, ..
* For local edits we can make editing operating do the appropriate thing, but for
@@ -700,6 +701,9 @@ static short layer_collection_sync(ViewLayer *view_layer,
lc->flag = parent_exclude;
}
+ unsigned short local_collections_bits = parent_local_collections_bits &
+ lc->local_collections_bits;
+
/* Tag linked collection as a weak reference so we keep the layer
* collection pointer on file load and remember exclude state. */
id_lib_indirect_weak_link(&collection->id);
@@ -719,7 +723,8 @@ static short layer_collection_sync(ViewLayer *view_layer,
new_object_bases,
lc->flag,
child_restrict,
- child_layer_restrict);
+ child_layer_restrict,
+ local_collections_bits);
/* Layer collection exclude is not inherited. */
if (lc->flag & LAYER_COLLECTION_EXCLUDE) {
@@ -760,6 +765,7 @@ static short layer_collection_sync(ViewLayer *view_layer,
else {
/* Create new base. */
base = object_base_new(cob->ob);
+ base->local_collections_bits = local_collections_bits;
*base_p = base;
BLI_addtail(new_object_bases, base);
}
@@ -837,7 +843,8 @@ void BKE_layer_collection_sync(const Scene *scene, ViewLayer *view_layer)
&new_object_bases,
parent_exclude,
parent_restrict,
- parent_layer_restrict);
+ parent_layer_restrict,
+ ~(0));
/* Any remaining object bases are to be removed. */
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
More information about the Bf-blender-cvs
mailing list