Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/gpencil_modifier.c
| Show First 20 Lines • Show All 695 Lines • ▼ Show 20 Lines | |||||
| * \param ob: Grease pencil object | * \param ob: Grease pencil object | ||||
| */ | */ | ||||
| void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *ob) | void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *ob) | ||||
| { | { | ||||
| bGPdata *gpd_eval = (bGPdata *)ob->data; | bGPdata *gpd_eval = (bGPdata *)ob->data; | ||||
| Object *ob_orig = (Object *)DEG_get_original_id(&ob->id); | Object *ob_orig = (Object *)DEG_get_original_id(&ob->id); | ||||
| bGPdata *gpd_orig = (bGPdata *)ob_orig->data; | bGPdata *gpd_orig = (bGPdata *)ob_orig->data; | ||||
| /* Need check if some layer is parented. */ | /* Need check if some layer is parented or transformed. */ | ||||
| bool do_parent = false; | bool do_parent = false; | ||||
| bool do_transform = false; | |||||
| LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd_orig->layers) { | LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd_orig->layers) { | ||||
| if (gpl->parent != NULL) { | if (gpl->parent != NULL) { | ||||
| do_parent = true; | do_parent = true; | ||||
| break; | break; | ||||
| } | } | ||||
| if ((!is_zero_v3(gpl->location)) || (!is_zero_v3(gpl->rotation)) || (!is_one_v3(gpl->scale))) { | |||||
| do_transform = true; | |||||
| break; | |||||
| } | |||||
| } | } | ||||
| const bool is_multiedit = (bool)GPENCIL_MULTIEDIT_SESSIONS_ON(gpd_eval); | const bool is_multiedit = (bool)GPENCIL_MULTIEDIT_SESSIONS_ON(gpd_eval); | ||||
| const bool is_curve_edit = (bool)GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd_eval); | const bool is_curve_edit = (bool)GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd_eval); | ||||
| const bool do_modifiers = (bool)((!is_multiedit) && (!is_curve_edit) && | const bool do_modifiers = (bool)((!is_multiedit) && (!is_curve_edit) && | ||||
| (ob->greasepencil_modifiers.first != NULL) && | (ob->greasepencil_modifiers.first != NULL) && | ||||
| (!GPENCIL_SIMPLIFY_MODIF(scene))); | (!GPENCIL_SIMPLIFY_MODIF(scene))); | ||||
| if ((!do_modifiers) && (!do_parent)) { | if ((!do_modifiers) && (!do_parent) && (!do_transform)) { | ||||
| return; | return; | ||||
| } | } | ||||
| DEG_debug_print_eval(depsgraph, __func__, gpd_eval->id.name, gpd_eval); | DEG_debug_print_eval(depsgraph, __func__, gpd_eval->id.name, gpd_eval); | ||||
| /* If only one user, don't need a new copy, just update data of the frame. */ | /* If only one user, don't need a new copy, just update data of the frame. */ | ||||
| if (gpd_orig->id.us == 1) { | if (gpd_orig->id.us == 1) { | ||||
| ob->runtime.gpd_eval = NULL; | ob->runtime.gpd_eval = NULL; | ||||
| gpencil_copy_activeframe_to_eval(depsgraph, scene, ob, ob_orig->data, gpd_eval); | gpencil_copy_activeframe_to_eval(depsgraph, scene, ob, ob_orig->data, gpd_eval); | ||||
| ▲ Show 20 Lines • Show All 230 Lines • Show Last 20 Lines | |||||