diff options
author | Ton Roosendaal <ton@blender.org> | 2007-11-28 15:11:06 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2007-11-28 15:11:06 +0300 |
commit | 36f7da70466603643ec28b47e4ec0b082fa5226a (patch) | |
tree | a93b182bc592a579fa53ee494ded494449aee1a1 /source/blender/makesdna | |
parent | bb77ea8df5f016399e50bce5ef8b67d2cac89a28 (diff) |
Tiny feature, but loadsa code, and big impact for the Blender riggers:
-> Constraint Influence Ipo now can be local, linked to constraint itself
You enable this in the IpoWindow header, with the Action icon to the left
of the Ipo Type menu. The button tooltips give the clue as well.
Tech note: the Ipo now can get directly linked to a constraint, and is
being called during regular pose constraint solving.
Actions (and drivers in actions) are being calculated *before* pose
constraint solving. Result of actions then is written in bones, which
then solves the entire pose.
This means you can have a driver on both the constraint, as on the action
channel for the constraint! Not that I'm going to debug that easily :)
Additional fix: Joshua added a copy/paste IpoCurve feature, but he broke
the functionality to be able to paste in an empty ipo channel. That now
works again
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_constraint_types.h | 6 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_space_types.h | 2 |
2 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h index bf512c3faf8..72506b0eb57 100644 --- a/source/blender/makesdna/DNA_constraint_types.h +++ b/source/blender/makesdna/DNA_constraint_types.h @@ -41,6 +41,7 @@ struct Action; struct Text; +struct Ipo; /* channels reside in Object or Action (ListBase) constraintChannels */ typedef struct bConstraintChannel { @@ -66,6 +67,7 @@ typedef struct bConstraint { float enforce; /* Amount of influence exherted by constraint (0.0-1.0) */ float headtail; /* Point along subtarget bone where the actual target is. 0=head (default for all), 1=tail*/ int pad; + struct Ipo *ipo; /* local influence ipo or driver */ } bConstraint; @@ -347,7 +349,9 @@ typedef enum B_CONSTRAINT_FLAG { /* to indicate which Ipo should be shown, maybe for 3d access later too */ CONSTRAINT_ACTIVE = (1<<4), /* to indicate that the owner's space should only be changed into ownspace, but not out of it */ - CONSTRAINT_SPACEONCE = (1<<6) + CONSTRAINT_SPACEONCE = (1<<6), + /* influence ipo is on constraint itself, not in action channel */ + CONSTRAINT_OWN_IPO = (1<<7) } B_CONSTRAINT_FLAG; /* bConstraint->ownspace/tarspace */ diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 10f488c9f61..2250e6e43ab 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -94,7 +94,7 @@ typedef struct SpaceIpo { /* the ipo context we need to store */ struct Ipo *ipo; struct ID *from; - char actname[32], constname[32]; + char actname[32], constname[32], bonename[32]; short totipo, pin; short butofs, channel; |