diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-02-03 17:19:01 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-02-03 18:16:39 +0300 |
commit | 7f2da487a6016ddfa229d38e8d61bf5c333035f1 (patch) | |
tree | 6a4c6cb8d83f0009383cd755574f1c30b4799f4b | |
parent | 41ba828131c5164c1dc450b235dee2e95966abe6 (diff) |
Placeholder for depsgraph evaluation of collection engine settings
-rw-r--r-- | source/blender/blenkernel/BKE_layer.h | 7 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/layer.c | 29 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_layer_types.h | 1 |
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), }; |