[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