Commit: cfd600a2070a659f9f4691004cdba7d1370dcd62
Author: Dalai Felinto
Date:   Mon Mar 20 18:58:01 2017 +0100
Branches: temp-depsgraph-layers
https://developer.blender.org/rBcfd600a2070a659f9f4691004cdba7d1370dcd62

Layers: Remove old base visible / selected code

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

M       source/blender/blenkernel/BKE_layer.h
M       source/blender/blenkernel/intern/collection.c
M       source/blender/blenkernel/intern/layer.c
M       source/blender/blenloader/intern/readfile.c
M       source/blender/blenloader/intern/versioning_280.c
M       source/blender/editors/space_outliner/outliner_draw.c

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

diff --git a/source/blender/blenkernel/BKE_layer.h 
b/source/blender/blenkernel/BKE_layer.h
index 24d8f26a71..232fb212cf 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -71,7 +71,6 @@ struct SceneLayer *BKE_scene_layer_find_from_collection(const 
struct Scene *scen
 struct Base *BKE_scene_layer_base_find(struct SceneLayer *sl, struct Object 
*ob);
 void BKE_scene_layer_base_deselect_all(struct SceneLayer *sl);
 void BKE_scene_layer_base_select(struct SceneLayer *sl, struct Base *selbase);
-void BKE_scene_layer_base_flag_recalculate(struct SceneLayer *sl);
 
 void BKE_scene_layer_engine_settings_recalculate(struct SceneLayer *sl);
 void BKE_scene_layer_engine_settings_object_recalculate(struct SceneLayer *sl, 
struct Object *ob);
diff --git a/source/blender/blenkernel/intern/collection.c 
b/source/blender/blenkernel/intern/collection.c
index b466239315..fcebeb5f02 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -165,7 +165,6 @@ bool BKE_collection_remove(Scene *scene, SceneCollection 
*sc)
        /* check all layers that use this collection and clear them */
        for (SceneLayer *sl = scene->render_layers.first; sl; sl = sl->next) {
                layer_collection_remove(sl, &sl->layer_collections, sc);
-               BKE_scene_layer_base_flag_recalculate(sl);
                sl->active_collection = 0;
        }
 
diff --git a/source/blender/blenkernel/intern/layer.c 
b/source/blender/blenkernel/intern/layer.c
index de620335d4..2512c34f70 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -245,64 +245,6 @@ static void scene_layer_object_base_unref(SceneLayer *sl, 
Base *base)
        }
 }
 
-static void layer_collection_base_flag_recalculate(
-        LayerCollection *lc, const bool tree_is_visible, const bool 
tree_is_selectable)
-{
-       bool is_visible = tree_is_visible && ((lc->flag & COLLECTION_VISIBLE) 
!= 0);
-       /* an object can only be selected if it's visible */
-       bool is_selectable = tree_is_selectable && is_visible && ((lc->flag & 
COLLECTION_SELECTABLE) != 0);
-
-       for (LinkData *link = lc->object_bases.first; link; link = link->next) {
-               Base *base = link->data;
-
-               if (is_visible) {
-                       base->flag |= BASE_VISIBLED;
-               }
-
-               if (is_selectable) {
-                       base->flag |= BASE_SELECTABLED;
-               }
-       }
-
-       for (LayerCollection *lcn = lc->layer_collections.first; lcn; lcn = 
lcn->next) {
-               layer_collection_base_flag_recalculate(lcn, is_visible, 
is_selectable);
-       }
-}
-
-/**
- * Re-evaluate the ObjectBase flags for SceneLayer
- */
-void BKE_scene_layer_base_flag_recalculate(SceneLayer *sl)
-{
-       for (Base *base = sl->object_bases.first; base; base = base->next) {
-               base->flag &= ~(BASE_VISIBLED | BASE_SELECTABLED);
-       }
-
-       for (LayerCollection *lc = sl->layer_collections.first; lc; lc = 
lc->next) {
-               layer_collection_base_flag_recalculate(lc, true, true);
-       }
-
-       /* if base is not selectabled, clear select */
-       for (Base *base = sl->object_bases.first; base; base = base->next) {
-               if ((base->flag & BASE_SELECTABLED) == 0) {
-                       base->flag &= ~BASE_SELECTED;
-               }
-       }
-}
-
-/**
- * Tag Scene Layer to recalculation
- *
- * Temporary function, waiting for real depsgraph
- */
-void BKE_scene_layer_engine_settings_recalculate(SceneLayer *sl)
-{
-       sl->flag |= SCENE_LAYER_ENGINE_DIRTY;
-       for (Base *base = sl->object_bases.first; base; base = base->next) {
-               base->flag |= BASE_DIRTY_ENGINE_SETTINGS;
-       }
-}
-
 /**
  * Tag Object in SceneLayer to recalculation
  *
@@ -858,7 +800,6 @@ LayerCollection *BKE_collection_link(SceneLayer *sl, 
SceneCollection *sc)
 void BKE_collection_unlink(SceneLayer *sl, LayerCollection *lc)
 {
        BKE_layer_collection_free(sl, lc);
-       BKE_scene_layer_base_flag_recalculate(sl);
        BKE_scene_layer_engine_settings_collection_recalculate(sl, lc);
 
        BLI_remlink(&sl->layer_collections, lc);
@@ -879,7 +820,6 @@ static void layer_collection_object_add(SceneLayer *sl, 
LayerCollection *lc, Obj
 
        BLI_addtail(&lc->object_bases, BLI_genericNodeN(base));
 
-       BKE_scene_layer_base_flag_recalculate(sl);
        BKE_scene_layer_engine_settings_object_recalculate(sl, ob);
 }
 
@@ -1018,7 +958,6 @@ void BKE_layer_sync_object_unlink(const Scene *scene, 
SceneCollection *sc, Objec
                                layer_collection_object_remove(sl, found, ob);
                        }
                }
-               BKE_scene_layer_base_flag_recalculate(sl);
                BKE_scene_layer_engine_settings_object_recalculate(sl, ob);
        }
 }
@@ -1812,12 +1751,19 @@ void BKE_layer_eval_layer_collection(EvaluationContext 
*UNUSED(eval_ctx),
 
        if (parent_layer_collection != NULL) {
                is_visible &= (parent_layer_collection->flag_evaluated & 
COLLECTION_VISIBLE) != 0;
-               is_selectable &= is_visible && 
(parent_layer_collection->flag_evaluated & COLLECTION_SELECTABLE) != 0;
+               is_selectable &= (parent_layer_collection->flag_evaluated & 
COLLECTION_SELECTABLE) != 0;
                layer_collection->flag_evaluated &= 
parent_layer_collection->flag_evaluated;
        }
 
        for (LinkData *link = layer_collection->object_bases.first; link != 
NULL; link = link->next) {
                Base *base = link->data;
+
+               /* TODO(sergey): Is it always required? */
+               if (is_visible != ((base->flag & BASE_VISIBLED) != 0)) {
+                       /* Non-recursive code from 
engine_settings_collection_recalculate(). */
+                       base->flag |= BASE_DIRTY_ENGINE_SETTINGS;
+               }
+
                /* Non-recursive code from base_flag_recalculate(). */
                if (is_visible) {
                        base->flag |= BASE_VISIBLED;
@@ -1825,9 +1771,6 @@ void BKE_layer_eval_layer_collection(EvaluationContext 
*UNUSED(eval_ctx),
                if (is_selectable) {
                        base->flag |= BASE_SELECTABLED;
                }
-               /* Non-recursive code from 
engine_settings_collection_recalculate(). */
-               /* TODO(sergey): Is it always required? */
-               base->flag |= BASE_DIRTY_ENGINE_SETTINGS;
        }
 }
 
diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index efa3e09329..8c9e71fd05 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6265,8 +6265,6 @@ static void direct_link_scene(FileData *fd, Scene *sce)
                link_list(fd, &sl->object_bases);
                sl->basact = newdataadr(fd, sl->basact);
                direct_link_layer_collections(fd, &sl->layer_collections);
-               /* tag scene layer to update for collection tree evaluation */
-               BKE_scene_layer_base_flag_recalculate(sl);
        }
 
        link_list(fd, &sce->engines_settings);
diff --git a/source/blender/blenloader/intern/versioning_280.c 
b/source/blender/blenloader/intern/versioning_280.c
index ac3f703fbd..8e55c6ad76 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -138,9 +138,6 @@ void do_versions_after_linking_280(Main *main)
                                        lc = lc->next;
                                }
 
-                               /* but we still need to make the flags synced */
-                               BKE_scene_layer_base_flag_recalculate(sl);
-
                                /* convert active base */
                                if (scene->basact) {
                                        sl->basact = 
BKE_scene_layer_base_find(sl, scene->basact->object);
diff --git a/source/blender/editors/space_outliner/outliner_draw.c 
b/source/blender/editors/space_outliner/outliner_draw.c
index 2bf94fa987..4d58ca2d27 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -262,10 +262,9 @@ static void 
restrictbutton_collection_hide_select_cb(bContext *C, void *poin, vo
        LayerCollection *collection = poin2;
 
        if ((collection->flag & COLLECTION_SELECTABLE) == 0) {
-               SceneLayer *sl = BKE_scene_layer_find_from_collection(scene, 
collection);
-
                /* deselect bases that are directly influenced by this 
LayerCollection */
-               BKE_scene_layer_base_flag_recalculate(sl);
+               /* TODO(sergey): Use proper flag for tagging here. */
+               DAG_id_tag_update(&scene->id, 0);
                WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, 
CTX_data_scene(C));
        }
        WM_event_add_notifier(C, NC_SCENE | ND_LAYER_CONTENT, NULL);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to