[Bf-blender-cvs] [59361a9f16c] temp-depsgraph-layers: Merge remote-tracking branch 'origin/blender2.8' into temp-depsgraph-layers

Dalai Felinto noreply at git.blender.org
Thu Mar 30 18:16:52 CEST 2017


Commit: 59361a9f16c2cba7b1ae0ac1e51147218ed51ee3
Author: Dalai Felinto
Date:   Thu Mar 30 17:42:11 2017 +0200
Branches: temp-depsgraph-layers
https://developer.blender.org/rB59361a9f16c2cba7b1ae0ac1e51147218ed51ee3

Merge remote-tracking branch 'origin/blender2.8' into temp-depsgraph-layers

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



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

diff --cc source/blender/blenkernel/BKE_layer.h
index 232fb212cfb,07d1c255188..0ba5c657288
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@@ -42,10 -42,11 +42,12 @@@ extern "C" 
  #define TODO_LAYER_DEPSGRAPH /* placeholder for real Depsgraph fix */
  #define TODO_LAYER /* generic todo */
  
- struct CollectionEngineSettings;
+ #define ROOT_PROP "root"
+ 
 +struct EvaluationContext;
  struct LayerCollection;
  struct ID;
+ struct IDProperty;
  struct ListBase;
  struct Main;
  struct Object;
@@@ -109,39 -111,24 +111,34 @@@ void BKE_layer_sync_object_unlink(cons
  void BKE_collection_override_datablock_add(struct LayerCollection *lc, const char *data_path, struct ID *id);
  
  /* engine settings */
- typedef void (*CollectionEngineSettingsCB)(struct RenderEngine *engine, struct CollectionEngineSettings *ces);
- struct CollectionEngineSettings *BKE_layer_collection_engine_get(struct LayerCollection *lc, const int type, const char *engine_name);
- struct CollectionEngineSettings *BKE_object_collection_engine_get(struct Object *ob, const int type, const char *engine_name);
+ typedef void (*CollectionEngineSettingsCB)(struct RenderEngine *engine, struct IDProperty *props);
+ struct IDProperty *BKE_layer_collection_engine_get(struct LayerCollection *lc, const int type, const char *engine_name);
+ struct IDProperty *BKE_object_collection_engine_get(struct Object *ob, const int type, const char *engine_name);
  void BKE_layer_collection_engine_settings_callback_register(struct Main *bmain, const char *engine_name, CollectionEngineSettingsCB func);
  void BKE_layer_collection_engine_settings_callback_free(void);
+ void BKE_layer_collection_engine_settings_create(struct IDProperty *root);
+ 
+ void BKE_collection_engine_property_add_float(struct IDProperty *props, const char *name, float value);
+ void BKE_collection_engine_property_add_int(struct IDProperty *props, const char *name, int value);
+ void BKE_collection_engine_property_add_bool(struct IDProperty *props, const char *name, bool value);
  
- struct CollectionEngineSettings *BKE_layer_collection_engine_settings_create(const char *engine_name);
- void BKE_layer_collection_engine_settings_free(struct CollectionEngineSettings *ces);
- void BKE_layer_collection_engine_settings_list_free(struct ListBase *lb);
- 
- void BKE_collection_engine_property_add_float(struct CollectionEngineSettings *ces, const char *name, float value);
- void BKE_collection_engine_property_add_int(struct CollectionEngineSettings *ces, const char *name, int value);
- void BKE_collection_engine_property_add_bool(struct CollectionEngineSettings *ces, const char *name, bool value);
- struct CollectionEngineProperty *BKE_collection_engine_property_get(struct CollectionEngineSettings *ces, const char *name);
- int BKE_collection_engine_property_value_get_int(struct CollectionEngineSettings *ces, const char *name);
- float BKE_collection_engine_property_value_get_float(struct CollectionEngineSettings *ces, const char *name);
- bool BKE_collection_engine_property_value_get_bool(struct CollectionEngineSettings *ces, const char *name);
- void BKE_collection_engine_property_value_set_int(struct CollectionEngineSettings *ces, const char *name, int value);
- void BKE_collection_engine_property_value_set_float(struct CollectionEngineSettings *ces, const char *name, float value);
- void BKE_collection_engine_property_value_set_bool(struct CollectionEngineSettings *ces, const char *name, bool value);
- bool BKE_collection_engine_property_use_get(struct CollectionEngineSettings *ces, const char *name);
- void BKE_collection_engine_property_use_set(struct CollectionEngineSettings *ces, const char *name, bool value);
+ int BKE_collection_engine_property_value_get_int(struct IDProperty *props, const char *name);
+ float BKE_collection_engine_property_value_get_float(struct IDProperty *props, const char *name);
+ bool BKE_collection_engine_property_value_get_bool(struct IDProperty *props, const char *name);
+ void BKE_collection_engine_property_value_set_int(struct IDProperty *props, const char *name, int value);
+ void BKE_collection_engine_property_value_set_float(struct IDProperty *props, const char *name, float value);
+ void BKE_collection_engine_property_value_set_bool(struct IDProperty *props, const char *name, bool value);
  
 +/* evaluation */
 +
 +void BKE_layer_eval_layer_collection_pre(struct EvaluationContext *eval_ctx,
 +                                         struct SceneLayer *scene_layer);
 +void BKE_layer_eval_layer_collection(struct EvaluationContext *eval_ctx,
 +                                     struct LayerCollection *layer_collection,
 +                                     struct LayerCollection *parent_layer_collection);
 +void BKE_layer_eval_layer_collection_post(struct EvaluationContext *eval_ctx,
 +                                          struct SceneLayer *scene_layer);
 +
  /* iterators */
  
  void BKE_selected_objects_Iterator_begin(Iterator *iter, void *data_in);
diff --cc source/blender/blenkernel/intern/layer.c
index 92490a77464,a593d400f56..6d427862766
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@@ -33,8 -33,7 +33,9 @@@
  #include "BLT_translation.h"
  
  #include "BKE_collection.h"
 +#include "BKE_depsgraph.h"
 +#include "BKE_global.h"
+ #include "BKE_idprop.h"
  #include "BKE_layer.h"
  #include "BKE_main.h"
  #include "BKE_node.h"
@@@ -1529,267 -1498,3 +1449,66 @@@ void BKE_visible_bases_Iterator_end(Ite
  {
  	/* do nothing */
  }
 +
- 
- /* ---------------------------------------------------------------------- */
- /* Doversion routine */
- 
- /**
-  * Merge CollectionEngineSettings
-  *
-  * \param ces_ref CollectionEngineSettings to use as reference
-  * \param ces CollectionEngineSettings to merge into
-  */
- static void scene_layer_doversion_merge_setings(const CollectionEngineSettings *ces_ref, CollectionEngineSettings *ces)
- {
- 	CollectionEngineProperty *cep = ces->properties.first, *cep_ref;
- 
- 	for (cep_ref = ces_ref->properties.first; cep_ref; cep_ref = cep_ref->next) {
- 		cep = BLI_findstring(&ces->properties, cep_ref->name, offsetof(CollectionEngineProperty, name));
- 
- 		if (cep == NULL) {
- 			cep = MEM_dupallocN(cep_ref);
- 			BLI_addtail(&ces->properties, cep);
- 		}
- 		else if (cep->type != cep_ref->type) {
- 			CollectionEngineProperty *prev = cep->prev, *next = cep->next;
- 			MEM_freeN(cep);
- 			cep = MEM_dupallocN(cep_ref);
- 
- 			cep->prev = prev;
- 			cep->next = next;
- 		}
- 		else {
- 			/* keep the property as it is */
- 		}
- 	}
- }
- 
- /**
-  * Merge ListBases of LayerCollections
-  *
-  * \param lb_ref ListBase of CollectionEngineSettings to use as reference
-  * \param lb ListBase of CollectionEngineSettings
-  */
- static void scene_layer_doversion_merge_layer_collection(const ListBase *lb_ref, ListBase *lb)
- {
- 	CollectionEngineSettings *ces = lb->first, *ces_ref;
- 
- 	for (ces_ref = lb_ref->first; ces_ref; ces_ref = ces_ref->next) {
- 		ces = BLI_findstring(lb, ces_ref->name, offsetof(CollectionEngineSettings, name));
- 
- 		if (ces == NULL) {
- 			ces = MEM_dupallocN(ces_ref);
- 			BLI_duplicatelist(&ces->properties, &ces_ref->properties);
- 			BLI_addtail(lb, ces);
- 		}
- 		else {
- 			scene_layer_doversion_merge_setings(ces_ref, ces);
- 		}
- 	}
- }
- 
- /**
-  * Create or remove CollectionEngineSettings and CollectionEngineProperty
-  * based on reference LayerCollection
-  *
-  * \param lc_ref reference LayerCollection to merge missing settings from
-  * \param lb ListBase of LayerCollection
-  */
- static void scene_layer_doversion_update_collections(const LayerCollection *lc_ref, ListBase *lb)
- {
- 	for (LayerCollection *lc = lb->first; lc; lc = lc->next) {
- 
- 		scene_layer_doversion_merge_layer_collection(&lc_ref->engine_settings, &lc->engine_settings);
- 		scene_layer_doversion_merge_layer_collection(&lc_ref->mode_settings, &lc->mode_settings);
- 
- 		/* continue recursively */
- 		scene_layer_doversion_update_collections(lc_ref, &lc->layer_collections);
- 	}
- }
- 
- /**
-  * Updates all the CollectionEngineSettings of all
-  * LayerCollection elements in Scene
-  *
-  * \param lc_ref reference LayerCollection to merge missing settings from
-  */
- static void scene_layer_doversion_update(const LayerCollection *lc_ref, Scene *scene)
- {
- 	for (SceneLayer *sl = scene->render_layers.first; sl; sl = sl->next) {
- 		scene_layer_doversion_update_collections(lc_ref, &sl->layer_collections);
- 	}
- }
- 
- /**
-  * Return true at the first indicative that the listbases don't match
-  *
-  * It's fine if the individual properties values are different, as long
-  * as we have the same properties across them
-  *
-  * \param lb_ces ListBase of CollectionEngineSettings
-  * \param lb_ces_ref ListBase of CollectionEngineSettings
-  */
- static bool scene_layer_doversion_is_outdated_engines(ListBase *lb_ces, ListBase *lb_ces_ref)
- {
- 	if (BLI_listbase_count(lb_ces) != BLI_listbase_count(lb_ces_ref)) {
- 		return true;
- 	}
- 
- 	CollectionEngineSettings *ces, *ces_ref;
- 	for (ces = lb_ces->first, ces_ref = lb_ces_ref->first; ces; ces = ces->next, ces_ref = ces_ref->next) {
- 		if (BLI_listbase_count(&ces->properties) != BLI_listbase_count(&ces_ref->properties)) {
- 			return true;
- 		}
- 
- 		CollectionEngineProperty *cep, *cep_ref;
- 		for (cep = ces->properties.first, cep_ref = ces_ref->properties.first;
- 		     cep != NULL;
- 		     cep = cep->next, cep_ref = cep_ref->next)
- 		{
- 			if (cep->type != cep_ref->type) {
- 				return true;
- 			}
- 
- 			if (STREQ(cep->name, cep_ref->name) == false) {
- 				return true;
- 			}
- 		}
- 	}
- 
- 	return false;
- }
- 
- /**
-  * Get the first available LayerCollection
-  */
- static LayerCollection *scene_layer_doversion_collection_get(Main *bmain)
- {
- 	for (Scene *scene = bmain->scene.first; scene; scene = scene->id.next) {
- 		for (SceneLayer *sl = scene->render_layers.first; sl; sl = sl->next) {
- 			for (LayerCollection *lc = sl->layer_collections.first; lc; lc = lc->next) {
- 				return lc;
- 			}
- 		}
- 	}
- 	return NULL;
- }
- 
- /**
-  * See if a new LayerCollection have the same CollectionEngineSetti

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list