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. @@

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

Reply via email to