Fix T71414: Undoing change of lattice resolution deforms mesh

This commit is contained in:
Campbell Barton 2019-11-11 13:07:37 +11:00
parent 0a0d735acd
commit df4f29b928
Notes: blender-bot 2023-02-14 06:00:51 +01:00
Referenced by issue #71414, Lattice - mesh outgrows lattice object when resolution is changed (U, V, W) in Lattice options after undo.
1 changed files with 26 additions and 0 deletions

View File

@ -61,9 +61,13 @@ static CLG_LogRef LOG = {"ed.undo.lattice"};
/** \name Undo Conversion
* \{ */
/* TODO(Campbell): this could contain an entire 'Lattice' struct. */
typedef struct UndoLattice {
BPoint *def;
int pntsu, pntsv, pntsw, actbp;
char typeu, typev, typew;
float fu, fv, fw;
float du, dv, dw;
size_t undo_size;
} UndoLattice;
@ -83,6 +87,17 @@ static void undolatt_to_editlatt(UndoLattice *ult, EditLatt *editlatt)
editlatt->latt->pntsv = ult->pntsv;
editlatt->latt->pntsw = ult->pntsw;
editlatt->latt->actbp = ult->actbp;
editlatt->latt->typeu = ult->typeu;
editlatt->latt->typev = ult->typev;
editlatt->latt->typew = ult->typew;
editlatt->latt->fu = ult->fu;
editlatt->latt->fv = ult->fv;
editlatt->latt->fw = ult->fw;
editlatt->latt->du = ult->du;
editlatt->latt->dv = ult->dv;
editlatt->latt->dw = ult->dw;
}
static void *undolatt_from_editlatt(UndoLattice *ult, EditLatt *editlatt)
@ -95,6 +110,17 @@ static void *undolatt_from_editlatt(UndoLattice *ult, EditLatt *editlatt)
ult->pntsw = editlatt->latt->pntsw;
ult->actbp = editlatt->latt->actbp;
ult->typeu = editlatt->latt->typeu;
ult->typev = editlatt->latt->typev;
ult->typew = editlatt->latt->typew;
ult->fu = editlatt->latt->fu;
ult->fv = editlatt->latt->fv;
ult->fw = editlatt->latt->fw;
ult->du = editlatt->latt->du;
ult->dv = editlatt->latt->dv;
ult->dw = editlatt->latt->dw;
ult->undo_size += sizeof(*ult->def) * ult->pntsu * ult->pntsv * ult->pntsw;
return ult;