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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-05-18 15:15:24 +0400
committerCampbell Barton <ideasman42@gmail.com>2009-05-18 15:15:24 +0400
commit65bd48c896492a6485121524171f2f447fe1b95f (patch)
tree512c865b0c632468cad9934bebc5c03d70a9d228 /source
parentb1a393e8156d9020aaefb25cf5cf8fb4103cea75 (diff)
[#18778] Lattice Vertex Groups Don't get deleted
fixed 'Copy Group' for lattice too.
Diffstat (limited to 'source')
-rw-r--r--source/blender/src/editdeform.c57
1 files changed, 38 insertions, 19 deletions
diff --git a/source/blender/src/editdeform.c b/source/blender/src/editdeform.c
index 8a07a4fddff..ac027b2c1ad 100644
--- a/source/blender/src/editdeform.c
+++ b/source/blender/src/editdeform.c
@@ -211,11 +211,10 @@ void duplicate_defgroup ( Object *ob )
bDeformGroup *dg, *cdg;
char name[32], s[32];
MDeformWeight *org, *cpy;
- MDeformVert *dvert;
- Mesh *me;
- int i, idg, icdg;
+ MDeformVert *dvert, *dvert_array;
+ int i, idg, icdg, dvert_tot;
- if (ob->type != OB_MESH)
+ if (ob->type != OB_MESH && ob->type != OB_LATTICE)
return;
dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
@@ -246,12 +245,22 @@ void duplicate_defgroup ( Object *ob )
ob->actdef = BLI_countlist (&ob->defbase);
icdg = (ob->actdef-1);
- me = get_mesh (ob);
- if (!me->dvert)
+ if(ob->type == OB_MESH) {
+ Mesh *me = get_mesh (ob);
+ dvert_array= me->dvert;
+ dvert_tot= me->totvert;
+ }
+ else if (ob->type == OB_LATTICE) {
+ Lattice *lt= (Lattice *)ob->data;
+ dvert_array= lt->dvert;
+ dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
+ }
+
+ if (!dvert_array)
return;
- for (i = 0; i < me->totvert; i++) {
- dvert = me->dvert+i;
+ for (i = 0; i < dvert_tot; i++) {
+ dvert = dvert_array+i;
org = get_defweight (dvert, idg);
if (org) {
cpy = verify_defweight (dvert, icdg);
@@ -323,29 +332,39 @@ static void del_defgroup_update_users(Object *ob, int id)
void del_defgroup_in_object_mode ( Object *ob )
{
bDeformGroup *dg;
- MDeformVert *dvert;
- Mesh *me;
- int i, e;
+ MDeformVert *dvert_array, *dvert;
+
+ int i, e, dvert_tot;
- if ((!ob) || (ob->type != OB_MESH))
+ if ((!ob) || (ob->type != OB_MESH && ob->type != OB_LATTICE))
return;
+ if(ob->type == OB_MESH) {
+ Mesh *me = get_mesh (ob);
+ dvert_array= me->dvert;
+ dvert_tot= me->totvert;
+ }
+ else if (ob->type == OB_LATTICE) {
+ Lattice *lt= (Lattice *)ob->data;
+ dvert_array= lt->dvert;
+ dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
+ }
+
dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
if (!dg)
return;
-
- me = get_mesh (ob);
- if (me->dvert) {
- for (i = 0; i < me->totvert; i++) {
- dvert = me->dvert + i;
+
+ if (dvert_array) {
+ for (i = 0; i < dvert_tot; i++) {
+ dvert = dvert_array + i;
if (dvert) {
if (get_defweight (dvert, (ob->actdef-1)))
remove_vert_defgroup (ob, dg, i);
}
}
- for (i = 0; i < me->totvert; i++) {
- dvert = me->dvert+i;
+ for (i = 0; i < dvert_tot; i++) {
+ dvert = dvert_array+i;
if (dvert) {
for (e = 0; e < dvert->totweight; e++) {
if (dvert->dw[e].def_nr > (ob->actdef-1))