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:
authorDalai Felinto <dfelinto@gmail.com>2017-02-03 17:19:01 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-02-03 18:16:39 +0300
commit7f2da487a6016ddfa229d38e8d61bf5c333035f1 (patch)
tree6a4c6cb8d83f0009383cd755574f1c30b4799f4b
parent41ba828131c5164c1dc450b235dee2e95966abe6 (diff)
Placeholder for depsgraph evaluation of collection engine settings
-rw-r--r--source/blender/blenkernel/BKE_layer.h7
-rw-r--r--source/blender/blenkernel/intern/layer.c29
-rw-r--r--source/blender/makesdna/DNA_layer_types.h1
3 files changed, 37 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 184f7b9afc5..993a91eb9b6 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -39,6 +39,7 @@ extern "C" {
#define TODO_LAYER_CONTEXT /* get/set current (context) SceneLayer */
#define TODO_LAYER_BASE /* Base to ObjectBase related TODO */
#define TODO_LAYER_OPERATORS /* collection mamanger and property panel operators */
+#define TODO_LAYER_DEPSGRAPH /* placeholder for real Depsgraph fix */
#define TODO_LAYER /* generic todo */
struct CollectionEngineSettings;
@@ -69,6 +70,9 @@ void BKE_scene_layer_base_deselect_all(struct SceneLayer *sl);
void BKE_scene_layer_base_select(struct SceneLayer *sl, struct ObjectBase *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_update(struct SceneLayer *sl);
+
void BKE_layer_collection_free(struct SceneLayer *sl, struct LayerCollection *lc);
struct LayerCollection *BKE_layer_collection_active(struct SceneLayer *sl);
@@ -191,6 +195,9 @@ void BKE_visible_bases_Iterator_end(Iterator *iter);
/* temporary hacky solution waiting for final depsgraph evaluation */
#define DEG_OBJECT_ITER(sl_, ob_) \
{ \
+ /* temporary solution, waiting for depsgraph update */ \
+ BKE_scene_layer_engine_settings_update(sl); \
+ \
/* flush all the data to objects*/ \
ObjectBase *base_; \
for (base_ = sl->object_bases.first; base_; base_ = base_->next) { \
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index b11edf96bbe..177f9011438 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -257,6 +257,35 @@ void BKE_scene_layer_base_flag_recalculate(SceneLayer *sl)
base->flag &= ~BASE_SELECTED;
}
}
+
+ BKE_scene_layer_engine_settings_recalculate(sl);
+}
+
+/**
+ * Tag Scene Layer to recalculation
+ *
+ * Temporary function, waiting for real depsgraph
+ */
+void BKE_scene_layer_engine_settings_recalculate(struct SceneLayer *sl)
+{
+ sl->flag |= SCENE_LAYER_ENGINE_DIRTY;
+}
+
+/**
+ * Re-calculate the engine settings for all the objects in SceneLayer
+ *
+ * Temporary function, waiting for real depsgraph
+ */
+void BKE_scene_layer_engine_settings_update(struct SceneLayer *sl)
+{
+ if ((sl->flag & SCENE_LAYER_ENGINE_DIRTY) == 0) {
+ return;
+ }
+
+ /* do the complete settings update */
+ TODO_LAYER_DEPSGRAPH;
+
+ sl->flag &= ~SCENE_LAYER_ENGINE_DIRTY;
}
/**
diff --git a/source/blender/makesdna/DNA_layer_types.h b/source/blender/makesdna/DNA_layer_types.h
index 3211634dca3..7b78d5123b2 100644
--- a/source/blender/makesdna/DNA_layer_types.h
+++ b/source/blender/makesdna/DNA_layer_types.h
@@ -99,6 +99,7 @@ enum {
/* SceneLayer->flag */
enum {
SCENE_LAYER_RENDER = (1 << 0),
+ SCENE_LAYER_ENGINE_DIRTY = (1 << 1),
};