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>2006-12-27 08:00:43 +0300
committerJoshua Leung <aligorith@gmail.com>2006-12-27 08:00:43 +0300
commited2f161c72722b90a1c4e15f998ca678b79e94b0 (patch)
tree4007a5724d95b1b012e288db92e9f520715f721e
parent76b6a6611c930655d88962b9f3134018e9d8117c (diff)
== Copy Rotation Constraint - Bugfix #5519 ==
Now, when only one axis toggle is on and click on it, all of the other toggles will not be turned on. For this to work, I've moved the version patches in the drawing/evaluation code for this constraint to the file-reading code.
-rw-r--r--source/blender/blenkernel/intern/constraint.c3
-rw-r--r--source/blender/blenloader/intern/readfile.c68
-rw-r--r--source/blender/src/buttons_object.c9
3 files changed, 49 insertions, 31 deletions
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index 053aede9fe4..e8441d727d8 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -1306,9 +1306,6 @@ void evaluate_constraint (bConstraint *constraint, Object *ob, short ownertype,
data = constraint->data;
- /* old files stuff only... version patch is too much code! */
- if(data->flag==0) data->flag = ROTLIKE_X|ROTLIKE_Y|ROTLIKE_Z;
-
VECCOPY(loc, ob->obmat[3]);
Mat4ToSize(ob->obmat, size);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 8b15623e8cd..30b319794df 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6166,13 +6166,25 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
if (list){
bConstraint *curcon;
for (curcon = list->first; curcon; curcon=curcon->next){
- if (curcon->type == CONSTRAINT_TYPE_MINMAX){
- bMinMaxConstraint *data = curcon->data;
- if (data->sticky==1) {
- data->flag|=MINMAX_STICKY;
- } else {
- data->flag&=~MINMAX_STICKY;
+ switch (curcon->type) {
+ case CONSTRAINT_TYPE_MINMAX:
+ {
+ bMinMaxConstraint *data = curcon->data;
+ if (data->sticky==1)
+ data->flag |= MINMAX_STICKY;
+ else
+ data->flag &= ~MINMAX_STICKY;
}
+ break;
+ case CONSTRAINT_TYPE_ROTLIKE:
+ {
+ bRotateLikeConstraint *data = curcon->data;
+
+ /* version patch from buttons_object.c */
+ if(data->flag==0)
+ data->flag = ROTLIKE_X|ROTLIKE_Y|ROTLIKE_Z;
+ }
+ break;
}
}
}
@@ -6181,24 +6193,36 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
if (ob->pose){
bConstraint *curcon;
bPoseChannel *pchan;
- for (pchan = ob->pose->chanbase.first;
- pchan; pchan=pchan->next){
- for (curcon = pchan->constraints.first;
- curcon; curcon=curcon->next){
- if (curcon->type == CONSTRAINT_TYPE_MINMAX){
- bMinMaxConstraint *data = curcon->data;
- if (data->sticky==1) {
- data->flag|=MINMAX_STICKY;
- } else {
- data->flag&=~MINMAX_STICKY;
+ for (pchan = ob->pose->chanbase.first; pchan; pchan=pchan->next){
+ for (curcon = pchan->constraints.first; curcon; curcon=curcon->next){
+ switch (curcon->type) {
+ case CONSTRAINT_TYPE_MINMAX:
+ {
+ bMinMaxConstraint *data = curcon->data;
+ if (data->sticky==1)
+ data->flag |= MINMAX_STICKY;
+ else
+ data->flag &= ~MINMAX_STICKY;
}
- }
- else if (curcon->type == CONSTRAINT_TYPE_KINEMATIC){
- bKinematicConstraint *data = curcon->data;
- if (!(data->flag & CONSTRAINT_IK_POS)) {
- data->flag |= CONSTRAINT_IK_POS;
- data->flag |= CONSTRAINT_IK_STRETCH;
+ break;
+ case CONSTRAINT_TYPE_KINEMATIC:
+ {
+ bKinematicConstraint *data = curcon->data;
+ if (!(data->flag & CONSTRAINT_IK_POS)) {
+ data->flag |= CONSTRAINT_IK_POS;
+ data->flag |= CONSTRAINT_IK_STRETCH;
+ }
+ }
+ break;
+ case CONSTRAINT_TYPE_ROTLIKE:
+ {
+ bRotateLikeConstraint *data = curcon->data;
+
+ /* version patch from buttons_object.c */
+ if(data->flag==0)
+ data->flag = ROTLIKE_X|ROTLIKE_Y|ROTLIKE_Z;
}
+ break;
}
}
}
diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c
index ea6df7997f5..4e29bb6510d 100644
--- a/source/blender/src/buttons_object.c
+++ b/source/blender/src/buttons_object.c
@@ -699,9 +699,6 @@ static void draw_constraint (uiBlock *block, ListBase *list, bConstraint *con, s
{
bRotateLikeConstraint *data = con->data;
- /* also old files stuff... version patch is too much code! */
- if(data->flag==0) data->flag = ROTLIKE_X|ROTLIKE_Y|ROTLIKE_Z;
-
height = 66;
uiDefBut(block, ROUNDBOX, B_DIFF, "", *xco-10, *yco-height, width+40,height-1, NULL, 5.0, 0.0, 12, rb_col, "");
@@ -723,9 +720,9 @@ static void draw_constraint (uiBlock *block, ListBase *list, bConstraint *con, s
uiBlockBeginAlign(block);
if (is_armature_target)
uiDefButBitS(block, TOG, CONSTRAINT_LOCAL, B_CONSTRAINT_TEST, "Local", *xco+((width/2)-98), *yco-64, 50, 18, &con->flag, 0, 24, 0, 0, "Work on a Pose's local transform");
- uiDefButBitI(block, TOG, ROTLIKE_X, B_CONSTRAINT_TEST, "X", *xco+((width/2)-48), *yco-64, 32, 18, &data->flag, 0, 24, 0, 0, "Copy X component");
- uiDefButBitI(block, TOG, ROTLIKE_Y, B_CONSTRAINT_TEST, "Y", *xco+((width/2)-16), *yco-64, 32, 18, &data->flag, 0, 24, 0, 0, "Copy Y component");
- uiDefButBitI(block, TOG, ROTLIKE_Z, B_CONSTRAINT_TEST, "Z", *xco+((width/2)+16), *yco-64, 32, 18, &data->flag, 0, 24, 0, 0, "Copy Z component");
+ but=uiDefButBitI(block, TOG, ROTLIKE_X, B_CONSTRAINT_TEST, "X", *xco+((width/2)-48), *yco-64, 32, 18, &data->flag, 0, 24, 0, 0, "Copy X component");
+ but=uiDefButBitI(block, TOG, ROTLIKE_Y, B_CONSTRAINT_TEST, "Y", *xco+((width/2)-16), *yco-64, 32, 18, &data->flag, 0, 24, 0, 0, "Copy Y component");
+ but=uiDefButBitI(block, TOG, ROTLIKE_Z, B_CONSTRAINT_TEST, "Z", *xco+((width/2)+16), *yco-64, 32, 18, &data->flag, 0, 24, 0, 0, "Copy Z component");
uiBlockEndAlign(block);
}
break;