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>2007-10-02 14:59:02 +0400
committerJoshua Leung <aligorith@gmail.com>2007-10-02 14:59:02 +0400
commit301c767a9f7ba4f6b583fc0e9ed959ba8a5a772b (patch)
treedad55f8f7519f6a33d1730d2b8dc18d735669244 /source/blender/src/editipo.c
parentd5fe701370cb431f97ad40eeaf387bb226619670 (diff)
IPO Transform Bugfix:
When IPO-Keys were being shown, the y-values of the keyframes should not change during transform.
Diffstat (limited to 'source/blender/src/editipo.c')
-rw-r--r--source/blender/src/editipo.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/source/blender/src/editipo.c b/source/blender/src/editipo.c
index 025dfcc7886..b329bfcce76 100644
--- a/source/blender/src/editipo.c
+++ b/source/blender/src/editipo.c
@@ -4887,20 +4887,21 @@ void make_ipo_transdata (TransInfo *t)
if (ISPOIN(ei, flag & IPO_VISIBLE, icu)) {
if ( (ei->flag & IPO_EDIT) || G.sipo->showkey) {
if (ei->icu->bezt) {
+ short onlytime= (ei->disptype==IPO_DISPBITS) ? 1 : (G.sipo->showkey) ? 1 : 0;
bezt= ei->icu->bezt;
for (b=0; b < ei->icu->totvert; b++, bezt++) {
/* only include handles if selected, and interpolaton mode uses beztriples */
if (ei->icu->ipo==IPO_BEZ) {
if (bezt->f1 & 1)
- bezt_to_transdata(td++, td2d++, bezt->vec[0], bezt->vec[1], 1, (ei->disptype==IPO_DISPBITS));
+ bezt_to_transdata(td++, td2d++, bezt->vec[0], bezt->vec[1], 1, onlytime);
if (bezt->f3 & 1)
- bezt_to_transdata(td++, td2d++, bezt->vec[2], bezt->vec[1], 1, (ei->disptype==IPO_DISPBITS));
+ bezt_to_transdata(td++, td2d++, bezt->vec[2], bezt->vec[1], 1, onlytime);
}
/* only include main vert if selected */
if (bezt->f2 & 1) {
- bezt_to_transdata(td++, td2d++, bezt->vec[1], bezt->vec[1], 1, (ei->disptype==IPO_DISPBITS));
+ bezt_to_transdata(td++, td2d++, bezt->vec[1], bezt->vec[1], 1, onlytime);
}
}
}
@@ -4915,17 +4916,19 @@ void make_ipo_transdata (TransInfo *t)
/* only include curves that are visible and selected */
if (ISPOIN3(ei, flag & IPO_VISIBLE, flag & IPO_SELECT, icu)) {
if (ei->icu->bezt) {
+ short onlytime= (ei->disptype==IPO_DISPBITS) ? 1 : (G.sipo->showkey) ? 1 : 0;
bezt= ei->icu->bezt;
b= ei->icu->totvert;
+
for (b=0; b < ei->icu->totvert; b++, bezt++) {
/* only include handles if interpolation mode is bezier not bpoint */
if (ei->icu->ipo==IPO_BEZ) {
- bezt_to_transdata(td++, td2d++, bezt->vec[0], bezt->vec[1], 1, (ei->disptype==IPO_DISPBITS));
- bezt_to_transdata(td++, td2d++, bezt->vec[2], bezt->vec[1], 1, (ei->disptype==IPO_DISPBITS));
+ bezt_to_transdata(td++, td2d++, bezt->vec[0], bezt->vec[1], 1, onlytime);
+ bezt_to_transdata(td++, td2d++, bezt->vec[2], bezt->vec[1], 1, onlytime);
}
/* always include the main handle */
- bezt_to_transdata(td++, td2d++, bezt->vec[1], bezt->vec[1], 1, (ei->disptype==IPO_DISPBITS));
+ bezt_to_transdata(td++, td2d++, bezt->vec[1], bezt->vec[1], 1, onlytime);
}
}
}
@@ -4940,12 +4943,8 @@ typedef struct BeztMap {
BezTriple *bezt;
int oldIndex;
int newIndex;
- short handles;
} BeztMap;
-#define BEZM_FLIPH 1
-#define BEZM_CLEARH1 2
-#define BEZM_CLEARH2 4
/* This function converts an IpoCurve's BezTriple array to a BeztMap array
* NOTE: this allocates memory that will need to get freed later
@@ -4996,15 +4995,6 @@ static void sort_time_beztmaps (BeztMap *bezms, int totvert)
}
}
- /* swap order of handles or snap handles to centre-point? */
- if (bezm->bezt->vec[0][0]>bezm->bezt->vec[1][0] && bezm->bezt->vec[2][0]<bezm->bezt->vec[1][0]) {
- bezm->handles ^= BEZM_FLIPH;
- }
- else {
- if (bezm->bezt->vec[0][0]>bezm->bezt->vec[1][0]) bezm->handles ^= BEZM_CLEARH1;
- if (bezm->bezt->vec[2][0]<bezm->bezt->vec[1][0]) bezm->handles ^= BEZM_CLEARH2;
- }
-
bezm++;
}
}