diff options
author | Joshua Leung <aligorith@gmail.com> | 2009-01-18 13:41:45 +0300 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2009-01-18 13:41:45 +0300 |
commit | 53ae509cc5ad75dca490dea8c632d542285e0058 (patch) | |
tree | 3ccf1ca8583c46b67391ceca2b07698c19f28c8c /source/blender/blenkernel/intern/action.c | |
parent | 711d04a4995f16abbbaca0deecadd48fefbbe165 (diff) |
2.5 - AnimSys Data management stuff...
* Removed nAction struct. We'll be using good ol' bAction structs again, but putting new data in a different list. Apart from that, the data is similar enough to do so.
* Rearranged code in DNA_action_types.h while renaming the structs to avoid confusion over what is currently in use...
* Added freeing and AnimData execution loops for many other ID-types too. (NOTE: I've added AnimData in NodeTree struct too, but it's not clear to me where the relevant data-management calls should go in Nodes code).
* File writing code should now only write the new data to files
Diffstat (limited to 'source/blender/blenkernel/intern/action.c')
-rw-r--r-- | source/blender/blenkernel/intern/action.c | 72 |
1 files changed, 24 insertions, 48 deletions
diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index a7427b1b306..eb68b1f3a6a 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -81,9 +81,9 @@ /* ***************** Library data level operations on action ************** */ -nAction *add_empty_action(const char name[]) +bAction *add_empty_action(const char name[]) { - nAction *act; + bAction *act; act= alloc_libblock(&G.main->action, ID_AC, name); act->id.flag |= LIB_FAKEUSER; // XXX this is nasty for new users... maybe we don't want this anymore @@ -93,10 +93,10 @@ nAction *add_empty_action(const char name[]) } // does copy_fcurve... -void make_local_action(nAction *act) +void make_local_action(bAction *act) { // Object *ob; - nAction *actn; + bAction *actn; int local=0, lib=0; if (act->id.lib==0) return; @@ -147,19 +147,14 @@ void make_local_action(nAction *act) } -void free_action (nAction *act) +void free_action (bAction *act) { - FCurve *fcu; - /* sanity check */ if (act == NULL) return; /* Free F-Curves */ - while ((fcu= act->curves.first)) { - BLI_remlink(&act->curves, fcu); - free_fcurve(fcu); - } + free_fcurves(&act->curves); /* Free groups */ if (act->groups.first) @@ -170,39 +165,20 @@ void free_action (nAction *act) BLI_freelistN(&act->markers); } -nAction *copy_action (nAction *src) +bAction *copy_action (bAction *src) { - nAction *dst = NULL; - //bActionChannel *dchan, *schan; - // bActionGroup *dgrp, *sgrp; - - if (!src) return NULL; + bAction *dst = NULL; + //bActionGroup *dgrp, *sgrp; // XXX not used yet + if (src == NULL) + return NULL; dst= copy_libblock(src); - BLI_duplicatelist(&(dst->chanbase), &(src->chanbase)); - BLI_duplicatelist(&(dst->groups), &(src->groups)); - BLI_duplicatelist(&(dst->markers), &(src->markers)); + BLI_duplicatelist(&dst->groups, &src->groups); // XXX not used yet + BLI_duplicatelist(&dst->markers, &src->markers); -#if 0 // XXX old animation system - for (dchan=dst->chanbase.first, schan=src->chanbase.first; dchan; dchan=dchan->next, schan=schan->next) { - for (dgrp=dst->groups.first, sgrp=src->groups.first; dgrp && sgrp; dgrp=dgrp->next, sgrp=sgrp->next) { - if (dchan->grp == sgrp) { - dchan->grp= dgrp; - - if (dgrp->channels.first == schan) - dgrp->channels.first= dchan; - if (dgrp->channels.last == schan) - dgrp->channels.last= dchan; - - break; - } - } - - dchan->ipo = copy_ipo(dchan->ipo); - copy_constraint_channels(&dchan->constraintChannels, &schan->constraintChannels); - } -#endif // XXX old animation system + /* copy f-curves */ + copy_fcurves(&dst->curves, &src->curves); dst->id.flag |= LIB_FAKEUSER; // XXX this is nasty for new users... maybe we don't want this anymore dst->id.us++; @@ -219,12 +195,13 @@ bPoseChannel *get_pose_channel(const bPose *pose, const char *name) { bPoseChannel *chan; - if(pose==NULL) return NULL; + if (pose==NULL) return NULL; for (chan=pose->chanbase.first; chan; chan=chan->next) { - if(chan->name[0] == name[0]) + if (chan->name[0] == name[0]) { if (!strcmp (chan->name, name)) return chan; + } } return NULL; @@ -236,11 +213,10 @@ bPoseChannel *verify_pose_channel(bPose* pose, const char* name) { bPoseChannel *chan; - if (!pose) { + if (pose == NULL) return NULL; - } - /* See if this channel exists */ + /* See if this channel exists */ for (chan=pose->chanbase.first; chan; chan=chan->next) { if (!strcmp (name, chan->name)) return chan; @@ -249,10 +225,10 @@ bPoseChannel *verify_pose_channel(bPose* pose, const char* name) /* If not, create it and add it */ chan = MEM_callocN(sizeof(bPoseChannel), "verifyPoseChannel"); - strncpy (chan->name, name, 31); + strncpy(chan->name, name, 31); /* init vars to prevent math errors */ - chan->quat[0] = 1.0F; - chan->size[0] = chan->size[1] = chan->size[2] = 1.0F; + chan->quat[0] = 1.0f; + chan->size[0] = chan->size[1] = chan->size[2] = 1.0f; chan->limitmin[0]= chan->limitmin[1]= chan->limitmin[2]= -180.0f; chan->limitmax[0]= chan->limitmax[1]= chan->limitmax[2]= 180.0f; @@ -285,7 +261,7 @@ bPoseChannel *get_active_posechannel (Object *ob) /* dst should be freed already, makes entire duplicate */ -void copy_pose(bPose **dst, bPose *src, int copycon) +void copy_pose (bPose **dst, bPose *src, int copycon) { bPose *outPose; bPoseChannel *pchan; |