Merge branch 'master' into blender2.8
authorSergey Sharybin <sergey.vfx@gmail.com>
Wed, 7 Jun 2017 12:09:53 +0000 (14:09 +0200)
committerSergey Sharybin <sergey.vfx@gmail.com>
Wed, 7 Jun 2017 12:09:53 +0000 (14:09 +0200)
source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/intern/object_update.c
source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
source/blender/depsgraph/intern/builder/deg_builder_relations.cc
source/blender/depsgraph/intern/depsgraph_type_defines.cc
source/blender/depsgraph/intern/depsgraph_types.h

index 69ff9765a93d6a346d9dd3f6b2d516ca19ab2789..6bc2706c685cd1185656d8373a59fee2176b32c2 100644 (file)
@@ -189,10 +189,6 @@ void BKE_object_eval_constraints(struct EvaluationContext *eval_ctx,
                                  struct Object *ob);
 void BKE_object_eval_done(struct EvaluationContext *eval_ctx, struct Object *ob);
 
-void BKE_object_eval_modifier(struct EvaluationContext *eval_ctx,
-                              struct Scene *scene,
-                              struct Object *ob,
-                              struct ModifierData *md);
 void BKE_object_eval_uber_transform(struct EvaluationContext *eval_ctx,
                                     struct Scene *scene,
                                     struct Object *ob);
index b4cf9b162470a23747b7cb433bdaa09154daa3d7..0c53ee8818a2fd80cee1c89b0f4d17c86c52bb47 100644 (file)
@@ -142,18 +142,6 @@ void BKE_object_eval_done(EvaluationContext *UNUSED(eval_ctx), Object *ob)
        else ob->transflag &= ~OB_NEG_SCALE;
 }
 
-void BKE_object_eval_modifier(struct EvaluationContext *eval_ctx,
-                              struct Scene *scene,
-                              struct Object *ob,
-                              struct ModifierData *md)
-{
-       DEBUG_PRINT("%s on %s\n", __func__, ob->id.name);
-       (void) eval_ctx;  /* Ignored. */
-       (void) scene;  /* Ignored. */
-       (void) ob;  /* Ignored. */
-       (void) md;  /* Ignored. */
-}
-
 void BKE_object_handle_data_update(EvaluationContext *eval_ctx,
                                    Scene *scene,
                                    Object *ob)
index db9b895ffda6c4ee8a3181437188462c598e6a40..a95b498280abd1cdd246d67928dc6b7597d22b11 100644 (file)
@@ -753,17 +753,8 @@ void DepsgraphNodeBuilder::build_obdata_geom(Scene *scene, Object *ob)
 
        // TODO: "Done" operation
 
-       /* Modifiers */
+       /* Cloyth modifier. */
        LINKLIST_FOREACH (ModifierData *, md, &ob->modifiers) {
-               add_operation_node(&ob->id,
-                                  DEG_NODE_TYPE_GEOMETRY,
-                                  function_bind(BKE_object_eval_modifier,
-                                                _1,
-                                                scene,
-                                                ob,
-                                                md),
-                                  DEG_OPCODE_GEOMETRY_MODIFIER,
-                                  md->name);
                if (md->type == eModifierType_Cloth) {
                        build_cloth(scene, ob);
                }
index 2726800effdf7bbe41d44e027dd566336c79579d..69f04b20cd8b674209126bfc6fb1864c76cb828e 100644 (file)
@@ -995,21 +995,12 @@ void DepsgraphRelationBuilder::build_driver(ID *id, FCurve *fcu)
                }
        }
        else if (GS(id->name) == ID_OB && strstr(rna_path, "modifiers[")) {
-               /* modifier driver - connect directly to the modifier */
-               char *modifier_name = BLI_str_quoted_substrN(rna_path, "modifiers[");
-               if (modifier_name) {
-                       OperationKey modifier_key(id,
-                                                 DEG_NODE_TYPE_GEOMETRY,
-                                                 DEG_OPCODE_GEOMETRY_MODIFIER,
-                                                 modifier_name);
-                       if (has_node(modifier_key)) {
-                               add_relation(driver_key, modifier_key, "[Driver -> Modifier]");
-                       }
-                       else {
-                               printf("Unexisting driver RNA path: %s\n", rna_path);
-                       }
-
-                       MEM_freeN(modifier_name);
+               OperationKey modifier_key(id, DEG_NODE_TYPE_GEOMETRY, DEG_OPCODE_GEOMETRY_UBEREVAL);
+               if (has_node(modifier_key)) {
+                       add_relation(driver_key, modifier_key, "[Driver -> Modifier]");
+               }
+               else {
+                       printf("Unexisting driver RNA path: %s\n", rna_path);
                }
        }
        else if (GS(id->name) == ID_KE && strstr(rna_path, "key_blocks[")) {
@@ -1326,7 +1317,7 @@ void DepsgraphRelationBuilder::build_particles(Scene *scene, Object *ob)
 
 void DepsgraphRelationBuilder::build_cloth(Scene * /*scene*/,
                                            Object *object,
-                                           ModifierData *md)
+                                           ModifierData * /*md*/)
 {
        OperationKey cache_key(&object->id,
                               DEG_NODE_TYPE_CACHE,
@@ -1335,8 +1326,7 @@ void DepsgraphRelationBuilder::build_cloth(Scene * /*scene*/,
        /* Cache component affects on modifier. */
        OperationKey modifier_key(&object->id,
                                  DEG_NODE_TYPE_GEOMETRY,
-                                 DEG_OPCODE_GEOMETRY_MODIFIER,
-                                 md->name);
+                                 DEG_OPCODE_GEOMETRY_UBEREVAL);
        add_relation(cache_key, modifier_key, "Cloth Cache -> Cloth");
 }
 
@@ -1399,24 +1389,16 @@ void DepsgraphRelationBuilder::build_obdata_geom(Main *bmain, Scene *scene, Obje
        add_relation(obdata_geom_key, geom_key, "Object Geometry Base Data");
 
        /* Modifiers */
-       if (ob->modifiers.first) {
-               OperationKey prev_mod_key;
+       if (ob->modifiers.first != NULL) {
+               OperationKey obdata_ubereval_key(&ob->id,
+                                                DEG_NODE_TYPE_GEOMETRY,
+                                                DEG_OPCODE_GEOMETRY_UBEREVAL);
 
                LINKLIST_FOREACH (ModifierData *, md, &ob->modifiers) {
                        const ModifierTypeInfo *mti = modifierType_getInfo((ModifierType)md->type);
-                       OperationKey mod_key(&ob->id, DEG_NODE_TYPE_GEOMETRY, DEG_OPCODE_GEOMETRY_MODIFIER, md->name);
-
-                       if (md->prev) {
-                               /* Stack relation: modifier depends on previous modifier in the stack */
-                               add_relation(prev_mod_key, mod_key, "Modifier Stack");
-                       }
-                       else {
-                               /* Stack relation: first modifier depends on the geometry. */
-                               add_relation(geom_init_key, mod_key, "Modifier Stack");
-                       }
 
                        if (mti->updateDepsgraph) {
-                               DepsNodeHandle handle = create_node_handle(mod_key);
+                               DepsNodeHandle handle = create_node_handle(obdata_ubereval_key);
                                mti->updateDepsgraph(
                                        md,
                                        bmain,
@@ -1427,7 +1409,7 @@ void DepsgraphRelationBuilder::build_obdata_geom(Main *bmain, Scene *scene, Obje
 
                        if (BKE_object_modifier_use_time(ob, md)) {
                                TimeSourceKey time_src_key;
-                               add_relation(time_src_key, mod_key, "Time Source");
+                               add_relation(time_src_key, obdata_ubereval_key, "Time Source");
 
                                /* Hacky fix for T45633 (Animated modifiers aren't updated)
                                 *
@@ -1437,15 +1419,13 @@ void DepsgraphRelationBuilder::build_obdata_geom(Main *bmain, Scene *scene, Obje
                                /* XXX: Remove this hack when these links are added as part of build_animdata() instead */
                                if (modifier_dependsOnTime(md) == false && needs_animdata_node(&ob->id)) {
                                        ComponentKey animation_key(&ob->id, DEG_NODE_TYPE_ANIMATION);
-                                       add_relation(animation_key, mod_key, "Modifier Animation");
+                                       add_relation(animation_key, obdata_ubereval_key, "Modifier Animation");
                                }
                        }
 
                        if (md->type == eModifierType_Cloth) {
                                build_cloth(scene, ob, md);
                        }
-
-                       prev_mod_key = mod_key;
                }
        }
 
@@ -1471,14 +1451,7 @@ void DepsgraphRelationBuilder::build_obdata_geom(Main *bmain, Scene *scene, Obje
        if (ob->type != OB_ARMATURE) {
                /* Armatures does no longer require uber node. */
                OperationKey obdata_ubereval_key(&ob->id, DEG_NODE_TYPE_GEOMETRY, DEG_OPCODE_GEOMETRY_UBEREVAL);
-               if (ob->modifiers.last) {
-                       ModifierData *md = (ModifierData *)ob->modifiers.last;
-                       OperationKey mod_key(&ob->id, DEG_NODE_TYPE_GEOMETRY, DEG_OPCODE_GEOMETRY_MODIFIER, md->name);
-                       add_relation(mod_key, obdata_ubereval_key, "Object Geometry UberEval");
-               }
-               else {
-                       add_relation(geom_init_key, obdata_ubereval_key, "Object Geometry UberEval");
-               }
+               add_relation(geom_init_key, obdata_ubereval_key, "Object Geometry UberEval");
        }
 
        if (obdata->tag & LIB_TAG_DOIT) {
index 8e07caf3e0ec88d6ba375dfcd5462f0d700178d3..612944dab6e7da5d51b4e326f089554a30bd806d 100644 (file)
@@ -97,23 +97,17 @@ static const char *stringify_opcode(eDepsOperation_Code opcode)
 #define STRINGIFY_OPCODE(name) case DEG_OPCODE_##name: return #name
                STRINGIFY_OPCODE(OPERATION);
                STRINGIFY_OPCODE(PLACEHOLDER);
-               STRINGIFY_OPCODE(NOOP);
                STRINGIFY_OPCODE(ANIMATION);
                STRINGIFY_OPCODE(DRIVER);
-               //STRINGIFY_OPCODE(PROXY);
                STRINGIFY_OPCODE(TRANSFORM_LOCAL);
                STRINGIFY_OPCODE(TRANSFORM_PARENT);
                STRINGIFY_OPCODE(TRANSFORM_CONSTRAINTS);
-               //STRINGIFY_OPCODE(TRANSFORM_CONSTRAINTS_INIT);
-               //STRINGIFY_OPCODE(TRANSFORM_CONSTRAINT);
-               //STRINGIFY_OPCODE(TRANSFORM_CONSTRAINTS_DONE);
                STRINGIFY_OPCODE(RIGIDBODY_REBUILD);
                STRINGIFY_OPCODE(RIGIDBODY_SIM);
                STRINGIFY_OPCODE(TRANSFORM_RIGIDBODY);
                STRINGIFY_OPCODE(TRANSFORM_FINAL);
                STRINGIFY_OPCODE(OBJECT_UBEREVAL);
                STRINGIFY_OPCODE(GEOMETRY_UBEREVAL);
-               STRINGIFY_OPCODE(GEOMETRY_MODIFIER);
                STRINGIFY_OPCODE(GEOMETRY_PATH);
                STRINGIFY_OPCODE(POSE_INIT);
                STRINGIFY_OPCODE(POSE_DONE);
@@ -122,9 +116,6 @@ static const char *stringify_opcode(eDepsOperation_Code opcode)
                STRINGIFY_OPCODE(BONE_LOCAL);
                STRINGIFY_OPCODE(BONE_POSE_PARENT);
                STRINGIFY_OPCODE(BONE_CONSTRAINTS);
-               //STRINGIFY_OPCODE(BONE_CONSTRAINTS_INIT);
-               //STRINGIFY_OPCODE(BONE_CONSTRAINT);
-               //STRINGIFY_OPCODE(BONE_CONSTRAINTS_DONE);
                STRINGIFY_OPCODE(BONE_READY);
                STRINGIFY_OPCODE(BONE_DONE);
                STRINGIFY_OPCODE(PSYS_EVAL);
index 2668ff70d7f584e5c89d977f179e67f008aae8f4..c72e93e30ab1d17dd37a0e3a1ff40fdd994f06d8 100644 (file)
@@ -143,8 +143,6 @@ typedef enum eDepsOperation_Code {
        // XXX: Placeholder while porting depsgraph code
        DEG_OPCODE_PLACEHOLDER,
 
-       DEG_OPCODE_NOOP,
-
        /* Animation, Drivers, etc. ------------------------ */
 
        /* NLA + Action */
@@ -153,9 +151,6 @@ typedef enum eDepsOperation_Code {
        /* Driver */
        DEG_OPCODE_DRIVER,
 
-       /* Proxy Inherit? */
-       //DEG_OPCODE_PROXY,
-
        /* Transform --------------------------------------- */
 
        /* Transform entry point - local transforms only */
@@ -166,9 +161,6 @@ typedef enum eDepsOperation_Code {
 
        /* Constraints */
        DEG_OPCODE_TRANSFORM_CONSTRAINTS,
-       //DEG_OPCODE_TRANSFORM_CONSTRAINTS_INIT,
-       //DEG_OPCODE_TRANSFORM_CONSTRAINT,
-       //DEG_OPCODE_TRANSFORM_CONSTRAINTS_DONE,
 
        /* Rigidbody Sim - Perform Sim */
        DEG_OPCODE_RIGIDBODY_REBUILD,
@@ -188,9 +180,6 @@ typedef enum eDepsOperation_Code {
        /* XXX: Placeholder - UberEval */
        DEG_OPCODE_GEOMETRY_UBEREVAL,
 
-       /* Modifier */
-       DEG_OPCODE_GEOMETRY_MODIFIER,
-
        /* Curve Objects - Path Calculation (used for path-following tools, */
        DEG_OPCODE_GEOMETRY_PATH,
 
@@ -216,9 +205,6 @@ typedef enum eDepsOperation_Code {
 
        /* Constraints */
        DEG_OPCODE_BONE_CONSTRAINTS,
-       //DEG_OPCODE_BONE_CONSTRAINTS_INIT,
-       //DEG_OPCODE_BONE_CONSTRAINT,
-       //DEG_OPCODE_BONE_CONSTRAINTS_DONE,
 
        /* Bone transforms are ready
         *