[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