GPencil: Disable Multiframe edition when play animation
When the multiframe is enabled, playing animation must be disabled or the animation is not visible, {F9527854} Reviewed By: fclem Differential Revision: https://developer.blender.org/D9930
This commit is contained in:
parent
3e4dd7b000
commit
e7c36ce43c
|
@ -2519,7 +2519,7 @@ void BKE_gpencil_visible_stroke_iter(ViewLayer *view_layer,
|
|||
int cfra)
|
||||
{
|
||||
bGPdata *gpd = (bGPdata *)ob->data;
|
||||
const bool is_multiedit = GPENCIL_MULTIEDIT_SESSIONS_ON(gpd);
|
||||
const bool is_multiedit = ((GPENCIL_MULTIEDIT_SESSIONS_ON(gpd)) && (!GPENCIL_PLAY_ON(gpd)));
|
||||
const bool is_onion = do_onion && ((gpd->flag & GP_DATA_STROKE_WEIGHTMODE) == 0);
|
||||
const bool is_drawing = (gpd->runtime.sbuffer_used > 0);
|
||||
|
||||
|
|
|
@ -214,6 +214,7 @@ void GPENCIL_cache_init(void *ved)
|
|||
NULL :
|
||||
false;
|
||||
pd->do_onion = show_onion && !hide_overlay && !playing;
|
||||
pd->playing = playing;
|
||||
/* Save simplify flags (can change while drawing, so it's better to save). */
|
||||
Scene *scene = draw_ctx->scene;
|
||||
pd->simplify_fill = GPENCIL_SIMPLIFY_FILL(scene, playing);
|
||||
|
@ -241,6 +242,7 @@ void GPENCIL_cache_init(void *ved)
|
|||
pd->simplify_fill = false;
|
||||
pd->simplify_fx = false;
|
||||
pd->fade_layer_opacity = -1.0f;
|
||||
pd->playing = false;
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -617,7 +619,7 @@ void GPENCIL_cache_populate(void *ved, Object *ob)
|
|||
/* Special case for rendering onion skin. */
|
||||
bGPdata *gpd = (bGPdata *)ob->data;
|
||||
bool do_onion = (!pd->is_render) ? pd->do_onion : (gpd->onion_flag & GP_ONION_GHOST_ALWAYS);
|
||||
|
||||
gpd->runtime.playing = (short)pd->playing;
|
||||
BKE_gpencil_visible_stroke_iter(is_final_render ? pd->view_layer : NULL,
|
||||
ob,
|
||||
gpencil_layer_cache_populate,
|
||||
|
|
|
@ -342,6 +342,8 @@ typedef struct GPENCIL_PrivateData {
|
|||
|
||||
/* Display onion skinning */
|
||||
bool do_onion;
|
||||
/* Playing animation */
|
||||
bool playing;
|
||||
/* simplify settings */
|
||||
bool simplify_fill;
|
||||
bool simplify_fx;
|
||||
|
|
|
@ -574,7 +574,9 @@ typedef struct bGPdata_Runtime {
|
|||
/** Temp stroke used for drawing. */
|
||||
struct bGPDstroke *sbuffer_gps;
|
||||
|
||||
char _pad[2];
|
||||
/** Animation playing flag. */
|
||||
short playing;
|
||||
|
||||
/** Material index of the stroke. */
|
||||
short matid;
|
||||
|
||||
|
@ -840,6 +842,8 @@ typedef enum eGP_DrawMode {
|
|||
((flag & (GP_VERTEX_MASK_SELECTMODE_POINT | GP_VERTEX_MASK_SELECTMODE_STROKE | \
|
||||
GP_VERTEX_MASK_SELECTMODE_SEGMENT)))
|
||||
|
||||
#define GPENCIL_PLAY_ON(gpd) ((gpd) && ((gpd)->runtime.playing == 1))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue