Fix T76078: GPencil: frames interpolation erase strokes
In some situations the stroke could be tagged and this tag was used to delete the interpolated strokes. Now, the frames used as interpolated range are untagged before creating the interpolated strokes.
This commit is contained in:
parent
4ab85a3380
commit
53106934f9
Notes:
blender-bot
2023-02-14 01:57:12 +01:00
Referenced by issue #76078, GPencil: frames interpolation erase strokes
|
@ -134,6 +134,19 @@ static void gp_interpolate_free_temp_strokes(bGPDframe *gpf)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Helper: Untag all strokes. */
|
||||
static void gp_interpolate_untag_strokes(bGPDframe *gpf)
|
||||
{
|
||||
BLI_assert(gpf != NULL);
|
||||
|
||||
LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
|
||||
if (gps->flag & GP_STROKE_TAG) {
|
||||
gps->flag &= ~GP_STROKE_TAG;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Helper: Update all strokes interpolated */
|
||||
static void gp_interpolate_update_strokes(bContext *C, tGPDinterpolate *tgpi)
|
||||
{
|
||||
|
@ -265,6 +278,10 @@ static void gp_interpolate_set_points(bContext *C, tGPDinterpolate *tgpi)
|
|||
tgpil->prevFrame = gpl->actframe;
|
||||
tgpil->nextFrame = gpl->actframe->next;
|
||||
|
||||
/* Untag interpolated strokes to be sure nothing is pending. */
|
||||
gp_interpolate_untag_strokes(tgpil->prevFrame);
|
||||
gp_interpolate_untag_strokes(tgpil->nextFrame);
|
||||
|
||||
BLI_addtail(&tgpi->ilayers, tgpil);
|
||||
|
||||
/* create a new temporary frame */
|
||||
|
|
Loading…
Reference in New Issue