[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34241] trunk/blender/source/blender/ editors/space_action/action_edit.c: "New Action" Operator:

PabloVazquez.org venomgfx at gmail.com
Wed Jan 12 21:48:14 CET 2011


Hi Aligorith,
Love this behavior, also goes along with how "new material" works now,
making a copy of the active one.

Cheers!
--
Pablo Vazquez
CG Artist
Blender Foundation Certificated Trainer
E-mail: contact at pablovazquez.org
Website: http://www.pablovazquez.org



On Tue, Jan 11, 2011 at 01:40, Joshua Leung <aligorith at gmail.com> wrote:
> Revision: 34241
>          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34241
> Author:   aligorith
> Date:     2011-01-11 00:39:59 +0000 (Tue, 11 Jan 2011)
> Log Message:
> -----------
> "New Action" Operator:
>
> When creating new actions using the "new" button the Action Editor
> header databrowse, or the NLA editor's "Animation Data" databrowse,
> the existing action will get copied (if it exists) instead of an empty
> action getting added everytime.
>
> Apparently this behaviour is very good for being able to "version"
> actions within a single .blend file (Bassam?)
>
> Modified Paths:
> --------------
>    trunk/blender/source/blender/editors/space_action/action_edit.c
>
> Modified: trunk/blender/source/blender/editors/space_action/action_edit.c
> ===================================================================
> --- trunk/blender/source/blender/editors/space_action/action_edit.c     2011-01-11 00:21:43 UTC (rev 34240)
> +++ trunk/blender/source/blender/editors/space_action/action_edit.c     2011-01-11 00:39:59 UTC (rev 34241)
> @@ -76,26 +76,42 @@
>
>  static int act_new_exec(bContext *C, wmOperator *UNUSED(op))
>  {
> -       bAction *action;
>        PointerRNA ptr, idptr;
>        PropertyRNA *prop;
>
> -       // XXX need to restore behaviour to copy old actions...
> -       action= add_empty_action("Action");
> -
>        /* hook into UI */
>        uiIDContextProperty(C, &ptr, &prop);
> -
> -       if(prop) {
> -               /* when creating new ID blocks, use is already 1, but RNA
> -                * pointer se also increases user, so this compensates it */
> +
> +       if (prop) {
> +               bAction *action=NULL, *oldact=NULL;
> +               PointerRNA oldptr;
> +
> +               /* create action - the way to do this depends on whether we've got an
> +                * existing one there already, in which case we make a copy of it
> +                * (which is useful for "versioning" actions within the same file)
> +                */
> +               oldptr = RNA_property_pointer_get(&ptr, prop);
> +               oldact = (bAction *)oldptr.id.data;
> +
> +               if (oldact && GS(oldact->id.name)==ID_AC) {
> +                       /* make a copy of the existing action */
> +                       action= copy_action(oldact);
> +               }
> +               else {
> +                       /* just make a new (empty) action */
> +                       action= add_empty_action("Action");
> +               }
> +
> +               /* when creating new ID blocks, use is already 1 (fake user),
> +                * but RNA pointer use also increases user, so this compensates it
> +                */
>                action->id.us--;
> -
> +
>                RNA_id_pointer_create(&action->id, &idptr);
>                RNA_property_pointer_set(&ptr, prop, idptr);
>                RNA_property_update(C, &ptr, prop);
>        }
> -
> +
>        /* set notifier that keyframes have changed */
>        WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
>
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>


More information about the Bf-committers mailing list