[Bf-blender-cvs] [025bf11a9ff] blender2.8: Merge branch 'master' into blender2.8
Sergey Sharybin
noreply at git.blender.org
Thu Apr 5 18:26:20 CEST 2018
Commit: 025bf11a9ff3f2faa0ec1111e8c286e36ad8cf57
Author: Sergey Sharybin
Date: Thu Apr 5 18:25:05 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB025bf11a9ff3f2faa0ec1111e8c286e36ad8cf57
Merge branch 'master' into blender2.8
===================================================================
===================================================================
diff --cc source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 565218d8be0,7b2914303ce..eff6b34fee6
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@@ -116,62 -114,6 +116,17 @@@ extern "C"
namespace DEG {
+namespace {
+
- struct BuilderWalkUserData {
- DepsgraphNodeBuilder *builder;
- };
-
- static void modifier_walk(void *user_data,
- struct Object * /*object*/,
- struct ID **idpoin,
- int /*cb_flag*/)
- {
- BuilderWalkUserData *data = (BuilderWalkUserData *)user_data;
- ID *id = *idpoin;
- if (id == NULL) {
- return;
- }
- switch (GS(id->name)) {
- case ID_OB:
- data->builder->build_object(NULL,
- (Object *)id,
- DEG_ID_LINKED_INDIRECTLY);
- break;
- case ID_TE:
- data->builder->build_texture((Tex *)id);
- break;
- default:
- /* pass */
- break;
- }
- }
-
- void constraint_walk(bConstraint * /*con*/,
- ID **idpoin,
- bool /*is_reference*/,
- void *user_data)
- {
- BuilderWalkUserData *data = (BuilderWalkUserData *)user_data;
- if (*idpoin) {
- ID *id = *idpoin;
- if (GS(id->name) == ID_OB) {
- data->builder->build_object(NULL,
- (Object *)id,
- DEG_ID_LINKED_INDIRECTLY);
- }
- }
- }
-
+void free_copy_on_write_datablock(void *id_v)
+{
+ ID *id = (ID *)id_v;
+ deg_free_copy_on_write_datablock(id);
+ MEM_freeN(id);
+}
+
+} /* namespace */
+
/* ************ */
/* Node Builder */
@@@ -1415,25 -1103,50 +1370,74 @@@ void DepsgraphNodeBuilder::build_moviec
DEG_OPCODE_MOVIECLIP_EVAL);
}
+void DepsgraphNodeBuilder::build_lightprobe(Object *object)
+{
+ LightProbe *probe = (LightProbe *)object->data;
+ if (built_map_.checkIsBuiltAndTag(probe)) {
+ return;
+ }
+ /* Placeholder so we can add relations and tag ID node for update. */
+ add_operation_node(&probe->id,
+ DEG_NODE_TYPE_PARAMETERS,
+ NULL,
+ DEG_OPCODE_PLACEHOLDER,
+ "LightProbe Eval");
+ add_operation_node(&object->id,
+ DEG_NODE_TYPE_PARAMETERS,
+ NULL,
+ DEG_OPCODE_PLACEHOLDER,
+ "LightProbe Eval");
+
+ build_animdata(&probe->id);
+}
+
+ /* **** ID traversal callbacks functions **** */
+
+ void DepsgraphNodeBuilder::modifier_walk(void *user_data,
+ struct Object * /*object*/,
+ struct ID **idpoin,
+ int /*cb_flag*/)
+ {
+ BuilderWalkUserData *data = (BuilderWalkUserData *)user_data;
+ ID *id = *idpoin;
+ if (id == NULL) {
+ return;
+ }
+ switch (GS(id->name)) {
+ case ID_OB:
- data->builder->build_object(NULL, (Object *)id);
++ data->builder->build_object(NULL,
++ (Object *)id,
++ DEG_ID_LINKED_INDIRECTLY);
+ break;
+ case ID_TE:
+ data->builder->build_texture((Tex *)id);
+ break;
+ default:
+ /* pass */
+ break;
+ }
+ }
+
+ void DepsgraphNodeBuilder::constraint_walk(bConstraint * /*con*/,
+ ID **idpoin,
+ bool /*is_reference*/,
+ void *user_data)
+ {
+ BuilderWalkUserData *data = (BuilderWalkUserData *)user_data;
+ ID *id = *idpoin;
+ if (id == NULL) {
+ return;
+ }
+ switch (GS(id->name)) {
+ case ID_OB:
- data->builder->build_object(NULL, (Object *)id);
++ data->builder->build_object(NULL,
++ (Object *)id,
++ DEG_ID_LINKED_INDIRECTLY);
+ break;
+ default:
+ /* pass */
+ break;
+ }
+ }
+
-
} // namespace DEG
diff --cc source/blender/depsgraph/intern/builder/deg_builder_nodes.h
index 8dfbc4fa37c,d64aee11536..fd72ae527b8
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
@@@ -212,27 -163,22 +212,41 @@@ struct DepsgraphNodeBuilder
void build_cachefile(CacheFile *cache_file);
void build_mask(Mask *mask);
void build_movieclip(MovieClip *clip);
+ void build_lightprobe(Object *object);
+ struct LayerCollectionState {
+ int index;
+ LayerCollection *parent;
+ };
+ void build_layer_collection(ID *owner_id,
+ LayerCollection *layer_collection,
+ LayerCollectionState *state);
+ void build_layer_collections(ID *owner_id,
+ ListBase *layer_collections,
+ LayerCollectionState *state);
+ void build_view_layer_collections(ID *owner_id, ViewLayer *view_layer);
protected:
+ struct SavedEntryTag {
+ ID *id;
+ eDepsNode_Type component_type;
+ eDepsOperation_Code opcode;
+ };
+ vector<SavedEntryTag> saved_entry_tags_;
+
+ struct BuilderWalkUserData {
+ DepsgraphNodeBuilder *builder;
+ };
+
+ static void modifier_walk(void *user_data,
+ struct Object *object,
+ struct ID **idpoin,
+ int cb_flag);
+
+ static void constraint_walk(bConstraint *constraint,
+ ID **idpoin,
+ bool is_reference,
+ void *user_data);
+
/* State which never changes, same for the whole builder time. */
Main *bmain_;
Depsgraph *graph_;
More information about the Bf-blender-cvs
mailing list