[Bf-blender-cvs] [7f2da487a6] clay-engine: Placeholder for depsgraph evaluation of collection engine settings

Dalai Felinto noreply at git.blender.org
Fri Feb 3 16:18:28 CET 2017


Commit: 7f2da487a6016ddfa229d38e8d61bf5c333035f1
Author: Dalai Felinto
Date:   Fri Feb 3 15:19:01 2017 +0100
Branches: clay-engine
https://developer.blender.org/rB7f2da487a6016ddfa229d38e8d61bf5c333035f1

Placeholder for depsgraph evaluation of collection engine settings

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

M	source/blender/blenkernel/BKE_layer.h
M	source/blender/blenkernel/intern/layer.c
M	source/blender/makesdna/DNA_layer_types.h

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

diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 184f7b9afc..993a91eb9b 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 b11edf96bb..177f901143 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 3211634dca..7b78d5123b 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),
 };




More information about the Bf-blender-cvs mailing list