Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/editlattice.c
| Show First 20 Lines • Show All 86 Lines • ▼ Show 20 Lines | void BKE_editlattice_load(Object *obedit) | ||||
| KeyBlock *actkey; | KeyBlock *actkey; | ||||
| BPoint *bp; | BPoint *bp; | ||||
| float *fp; | float *fp; | ||||
| int tot; | int tot; | ||||
| lt = obedit->data; | lt = obedit->data; | ||||
| editlt = lt->editlatt->latt; | editlt = lt->editlatt->latt; | ||||
| MEM_freeN(lt->def); | |||||
| lt->def = MEM_dupallocN(editlt->def); | |||||
| lt->flag = editlt->flag; | |||||
| lt->pntsu = editlt->pntsu; | |||||
| lt->pntsv = editlt->pntsv; | |||||
| lt->pntsw = editlt->pntsw; | |||||
| lt->typeu = editlt->typeu; | |||||
| lt->typev = editlt->typev; | |||||
| lt->typew = editlt->typew; | |||||
| lt->actbp = editlt->actbp; | |||||
| if (lt->editlatt->shapenr) { | if (lt->editlatt->shapenr) { | ||||
| actkey = BLI_findlink(<->key->block, lt->editlatt->shapenr - 1); | actkey = BLI_findlink(<->key->block, lt->editlatt->shapenr - 1); | ||||
| /* active key: vertices */ | /* active key: vertices */ | ||||
| tot = editlt->pntsu * editlt->pntsv * editlt->pntsw; | tot = editlt->pntsu * editlt->pntsv * editlt->pntsw; | ||||
| if (actkey->data) { | if (actkey->data) { | ||||
| MEM_freeN(actkey->data); | MEM_freeN(actkey->data); | ||||
| } | } | ||||
| fp = actkey->data = MEM_callocN(lt->key->elemsize * tot, "actkey->data"); | fp = actkey->data = MEM_callocN(lt->key->elemsize * tot, "actkey->data"); | ||||
| actkey->totelem = tot; | actkey->totelem = tot; | ||||
| bp = editlt->def; | bp = editlt->def; | ||||
| while (tot--) { | while (tot--) { | ||||
| copy_v3_v3(fp, bp->vec); | copy_v3_v3(fp, bp->vec); | ||||
| fp += 3; | fp += 3; | ||||
| bp++; | bp++; | ||||
| } | } | ||||
| } | } | ||||
| else { | |||||
| MEM_freeN(lt->def); | |||||
| lt->def = MEM_dupallocN(editlt->def); | |||||
| lt->flag = editlt->flag; | |||||
| lt->pntsu = editlt->pntsu; | |||||
| lt->pntsv = editlt->pntsv; | |||||
| lt->pntsw = editlt->pntsw; | |||||
| lt->typeu = editlt->typeu; | |||||
| lt->typev = editlt->typev; | |||||
| lt->typew = editlt->typew; | |||||
| lt->actbp = editlt->actbp; | |||||
| } | |||||
| if (lt->dvert) { | if (lt->dvert) { | ||||
| BKE_defvert_array_free(lt->dvert, lt->pntsu * lt->pntsv * lt->pntsw); | BKE_defvert_array_free(lt->dvert, lt->pntsu * lt->pntsv * lt->pntsw); | ||||
| lt->dvert = NULL; | lt->dvert = NULL; | ||||
| } | } | ||||
| if (editlt->dvert) { | if (editlt->dvert) { | ||||
| tot = lt->pntsu * lt->pntsv * lt->pntsw; | tot = lt->pntsu * lt->pntsv * lt->pntsw; | ||||
| lt->dvert = MEM_mallocN(sizeof(MDeformVert) * tot, "Lattice MDeformVert"); | lt->dvert = MEM_mallocN(sizeof(MDeformVert) * tot, "Lattice MDeformVert"); | ||||
| BKE_defvert_array_copy(lt->dvert, editlt->dvert, tot); | BKE_defvert_array_copy(lt->dvert, editlt->dvert, tot); | ||||
| } | } | ||||
| } | } | ||||