Merge branch 'master' into blender2.8
[blender.git] / source / blender / editors / curve / editcurve.c
index f4ee05636c7bfc62cf516b020e121ae492a46fe5..4b578ba389ebc1f1f387cd5fc06f94ed368e2d59 100644 (file)
 
 #include "BKE_context.h"
 #include "BKE_curve.h"
-#include "BKE_depsgraph.h"
 #include "BKE_displist.h"
 #include "BKE_fcurve.h"
 #include "BKE_global.h"
 #include "BKE_key.h"
+#include "BKE_layer.h"
 #include "BKE_library.h"
 #include "BKE_main.h"
 #include "BKE_report.h"
@@ -57,6 +57,9 @@
 #include "BKE_action.h"
 #include "BKE_modifier.h"
 
+#include "DEG_depsgraph.h"
+#include "DEG_depsgraph_build.h"
+
 #include "WM_api.h"
 #include "WM_types.h"
 
@@ -1285,6 +1288,7 @@ static int separate_exec(bContext *C, wmOperator *op)
 {
        Main *bmain = CTX_data_main(C);
        Scene *scene = CTX_data_scene(C);
+       ViewLayer *view_layer = CTX_data_view_layer(C);
        Object *oldob, *newob;
        Base *oldbase, *newbase;
        Curve *oldcu, *newcu;
@@ -1312,8 +1316,8 @@ static int separate_exec(bContext *C, wmOperator *op)
        }
 
        /* 2. duplicate the object and data */
-       newbase = ED_object_add_duplicate(bmain, scene, oldbase, 0); /* 0 = fully linked */
-       DAG_relations_tag_update(bmain);
+       newbase = ED_object_add_duplicate(bmain, scene, view_layer, oldbase, 0); /* 0 = fully linked */
+       DEG_relations_tag_update(bmain);
 
        newob = newbase->object;
        newcu = newob->data = BKE_curve_copy(bmain, oldcu);
@@ -1332,8 +1336,8 @@ static int separate_exec(bContext *C, wmOperator *op)
        ED_curve_editnurb_free(newob);
        curve_delete_segments(oldob, true);
 
-       DAG_id_tag_update(&oldob->id, OB_RECALC_DATA);  /* this is the original one */
-       DAG_id_tag_update(&newob->id, OB_RECALC_DATA);  /* this is the separated one */
+       DEG_id_tag_update(&oldob->id, OB_RECALC_DATA);  /* this is the original one */
+       DEG_id_tag_update(&newob->id, OB_RECALC_DATA);  /* this is the separated one */
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, oldob->data);
        WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, newob);
@@ -1381,7 +1385,7 @@ static int curve_split_exec(bContext *C, wmOperator *op)
                        WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
 
                WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-               DAG_id_tag_update(obedit->data, 0);
+               DEG_id_tag_update(obedit->data, 0);
        }
        else {
                BKE_report(op->reports, RPT_ERROR, "Cannot split current selection");
@@ -2327,7 +2331,7 @@ static int switch_direction_exec(bContext *C, wmOperator *UNUSED(op))
        if (ED_curve_updateAnimPaths(obedit->data))
                WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
 
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
 
        return OPERATOR_FINISHED;
@@ -2375,7 +2379,7 @@ static int set_goal_weight_exec(bContext *C, wmOperator *op)
                }
        }
 
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
 
        return OPERATOR_FINISHED;
@@ -2428,7 +2432,7 @@ static int set_radius_exec(bContext *C, wmOperator *op)
        }
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -2580,7 +2584,7 @@ static int smooth_exec(bContext *C, wmOperator *UNUSED(op))
        }
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -2771,7 +2775,7 @@ static int curve_smooth_weight_exec(bContext *C, wmOperator *UNUSED(op))
        curve_smooth_value(editnurb, offsetof(BezTriple, weight), offsetof(BPoint, weight));
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -2799,7 +2803,7 @@ static int curve_smooth_radius_exec(bContext *C, wmOperator *UNUSED(op))
        curve_smooth_value(editnurb, offsetof(BezTriple, radius), offsetof(BPoint, radius));
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -2827,7 +2831,7 @@ static int curve_smooth_tilt_exec(bContext *C, wmOperator *UNUSED(op))
        curve_smooth_value(editnurb, offsetof(BezTriple, alfa), offsetof(BPoint, alfa));
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -2899,7 +2903,7 @@ static int hide_exec(bContext *C, wmOperator *op)
                }
        }
 
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
        WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
        BKE_curve_nurb_vert_active_validate(obedit->data);
 
@@ -2962,7 +2966,7 @@ static int reveal_exec(bContext *C, wmOperator *op)
                }
        }
 
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
        WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
 
        return OPERATOR_FINISHED;
@@ -3383,7 +3387,7 @@ static int subdivide_exec(bContext *C, wmOperator *op)
                WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -3578,7 +3582,7 @@ static int set_spline_type_exec(bContext *C, wmOperator *op)
                if (ED_curve_updateAnimPaths(obedit->data))
                        WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
 
-               DAG_id_tag_update(obedit->data, 0);
+               DEG_id_tag_update(obedit->data, 0);
                WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
 
                if (changed_size) {
@@ -3632,7 +3636,7 @@ static int set_handle_type_exec(bContext *C, wmOperator *op)
        BKE_nurbList_handles_set(editnurb, RNA_enum_get(op->ptr, "type"));
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -3677,7 +3681,7 @@ static int curve_normals_make_consistent_exec(bContext *C, wmOperator *op)
        BKE_nurbList_handles_recalculate(editnurb, calc_length, SELECT);
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -4065,7 +4069,7 @@ static int merge_nurb(bContext *C, wmOperator *op)
        BKE_curve_nurb_active_set(obedit->data, NULL);
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
        
        return OPERATOR_FINISHED;
 }
@@ -4272,7 +4276,7 @@ static int make_segment_exec(bContext *C, wmOperator *op)
                WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -4516,7 +4520,7 @@ static int spin_exec(bContext *C, wmOperator *op)
                WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -4971,7 +4975,7 @@ static int add_vertex_exec(bContext *C, wmOperator *op)
                }
 
                WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-               DAG_id_tag_update(obedit->data, 0);
+               DEG_id_tag_update(obedit->data, 0);
 
                return OPERATOR_FINISHED;
        }
@@ -5016,7 +5020,7 @@ static int add_vertex_invoke(bContext *C, wmOperator *op, const wmEvent *event)
                        const float mval[2] = {UNPACK2(event->mval)};
 
                        struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d(
-                               CTX_data_main(C), vc.scene, 0,
+                               CTX_data_main(C), vc.scene, vc.view_layer, vc.engine_type, 0,
                                vc.ar, vc.v3d);
 
                        ED_transform_snap_object_project_view3d_mixed(
@@ -5126,7 +5130,7 @@ static int curve_extrude_exec(bContext *C, wmOperator *UNUSED(op))
                }
 
                WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-               DAG_id_tag_update(obedit->data, 0);
+               DEG_id_tag_update(obedit->data, 0);
        }
 
        return OPERATOR_FINISHED;
@@ -5225,7 +5229,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op)
        }
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -5743,7 +5747,7 @@ static int curve_delete_exec(bContext *C, wmOperator *op)
                if (ED_curve_updateAnimPaths(obedit->data)) WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
 
                WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-               DAG_id_tag_update(obedit->data, 0);
+               DEG_id_tag_update(obedit->data, 0);
 
                return retval;
        }
@@ -5887,7 +5891,7 @@ static int curve_dissolve_exec(bContext *C, wmOperator *UNUSED(op))
                if (ED_curve_updateAnimPaths(obedit->data)) WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
 
                WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-               DAG_id_tag_update(obedit->data, 0);
+               DEG_id_tag_update(obedit->data, 0);
        }
 
        return OPERATOR_FINISHED;
@@ -5963,7 +5967,7 @@ static int curve_decimate_exec(bContext *C, wmOperator *op)
                }
 
                WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-               DAG_id_tag_update(obedit->data, 0);
+               DEG_id_tag_update(obedit->data, 0);
        }
 
        return OPERATOR_FINISHED;
@@ -6008,7 +6012,7 @@ static int shade_smooth_exec(bContext *C, wmOperator *op)
        }
        
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -6122,7 +6126,7 @@ int join_curve_exec(bContext *C, wmOperator *op)
                                        }
                                }
                        
-                               ED_base_object_free_and_unlink(bmain, scene, base);
+                               ED_object_base_free_and_unlink(bmain, scene, base->object);
                        }
                }
        }
@@ -6136,9 +6140,9 @@ int join_curve_exec(bContext *C, wmOperator *op)
                BKE_curve_curve_dimension_update(cu);
        }
 
-       DAG_relations_tag_update(bmain);   // because we removed object(s), call before editmode!
+       DEG_relations_tag_update(bmain);   // because we removed object(s), call before editmode!
 
-       DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA);
+       DEG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA);
 
        WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene);
 
@@ -6178,7 +6182,7 @@ static int clear_tilt_exec(bContext *C, wmOperator *UNUSED(op))
        }
 
        WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
-       DAG_id_tag_update(obedit->data, 0);
+       DEG_id_tag_update(obedit->data, 0);
 
        return OPERATOR_FINISHED;
 }
@@ -6356,12 +6360,15 @@ static int match_texture_space_exec(bContext *C, wmOperator *UNUSED(op))
 {
        Scene *scene = CTX_data_scene(C);
        Object *object = CTX_data_active_object(C);
+       EvaluationContext eval_ctx;
        Curve *curve = (Curve *) object->data;
        float min[3], max[3], size[3], loc[3];
        int a;
 
+       CTX_data_eval_ctx(C, &eval_ctx);
+
        if (object->curve_cache == NULL) {
-               BKE_displist_make_curveTypes(scene, object, false);
+               BKE_displist_make_curveTypes(&eval_ctx, scene, object, false);
        }
 
        INIT_MINMAX(min, max);