Fix T78884: GPencil weight paint crash when painting over modifier generated points

The weight must be added only to the real points, not to the autogenerated points by modifiers. This affects, not only to subdivide, but to any modifier that generate points.
This commit is contained in:
Antonio Vazquez 2020-07-31 18:20:27 +02:00
parent cab9673bed
commit 71683be4bb
Notes: blender-bot 2023-02-14 09:17:57 +01:00
Referenced by issue #79610, Subdivide modifier before Armature causes crash when weight painting grease pencil in Blender 2.83.4 LTS
Referenced by issue #78884, Grease Pencil: Crash weight painting on stroke with generative modifier [subdivide] - also generative modifiers create actual editable points?
Referenced by issue #77348, Blender LTS: Maintenance Task 2.83
1 changed files with 6 additions and 6 deletions

View File

@ -453,9 +453,9 @@ static void gpencil_weightpaint_select_stroke(tGP_BrushWeightpaintData *gso,
/* To each point individually... */
pt = &gps->points[i];
pt_active = (pt->runtime.pt_orig) ? pt->runtime.pt_orig : pt;
index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i;
pt_active = pt->runtime.pt_orig;
if (pt_active != NULL) {
index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i;
gpencil_save_selected_point(gso, gps_active, index, pc1);
}
@ -469,9 +469,9 @@ static void gpencil_weightpaint_select_stroke(tGP_BrushWeightpaintData *gso,
*/
if (i + 1 == gps->totpoints - 1) {
pt = &gps->points[i + 1];
pt_active = (pt->runtime.pt_orig) ? pt->runtime.pt_orig : pt;
index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i + 1;
pt_active = pt->runtime.pt_orig;
if (pt_active != NULL) {
index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i + 1;
gpencil_save_selected_point(gso, gps_active, index, pc2);
include_last = false;
}
@ -487,9 +487,9 @@ static void gpencil_weightpaint_select_stroke(tGP_BrushWeightpaintData *gso,
* (but wasn't added then, to avoid double-ups).
*/
pt = &gps->points[i];
pt_active = (pt->runtime.pt_orig) ? pt->runtime.pt_orig : pt;
index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i;
pt_active = pt->runtime.pt_orig;
if (pt_active != NULL) {
index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i;
gpencil_save_selected_point(gso, gps_active, index, pc1);
include_last = false;