[Bf-blender-cvs] [545f671b80f] blender2.8: Merge branch 'master' into blender2.8
Sergey Sharybin
noreply at git.blender.org
Thu Nov 23 12:05:19 CET 2017
Commit: 545f671b80f2ad39c8fdee07db3b03119c274187
Author: Sergey Sharybin
Date: Thu Nov 23 12:04:57 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB545f671b80f2ad39c8fdee07db3b03119c274187
Merge branch 'master' into blender2.8
===================================================================
===================================================================
diff --cc source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index aea74af6861,838afbbdbbb..948e1410df5
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@@ -406,19 -334,14 +406,19 @@@ void DepsgraphNodeBuilder::build_object
return;
}
object->id.tag |= LIB_TAG_DOIT;
+
+ /* Create ID node for object and begin init. */
+ IDDepsNode *id_node = add_id_node(&object->id);
+ id_node->linked_state = linked_state;
+
object->customdata_mask = 0;
-
- /* Standard components. */
+ /* Transform. */
build_object_transform(object);
-
+ /* Parent. */
if (object->parent != NULL) {
- build_object(NULL, object->parent);
+ build_object(object->parent, linked_state);
}
+ /* Modifiers. */
if (object->modifiers.first != NULL) {
BuilderWalkUserData data;
data.builder = this;
@@@ -504,16 -373,64 +450,67 @@@
/* Object that this is a proxy for. */
if (object->proxy) {
object->proxy->proxy_from = object;
- build_object(base, object->proxy);
+ build_object(object->proxy, DEG_ID_LINKED_INDIRECTLY);
}
-
/* Object dupligroup. */
if (object->dup_group != NULL) {
- build_group(base, object->dup_group);
+ build_group(object->dup_group);
}
}
+ void DepsgraphNodeBuilder::build_object_data(Object *object)
+ {
+ if (object->data == NULL) {
+ return;
+ }
+ IDDepsNode *id_node = graph_->find_id_node(&object->id);
- /* type-specific data... */
++ /* type-specific data. */
+ switch (object->type) {
- case OB_MESH: /* Geometry */
++ case OB_MESH:
+ case OB_CURVE:
+ case OB_FONT:
+ case OB_SURF:
+ case OB_MBALL:
+ case OB_LATTICE:
+ build_obdata_geom(object);
+ /* TODO(sergey): Only for until we support granular
+ * update of curves.
+ */
+ if (object->type == OB_FONT) {
+ Curve *curve = (Curve *)object->data;
+ if (curve->textoncurve) {
+ id_node->eval_flags |= DAG_EVAL_NEED_CURVE_PATH;
+ }
+ }
+ break;
+ case OB_ARMATURE:
+ if (ID_IS_LINKED(object) && object->proxy_from != NULL) {
+ build_proxy_rig(object);
+ }
+ else {
+ build_rig(object);
+ }
+ break;
+ case OB_LAMP:
+ build_lamp(object);
+ break;
+ case OB_CAMERA:
+ build_camera(object);
+ break;
++ case OB_LIGHTPROBE:
++ build_lightprobe(object);
++ break;
+ default:
+ {
+ ID *obdata = (ID *)object->data;
+ if ((obdata->tag & LIB_TAG_DOIT) == 0) {
+ build_animdata(obdata);
+ }
+ break;
+ }
+ }
+ }
+
void DepsgraphNodeBuilder::build_object_transform(Object *object)
{
OperationDepsNode *op_node;
diff --cc source/blender/depsgraph/intern/builder/deg_builder_nodes.h
index a956c94a682,2fa9ba01cc7..00109eeafcc
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
@@@ -157,12 -118,10 +157,13 @@@ struct DepsgraphNodeBuilder
const char *name = "",
int name_tag = -1);
- void build_scene(Scene *scene);
- void build_group(Base *base, Group *group);
- void build_object(Base *base, Object *object);
+ void build_view_layer(Scene *scene,
+ ViewLayer *view_layer,
+ eDepsNode_LinkedState_Type linked_state);
+ void build_group(Group *group);
+ void build_object(Object *object,
+ eDepsNode_LinkedState_Type linked_state);
+ void build_object_data(Object *object);
void build_object_transform(Object *object);
void build_object_constraints(Object *object);
void build_pose_constraints(Object *object, bPoseChannel *pchan);
diff --cc source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 9da3046ff07,67faa59bbc3..26eaea9a18c
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@@ -592,6 -540,49 +541,52 @@@ void DepsgraphRelationBuilder::build_ob
}
}
+ void DepsgraphRelationBuilder::build_object_data(Object *object)
+ {
+ if (object->data == NULL) {
+ return;
+ }
+ ID *obdata_id = (ID *)object->data;
+ /* Object data animation. */
+ build_animdata(obdata_id);
+ /* type-specific data. */
+ switch (object->type) {
+ case OB_MESH:
+ case OB_CURVE:
+ case OB_FONT:
+ case OB_SURF:
+ case OB_MBALL:
+ case OB_LATTICE:
+ {
+ build_obdata_geom(object);
+ break;
+ }
+ case OB_ARMATURE:
+ if (ID_IS_LINKED(object) && object->proxy_from != NULL) {
+ build_proxy_rig(object);
+ }
+ else {
+ build_rig(object);
+ }
+ break;
+ case OB_LAMP:
+ build_lamp(object);
+ break;
+ case OB_CAMERA:
+ build_camera(object);
+ break;
++ case OB_LIGHTPROBE:
++ build_lightprobe(object);
++ break;
+ }
+ Key *key = BKE_key_from_object(object);
+ if (key != NULL) {
+ ComponentKey geometry_key((ID *)object->data, DEG_NODE_TYPE_GEOMETRY);
+ ComponentKey key_key(&key->id, DEG_NODE_TYPE_GEOMETRY);
+ add_relation(key_key, geometry_key, "Shapekeys");
+ }
+ }
+
void DepsgraphRelationBuilder::build_object_parent(Object *object)
{
/* XXX: for now, need to use the component key (not just direct to the parent op),
diff --cc source/blender/depsgraph/intern/builder/deg_builder_relations.h
index 15d9f1db4dc,2bb087a1359..57c9c762d9b
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h
@@@ -186,9 -184,10 +186,10 @@@ struct DepsgraphRelationBuilde
const DepsNodeHandle *handle,
const char *description);
- void build_scene(Scene *scene);
+ void build_view_layer(Scene *scene, ViewLayer *view_layer);
void build_group(Object *object, Group *group);
void build_object(Object *object);
+ void build_object_data(Object *object);
void build_object_parent(Object *object);
void build_constraints(ID *id,
eDepsNode_Type component_type,
More information about the Bf-blender-cvs
mailing list