Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2011-02-09 03:51:30 +0300
committerJoshua Leung <aligorith@gmail.com>2011-02-09 03:51:30 +0300
commitaff23c92cc48b2e4b36cc0e5c56c2aabc72d6335 (patch)
treed36ecd52b1e8c3a41caf524e41a16c02043e90a4 /source/blender/blenkernel/intern/ipo.c
parent711ba795f7abbae9d8315cda5a7221d6f18e13bc (diff)
Bugfix [#25990] backward compatibility with ShapeKey Actions :: 2.49
-> 2.50 Actionified ShapeKey IPO-blocks (i.e. "Shape Key Actions") would have an action channel with the hardcoded name, "Shape", and this action would be assigned to Object level (although ShapeKey blocks had their own IPO-block slot, only Objects could have actions, so actionifying ShapeKey IPO-blocks would wrap a ShapeKey block's IPO's to an Object- level action). Hence, the path conversions code would wrongly interpret this action channel as referring to a Pose Channel instead, thus creating some invalid paths with a 'pose.bones["Shape"]' prefix wrongly getting tacked on. To ensure that the converted animation can work out of the box, a 'data.shape_keys' prefix is now used instead so that these actions can still be Object-rooted while still being able to correctly control the Shape Keys. This is because there's no easy way to identify and then shift such action from Object-level to ShapeKey- level within the conversion code. The consequence though is that such converted ShapeKey actions CAN ONLY BE USED THROUGH OBJECT LEVEL (i.e. via Action NOT ShapeKey editor). Secondly, the Action/ShapeKey editor version patching code has been modified so that if a ShapeKey editor view was active when loading an old 2.4x file, the action gets cleared from the view. This is because of this didn't make semantic sense: the ShapeKey editor is for ShapeKey-rooted actions, while the Action Editor is for Object-rooted actions. The converted files though let Object-level actions be shown in either one.
Diffstat (limited to 'source/blender/blenkernel/intern/ipo.c')
-rw-r--r--source/blender/blenkernel/intern/ipo.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c
index db995fd4f1d..d8ebe40db16 100644
--- a/source/blender/blenkernel/intern/ipo.c
+++ b/source/blender/blenkernel/intern/ipo.c
@@ -914,8 +914,17 @@ static char *get_rna_access (int blocktype, int adrcode, char actname[], char co
sprintf(buf, "pose.bones[\"%s\"].constraints[\"%s\"]", actname, constname);
}
else if (actname && actname[0]) {
- /* Pose-Channel */
- sprintf(buf, "pose.bones[\"%s\"]", actname);
+ if ((blocktype == ID_OB) && strcmp(actname, "Object")==0) {
+ /* Actionified "Object" IPO's... no extra path stuff needed */
+ }
+ else if ((blocktype == ID_KE) && strcmp(actname, "Shape")==0) {
+ /* Actionified "Shape" IPO's - these are forced onto object level via the action container there... */
+ strcpy(buf, "data.shape_keys");
+ }
+ else {
+ /* Pose-Channel */
+ sprintf(buf, "pose.bones[\"%s\"]", actname);
+ }
}
else if (constname && constname[0]) {
/* Constraint in Object */