[Bf-blender-cvs] [7ba1babc902] blender2.8: Merge branch 'master' into blender2.8
Sergey Sharybin
noreply at git.blender.org
Thu Nov 23 11:48:05 CET 2017
Commit: 7ba1babc902b9baf460b26ac24a19497231b64b5
Author: Sergey Sharybin
Date: Thu Nov 23 11:42:06 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB7ba1babc902b9baf460b26ac24a19497231b64b5
Merge branch 'master' into blender2.8
===================================================================
===================================================================
diff --cc source/blender/depsgraph/DEG_depsgraph_build.h
index c85c15e2aa2,b268822f659..334b15cc638
--- a/source/blender/depsgraph/DEG_depsgraph_build.h
+++ b/source/blender/depsgraph/DEG_depsgraph_build.h
@@@ -159,8 -164,9 +159,8 @@@ typedef bool (*DEG_CollobjFilterFunctio
void DEG_add_collision_relations(struct DepsNodeHandle *handle,
struct Scene *scene,
- struct Object *ob,
+ struct Object *object,
struct Group *group,
- int layer,
unsigned int modifier_type,
DEG_CollobjFilterFunction fn,
bool dupli,
diff --cc source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index ae6be5256dd,60150eda0bf..aea74af6861
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@@ -396,38 -309,48 +396,38 @@@ void DepsgraphNodeBuilder::build_group(
}
}
- void DepsgraphNodeBuilder::build_object(Object *ob,
-void DepsgraphNodeBuilder::build_object(Base *base, Object *object)
++void DepsgraphNodeBuilder::build_object(Object *object,
+ eDepsNode_LinkedState_Type linked_state)
{
- const bool has_object = (object->id.tag & LIB_TAG_DOIT);
- IDDepsNode *id_node = (has_object)
- ? graph_->find_id_node(&object->id)
- : add_id_node(&object->id);
- /* Update node layers.
- * Do it for both new and existing ID nodes. This is so because several
- * bases might be sharing same object.
- */
- if (base != NULL) {
- id_node->layers |= base->lay;
- }
- if (object->type == OB_CAMERA) {
- /* Camera should always be updated, it used directly by viewport.
- *
- * TODO(sergey): Make it only for active scene camera.
- */
- id_node->layers |= (unsigned int)(-1);
- }
/* Skip rest of components if the ID node was already there. */
- if (ob->id.tag & LIB_TAG_DOIT) {
- IDDepsNode *id_node = find_id_node(&ob->id);
- if (has_object) {
++ if (object->id.tag & LIB_TAG_DOIT) {
++ IDDepsNode *id_node = find_id_node(&object->id);
+ id_node->linked_state = max(id_node->linked_state, linked_state);
return;
}
- ob->id.tag |= LIB_TAG_DOIT;
+ object->id.tag |= LIB_TAG_DOIT;
+
+ /* Create ID node for object and begin init. */
- IDDepsNode *id_node = add_id_node(&ob->id);
++ IDDepsNode *id_node = add_id_node(&object->id);
+ id_node->linked_state = linked_state;
+
- ob->customdata_mask = 0;
+ object->customdata_mask = 0;
/* Standard components. */
- build_object_transform(ob);
+ build_object_transform(object);
- if (ob->parent != NULL) {
- build_object(ob->parent, linked_state);
+ if (object->parent != NULL) {
- build_object(NULL, object->parent);
++ build_object(object->parent, linked_state);
}
- if (ob->modifiers.first != NULL) {
+ if (object->modifiers.first != NULL) {
BuilderWalkUserData data;
data.builder = this;
- modifiers_foreachObjectLink(ob, modifier_walk, &data);
+ modifiers_foreachObjectLink(object, modifier_walk, &data);
}
- if (ob->constraints.first != NULL) {
+ if (object->constraints.first != NULL) {
BuilderWalkUserData data;
data.builder = this;
- BKE_constraints_id_loop(&ob->constraints, constraint_walk, &data);
+ BKE_constraints_id_loop(&object->constraints, constraint_walk, &data);
}
/* Object data. */
@@@ -466,16 -389,12 +466,16 @@@
break;
case OB_CAMERA: /* Camera */
- build_camera(ob);
+ build_camera(object);
break;
+ case OB_LIGHTPROBE:
- build_lightprobe(ob);
++ build_lightprobe(object);
+ break;
+
default:
{
- ID *obdata = (ID *)ob->data;
+ ID *obdata = (ID *)object->data;
if ((obdata->tag & LIB_TAG_DOIT) == 0) {
build_animdata(obdata);
}
@@@ -503,60 -422,53 +503,60 @@@
}
/* Object that this is a proxy for. */
- if (ob->proxy) {
- ob->proxy->proxy_from = ob;
- build_object(ob->proxy, DEG_ID_LINKED_INDIRECTLY);
+ if (object->proxy) {
+ object->proxy->proxy_from = object;
- build_object(base, object->proxy);
++ build_object(object->proxy, DEG_ID_LINKED_INDIRECTLY);
}
/* Object dupligroup. */
- if (ob->dup_group != NULL) {
- build_group(ob->dup_group);
+ if (object->dup_group != NULL) {
- build_group(base, object->dup_group);
++ build_group(object->dup_group);
}
}
- void DepsgraphNodeBuilder::build_object_transform(Object *ob)
+ void DepsgraphNodeBuilder::build_object_transform(Object *object)
{
OperationDepsNode *op_node;
+ Scene *scene_cow = get_cow_datablock(scene_);
- Object *ob_cow = get_cow_datablock(ob);
++ Object *ob_cow = get_cow_datablock(object);
/* local transforms (from transform channels - loc/rot/scale + deltas) */
- op_node = add_operation_node(&ob->id, DEG_NODE_TYPE_TRANSFORM,
+ op_node = add_operation_node(&object->id, DEG_NODE_TYPE_TRANSFORM,
- function_bind(BKE_object_eval_local_transform, _1, scene_, object),
+ function_bind(BKE_object_eval_local_transform,
+ _1,
+ scene_cow,
+ ob_cow),
DEG_OPCODE_TRANSFORM_LOCAL);
op_node->set_as_entry();
/* object parent */
- if (ob->parent != NULL) {
- add_operation_node(&ob->id, DEG_NODE_TYPE_TRANSFORM,
- if (object->parent) {
++ if (object->parent != NULL) {
+ add_operation_node(&object->id, DEG_NODE_TYPE_TRANSFORM,
- function_bind(BKE_object_eval_parent, _1, scene_, object),
+ function_bind(BKE_object_eval_parent,
+ _1,
+ scene_cow,
+ ob_cow),
DEG_OPCODE_TRANSFORM_PARENT);
}
/* object constraints */
- if (ob->constraints.first != NULL) {
- build_object_constraints(ob);
- if (object->constraints.first) {
++ if (object->constraints.first != NULL) {
+ build_object_constraints(object);
}
- /* Temporary uber-update node, which does everything.
- * It is for the being we're porting old dependencies into the new system.
- * We'll get rid of this node as soon as all the granular update functions
- * are filled in.
- *
- * TODO(sergey): Get rid of this node.
- */
+ /* Rest of transformation update. */
- add_operation_node(&ob->id, DEG_NODE_TYPE_TRANSFORM,
+ add_operation_node(&object->id, DEG_NODE_TYPE_TRANSFORM,
- function_bind(BKE_object_eval_uber_transform, _1, scene_, object),
+ function_bind(BKE_object_eval_uber_transform,
+ _1,
+ scene_cow,
+ ob_cow),
DEG_OPCODE_TRANSFORM_OBJECT_UBEREVAL);
/* object transform is done */
- op_node = add_operation_node(&ob->id, DEG_NODE_TYPE_TRANSFORM,
+ op_node = add_operation_node(&object->id, DEG_NODE_TYPE_TRANSFORM,
- function_bind(BKE_object_eval_done, _1, object),
+ function_bind(BKE_object_eval_done,
+ _1,
+ ob_cow),
DEG_OPCODE_TRANSFORM_FINAL);
op_node->set_as_exit();
}
@@@ -578,14 -490,11 +578,14 @@@
*
* -- Aligorith, August 2013
*/
- void DepsgraphNodeBuilder::build_object_constraints(Object *ob)
+ void DepsgraphNodeBuilder::build_object_constraints(Object *object)
{
/* create node for constraint stack */
- add_operation_node(&ob->id, DEG_NODE_TYPE_TRANSFORM,
+ add_operation_node(&object->id, DEG_NODE_TYPE_TRANSFORM,
- function_bind(BKE_object_eval_constraints, _1, scene_, object),
+ function_bind(BKE_object_eval_constraints,
+ _1,
+ get_cow_datablock(scene_),
- get_cow_datablock(ob)),
++ get_cow_datablock(object)),
DEG_OPCODE_TRANSFORM_CONSTRAINTS);
}
@@@ -752,14 -638,9 +752,14 @@@ void DepsgraphNodeBuilder::build_rigidb
continue;
/* 2) create operation for flushing results */
- /* object's transform component - where the rigidbody operation lives */
+ /* object's transform component - where the rigidbody operation
+ * lives. */
- add_operation_node(&ob->id, DEG_NODE_TYPE_TRANSFORM,
+ add_operation_node(&object->id, DEG_NODE_TYPE_TRANSFORM,
- function_bind(BKE_rigidbody_object_sync_transforms, _1, scene, object),
+ function_bind(
+ BKE_rigidbody_object_sync_transforms,
+ _1,
+ scene_cow,
- get_cow_datablock(ob)),
++ get_cow_datablock(object)),
DEG_OPCODE_RIGIDBODY_TRANSFORM_COPY);
}
}
@@@ -784,12 -665,8 +784,12 @@@ void DepsgraphNodeBuilder::build_partic
/* component for all particle systems */
ComponentDepsNode *psys_comp =
- add_component_node(&ob->id, DEG_NODE_TYPE_EVAL_PARTICLES);
+ add_component_node(&object->id, DEG_NODE_TYPE_EVAL_PARTICLES);
+ /* TODO(sergey): Need to get COW of PSYS. */
+ Scene *scene_cow = get_cow_datablock(scene_);
- Object *ob_cow = get_cow_datablock(ob);
++ Object *ob_cow = get_cow_datablock(object);
+
add_operation_node(psys_comp,
function_bind(BKE_particle_system_eval_init,
_1,
@@@ -798,24 -675,15 +798,24 @@@
DEG_OPCODE_PARTICLE_SYSTEM_EVAL_INIT);
/* particle systems */
- LINKLIST_FOREACH (ParticleSystem *, psys, &ob->particlesystem) {
+ LINKLIST_FOREACH (ParticleSystem *, psys, &object->particlesyste
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list