diff options
author | Ton Roosendaal <ton@blender.org> | 2005-10-10 21:42:48 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2005-10-10 21:42:48 +0400 |
commit | 87365d8d407d5cfddcfa48f1dc3902f7f1a3fa5b (patch) | |
tree | a43ae94a544511409f44b9d08e828a6eedfcf123 /source/blender/src/poseobject.c | |
parent | ad915277a0d7be10889cf8d00ce392b4800ca0d5 (diff) |
Stage two of the giant animation recode project; Ipo/Action/NLA cleanup
-> Note; added 2 new c files (split editipo.c). MSVC needs upgrade.
Impatient people can check the goodies in CMS:
http://www.blender3d.org/cms/Action_and_NLA_editor.706.0.html
Most work was on trying to unwind the spaghetti for editing ipos. Too much
history and bad design got added here. Most evident changes:
- made generic 'context' for detecting which Ipo is being edited, or to
assign ipos or to retrieve ipo curves.
- made generic insertkey() for all ipo types, including actions
- shuffled a lot of code around to make things more logical. Also made
sure local functions are not exported
It is far from ready... when action/nla was added in Blender, a lot of
duplicate code was generated. That's for another time.
Now the goodies;
- made Actions to allow any Ipo type
- made NLA to define active actions, for Action window too
- corrected timing for active action, so it shows the 'real time', as
defined in NLA editor.
I did update python code, but that would require testing. Testing is
needed for this commit in general, too many changes happened on all
levels of the animation system. :)
Will keep track of all reports this evening, hopefully it doesnt break
the pre-release schedule!
Diffstat (limited to 'source/blender/src/poseobject.c')
-rw-r--r-- | source/blender/src/poseobject.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/source/blender/src/poseobject.c b/source/blender/src/poseobject.c index 8481f569e70..827882c5204 100644 --- a/source/blender/src/poseobject.c +++ b/source/blender/src/poseobject.c @@ -70,6 +70,7 @@ #include "BDR_editobject.h" #include "BSE_edit.h" +#include "BSE_editipo.h" #include "mydevice.h" #include "blendef.h" @@ -493,7 +494,6 @@ void paste_posebuf (int flip) Object *ob= OBACT; bPoseChannel *chan, *pchan; float eul[4]; - int newchan = 0; char name[32]; if (!ob || !ob->pose) @@ -533,22 +533,23 @@ void paste_posebuf (int flip) } if (G.flags & G_RECORDKEYS){ + ID *id= &ob->id; /* Set keys on pose */ if (chan->flag & POSE_ROT){ - set_action_key(ob->action, pchan, AC_QUAT_X, newchan); - set_action_key(ob->action, pchan, AC_QUAT_Y, newchan); - set_action_key(ob->action, pchan, AC_QUAT_Z, newchan); - set_action_key(ob->action, pchan, AC_QUAT_W, newchan); + insertkey(id, ID_AC, chan->name, NULL, AC_QUAT_X); + insertkey(id, ID_AC, chan->name, NULL, AC_QUAT_Y); + insertkey(id, ID_AC, chan->name, NULL, AC_QUAT_Z); + insertkey(id, ID_AC, chan->name, NULL, AC_QUAT_W); } if (chan->flag & POSE_SIZE){ - set_action_key(ob->action, pchan, AC_SIZE_X, newchan); - set_action_key(ob->action, pchan, AC_SIZE_Y, newchan); - set_action_key(ob->action, pchan, AC_SIZE_Z, newchan); + insertkey(id, ID_AC, chan->name, NULL, AC_SIZE_X); + insertkey(id, ID_AC, chan->name, NULL, AC_SIZE_Y); + insertkey(id, ID_AC, chan->name, NULL, AC_SIZE_Z); } if (chan->flag & POSE_LOC){ - set_action_key(ob->action, pchan, AC_LOC_X, newchan); - set_action_key(ob->action, pchan, AC_LOC_Y, newchan); - set_action_key(ob->action, pchan, AC_LOC_Z, newchan); + insertkey(id, ID_AC, pchan->name, NULL, AC_LOC_X); + insertkey(id, ID_AC, pchan->name, NULL, AC_LOC_Y); + insertkey(id, ID_AC, pchan->name, NULL, AC_LOC_Z); } } } |