GPv3: Prevent crashes from the dopesheet functions

Some animation operators are not yet implemented for Grease Pencil 3, and trigger asserts. This patch prevents the asserts to be triggered in case of grease pencil channels, so that  Grease Pencil 3 can be tested until the operators are properly implemented.

Pull Request: https://projects.blender.org/blender/blender/pulls/110486
This commit is contained in:
Amelie
2023-07-26 10:29:40 +02:00
committed by Falk David
parent 9c7ef4a3b4
commit 8fc2b6ad06
2 changed files with 26 additions and 0 deletions

View File

@@ -863,6 +863,10 @@ static void insert_action_keys(bAnimContext *ac, short mode)
insert_gpencil_key(ac, ale, add_frame_mode, &gpd_old);
break;
case ANIMTYPE_GREASE_PENCIL_LAYER:
/* GPv3: To be implemented. */
break;
case ANIMTYPE_FCURVE:
insert_fcurve_key(ac, ale, anim_eval_context, flag, &nla_cache);
break;
@@ -956,6 +960,9 @@ static bool duplicate_action_keys(bAnimContext *ac)
ED_gpencil_layer_frames_duplicate((bGPDlayer *)ale->data);
changed |= ED_gpencil_layer_frame_select_check((bGPDlayer *)ale->data);
}
else if (ale->type == ANIMTYPE_GREASE_PENCIL_LAYER) {
/* GPv3: To be implemented. */
}
else if (ale->type == ANIMTYPE_MASKLAYER) {
ED_masklayer_frames_duplicate((MaskLayer *)ale->data);
}
@@ -1034,6 +1041,9 @@ static bool delete_action_keys(bAnimContext *ac)
if (ale->type == ANIMTYPE_GPLAYER) {
changed = ED_gpencil_layer_frames_delete((bGPDlayer *)ale->data);
}
else if (ale->type == ANIMTYPE_GREASE_PENCIL_LAYER) {
/* GPv3: To be implemented. */
}
else if (ale->type == ANIMTYPE_MASKLAYER) {
changed = ED_masklayer_frames_delete((MaskLayer *)ale->data);
}
@@ -1618,6 +1628,10 @@ static void setkeytype_action_keys(bAnimContext *ac, short mode)
ale->update |= ANIM_UPDATE_DEPS;
break;
case ANIMTYPE_GREASE_PENCIL_LAYER:
/* GPv3: To be implemented. */
break;
case ANIMTYPE_FCURVE:
ANIM_fcurve_keyframes_loop(
nullptr, static_cast<FCurve *>(ale->key_data), nullptr, set_cb, nullptr);
@@ -1853,6 +1867,9 @@ static void snap_action_keys(bAnimContext *ac, short mode)
if (ale->type == ANIMTYPE_GPLAYER) {
ED_gpencil_layer_snap_frames(static_cast<bGPDlayer *>(ale->data), ac->scene, mode);
}
else if (ale->type == ANIMTYPE_GREASE_PENCIL_LAYER) {
/* GPv3: To be implemented. */
}
else if (ale->type == ANIMTYPE_MASKLAYER) {
ED_masklayer_snap_frames(static_cast<MaskLayer *>(ale->data), ac->scene, mode);
}
@@ -1987,6 +2004,9 @@ static void mirror_action_keys(bAnimContext *ac, short mode)
if (ale->type == ANIMTYPE_GPLAYER) {
ED_gpencil_layer_mirror_frames(static_cast<bGPDlayer *>(ale->data), ac->scene, mode);
}
else if (ale->type == ANIMTYPE_GREASE_PENCIL_LAYER) {
/* GPv3: To be implemented. */
}
else if (ale->type == ANIMTYPE_MASKLAYER) {
/* TODO */
}

View File

@@ -1003,6 +1003,9 @@ static void markers_selectkeys_between(bAnimContext *ac)
/* select keys in-between */
for (ale = static_cast<bAnimListElem *>(anim_data.first); ale; ale = ale->next) {
switch (ale->type) {
case ANIMTYPE_GREASE_PENCIL_LAYER:
/* GPv3: To be implemented. */
break;
case ANIMTYPE_GPLAYER:
ED_gpencil_layer_frames_select_box(
static_cast<bGPDlayer *>(ale->data), min, max, SELECT_ADD);
@@ -1437,6 +1440,9 @@ static void actkeys_select_leftright(bAnimContext *ac, short leftright, short se
/* select keys */
for (ale = static_cast<bAnimListElem *>(anim_data.first); ale; ale = ale->next) {
switch (ale->type) {
case ANIMTYPE_GREASE_PENCIL_LAYER:
/* GPv3: To be implemented. */
break;
case ANIMTYPE_GPLAYER:
ED_gpencil_layer_frames_select_box(
static_cast<bGPDlayer *>(ale->data), ked.f1, ked.f2, select_mode);