diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-06-06 11:47:54 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-06-06 13:36:51 +0300 |
commit | ca7de1ff22c70df0f82e8f860cf4dad37bf2ef4b (patch) | |
tree | cc392bcac686fea34a0207c1bfc676d6f5f9c2f1 /source/blender/depsgraph/intern/builder/deg_builder_relations.cc | |
parent | 1a0cb28ae2c0734ad8d8438eb1db5b14a4c71291 (diff) |
Depsgraph: Object data separation, lamp
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations.cc')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 8e826cd01df..9d978aff9fb 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -609,7 +609,7 @@ void DepsgraphRelationBuilder::build_object_data(Object *object) } break; case OB_LAMP: - build_lamp(object); + build_object_data_lamp(object); break; case OB_CAMERA: build_camera(object); @@ -627,6 +627,15 @@ void DepsgraphRelationBuilder::build_object_data(Object *object) } } +void DepsgraphRelationBuilder::build_object_data_lamp(Object *object) +{ + Lamp *lamp = (Lamp *)object->data; + build_lamp(lamp); + ComponentKey object_parameters_key(&object->id, DEG_NODE_TYPE_PARAMETERS); + ComponentKey lamp_parameters_key(&lamp->id, DEG_NODE_TYPE_PARAMETERS); + add_relation(lamp_parameters_key, object_parameters_key, "Lamp -> Object"); +} + void DepsgraphRelationBuilder::build_object_data_lightprobe(Object *object) { LightProbe *probe = (LightProbe *)object->data; @@ -1873,37 +1882,19 @@ void DepsgraphRelationBuilder::build_camera(Object *object) } /* Lamps */ -void DepsgraphRelationBuilder::build_lamp(Object *object) +void DepsgraphRelationBuilder::build_lamp(Lamp *lamp) { - Lamp *lamp = (Lamp *)object->data; if (built_map_.checkIsBuiltAndTag(lamp)) { return; } - - ComponentKey object_parameters_key(&object->id, DEG_NODE_TYPE_PARAMETERS); - ComponentKey lamp_parameters_key(&lamp->id, DEG_NODE_TYPE_PARAMETERS); - - add_relation(lamp_parameters_key, object_parameters_key, - "Lamp -> Object"); - /* lamp's nodetree */ if (lamp->nodetree != NULL) { build_nodetree(lamp->nodetree); + ComponentKey lamp_parameters_key(&lamp->id, DEG_NODE_TYPE_PARAMETERS); ComponentKey nodetree_key(&lamp->nodetree->id, DEG_NODE_TYPE_SHADING); add_relation(nodetree_key, lamp_parameters_key, "NTree->Lamp Parameters"); build_nested_nodetree(&lamp->id, lamp->nodetree); } - - /* Make sure copy on write of lamp data is always properly updated for - * visible lamps. - */ - OperationKey ob_copy_on_write_key(&object->id, - DEG_NODE_TYPE_COPY_ON_WRITE, - DEG_OPCODE_COPY_ON_WRITE); - OperationKey lamp_copy_on_write_key(&lamp->id, - DEG_NODE_TYPE_COPY_ON_WRITE, - DEG_OPCODE_COPY_ON_WRITE); - add_relation(lamp_copy_on_write_key, ob_copy_on_write_key, "Eval Order"); } void DepsgraphRelationBuilder::build_nodetree(bNodeTree *ntree) |