diff options
author | Joshua Leung <aligorith@gmail.com> | 2011-01-11 01:10:28 +0300 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2011-01-11 01:10:28 +0300 |
commit | cf25b10eb5bb61662ce0db6b3ef54a3e3e73a328 (patch) | |
tree | 0d7ffcdd0735d1788bfb3e679b6f7489605c1aab /source/blender/editors/transform/transform_generics.c | |
parent | d841a206314922eec0a0fed0b87e3078b68487c9 (diff) |
Todo #22395: Restoring Grease Pencil Editing Mode in DopeSheet Editor
This commit restores some basic functionality for retiming Grease
Pencil sketches. Some of the functionality that existed before still
hasn't been restored (namely snap/mirror tools as well as copy+paste),
though it should be possible to use this for basic retiming and
sketch-frame management again.
- There's still a lot of work required to get this up to the standard
of the rest of the animation editor code, as some of this code was
originally just hacked in based on the old-style code.
- Work is already required to not have to directly access the main db
global to get the list of Grease Pencil datablocks to show, but that
can come along with pending cleanups of the filtering code.
Diffstat (limited to 'source/blender/editors/transform/transform_generics.c')
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index dbf984b6659..839e813f1ae 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -349,22 +349,29 @@ void recalcData(TransInfo *t) ANIM_animdata_context_getdata(&ac); - /* get animdata blocks visible in editor, assuming that these will be the ones where things changed */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_ANIMDATA); - ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); - - /* just tag these animdata-blocks to recalc, assuming that some data there changed - * BUT only do this if realtime updates are enabled - */ - if ((saction->flag & SACTION_NOREALTIMEUPDATES) == 0) { - for (ale= anim_data.first; ale; ale= ale->next) { - /* set refresh tags for objects using this animation */ - ANIM_list_elem_update(t->scene, ale); + /* perform flush */ + if (ac.datatype == ANIMCONT_GPENCIL) { + /* flush transform values back to actual coordinates */ + flushTransGPactionData(t); + } + else { + /* get animdata blocks visible in editor, assuming that these will be the ones where things changed */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_ANIMDATA); + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + /* just tag these animdata-blocks to recalc, assuming that some data there changed + * BUT only do this if realtime updates are enabled + */ + if ((saction->flag & SACTION_NOREALTIMEUPDATES) == 0) { + for (ale= anim_data.first; ale; ale= ale->next) { + /* set refresh tags for objects using this animation */ + ANIM_list_elem_update(t->scene, ale); + } } + + /* now free temp channels */ + BLI_freelistN(&anim_data); } - - /* now free temp channels */ - BLI_freelistN(&anim_data); } else if (t->spacetype == SPACE_IPO) { Scene *scene; |