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