forked from bartvdbraak/blender
Two more fixes in Transform:
- Ipokeys didnt have 'selected' flag, so were not included in center calculus - Multiple keys transform didn't apply this center even... ALso took extra work time to add credits in splash. Frédéric Van der Essen!
This commit is contained in:
parent
f26e4ca150
commit
1d7a8cf86f
File diff suppressed because it is too large
Load Diff
@ -1150,7 +1150,13 @@ void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) {
|
|||||||
Mat3MulVecfl(td->smtx, vec);
|
Mat3MulVecfl(td->smtx, vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
VecAddf(td->loc, td->iloc, vec);
|
if(td->tdi) {
|
||||||
|
TransDataIpokey *tdi= td->tdi;
|
||||||
|
add_tdi_poin(tdi->locx, tdi->oldloc, vec[0]);
|
||||||
|
add_tdi_poin(tdi->locy, tdi->oldloc+1, vec[1]);
|
||||||
|
add_tdi_poin(tdi->locz, tdi->oldloc+2, vec[2]);
|
||||||
|
}
|
||||||
|
else VecAddf(td->loc, td->iloc, vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Resize(TransInfo *t, short mval[2])
|
int Resize(TransInfo *t, short mval[2])
|
||||||
@ -1356,6 +1362,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3]) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* translation */
|
/* translation */
|
||||||
|
|
||||||
VecSubf(vec, td->center, t->center);
|
VecSubf(vec, td->center, t->center);
|
||||||
Mat3MulVecfl(mat, vec);
|
Mat3MulVecfl(mat, vec);
|
||||||
VecAddf(vec, vec, t->center);
|
VecAddf(vec, vec, t->center);
|
||||||
@ -1363,7 +1370,13 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3]) {
|
|||||||
VecSubf(vec, vec, td->center);
|
VecSubf(vec, vec, td->center);
|
||||||
Mat3MulVecfl(td->smtx, vec);
|
Mat3MulVecfl(td->smtx, vec);
|
||||||
|
|
||||||
VecAddf(td->loc, td->iloc, vec);
|
if(td->tdi) {
|
||||||
|
TransDataIpokey *tdi= td->tdi;
|
||||||
|
add_tdi_poin(tdi->locx, tdi->oldloc, vec[0]);
|
||||||
|
add_tdi_poin(tdi->locy, tdi->oldloc+1, vec[1]);
|
||||||
|
add_tdi_poin(tdi->locz, tdi->oldloc+2, vec[2]);
|
||||||
|
}
|
||||||
|
else VecAddf(td->loc, td->iloc, vec);
|
||||||
|
|
||||||
if(td->flag & TD_USEQUAT) {
|
if(td->flag & TD_USEQUAT) {
|
||||||
Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
|
Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
|
||||||
|
@ -2087,6 +2087,8 @@ static void createTransObject(TransInfo *t)
|
|||||||
do_ob_ipo(ob);
|
do_ob_ipo(ob);
|
||||||
ObjectToTransData(td, ob); // does where_is_object()
|
ObjectToTransData(td, ob); // does where_is_object()
|
||||||
|
|
||||||
|
td->flag= TD_SELECTED;
|
||||||
|
|
||||||
td->tdi= MEM_callocN(sizeof(TransDataIpokey), "TransDataIpokey");
|
td->tdi= MEM_callocN(sizeof(TransDataIpokey), "TransDataIpokey");
|
||||||
/* also does tdi->flag and oldvals, needs to be after ob_to_transob()! */
|
/* also does tdi->flag and oldvals, needs to be after ob_to_transob()! */
|
||||||
ipokey_to_transdata(ik, td);
|
ipokey_to_transdata(ik, td);
|
||||||
@ -2102,6 +2104,8 @@ static void createTransObject(TransInfo *t)
|
|||||||
|
|
||||||
CFRA= (short)cfraont;
|
CFRA= (short)cfraont;
|
||||||
ob->ipoflag= ipoflag;
|
ob->ipoflag= ipoflag;
|
||||||
|
|
||||||
|
where_is_object(ob); // restore
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ObjectToTransData(td, ob);
|
ObjectToTransData(td, ob);
|
||||||
|
Loading…
Reference in New Issue
Block a user