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>2013-07-04 07:56:18 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-07-04 07:56:18 +0400
commit70dc1d8cb65cf01f90ad8d96930cfec8da525e09 (patch)
tree5654572a32f5a6b81a2e47a33d9f2401141b0753 /source
parenta0cfa3e42095e96af771f503335b0bf05bb26d63 (diff)
stop adding groups from changing the active group with weight transfer, add BKE_defgroup_new function.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_deform.h1
-rw-r--r--source/blender/blenkernel/intern/deform.c16
-rw-r--r--source/blender/editors/object/object_vgroup.c15
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c4
4 files changed, 21 insertions, 15 deletions
diff --git a/source/blender/blenkernel/BKE_deform.h b/source/blender/blenkernel/BKE_deform.h
index 07bdbc1009b..a43a243106d 100644
--- a/source/blender/blenkernel/BKE_deform.h
+++ b/source/blender/blenkernel/BKE_deform.h
@@ -40,6 +40,7 @@ struct ListBase;
struct bDeformGroup;
struct MDeformVert;
+struct bDeformGroup *BKE_defgroup_new(struct Object *ob, const char *name);
void defgroup_copy_list(struct ListBase *lb1, struct ListBase *lb2);
struct bDeformGroup *defgroup_duplicate(struct bDeformGroup *ingroup);
struct bDeformGroup *defgroup_find_name(struct Object *ob, const char *name);
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index b82e89d1af6..a492b227815 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -51,6 +51,22 @@
#include "BKE_deform.h" /* own include */
+bDeformGroup *BKE_defgroup_new(Object *ob, const char *name)
+{
+ bDeformGroup *defgroup;
+
+ BLI_assert(OB_TYPE_SUPPORT_VGROUP(ob->type));
+
+ defgroup = MEM_callocN(sizeof(bDeformGroup), __func__);
+
+ BLI_strncpy(defgroup->name, name, sizeof(defgroup->name));
+
+ BLI_addtail(&ob->defbase, defgroup);
+ defgroup_unique_name(defgroup, ob);
+
+ return defgroup;
+}
+
void defgroup_copy_list(ListBase *outbase, ListBase *inbase)
{
bDeformGroup *defgroup, *defgroupn;
diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c
index da46001bde9..7e87068a7bb 100644
--- a/source/blender/editors/object/object_vgroup.c
+++ b/source/blender/editors/object/object_vgroup.c
@@ -125,13 +125,8 @@ bDeformGroup *ED_vgroup_add_name(Object *ob, const char *name)
if (!ob || !OB_TYPE_SUPPORT_VGROUP(ob->type))
return NULL;
-
- defgroup = MEM_callocN(sizeof(bDeformGroup), "add deformGroup");
-
- BLI_strncpy(defgroup->name, name, sizeof(defgroup->name));
- BLI_addtail(&ob->defbase, defgroup);
- defgroup_unique_name(defgroup, ob);
+ defgroup = BKE_defgroup_new(ob, name);
ob->actdef = BLI_countlist(&ob->defbase);
@@ -756,13 +751,10 @@ static bool ed_vgroup_transfer_weight(Object *ob_dst, Object *ob_src, bDeformGro
const int use_vert_sel = vertex_group_use_vert_sel(ob_dst);
/* Ensure vertex group on target.*/
- if (!defgroup_find_name(ob_dst, dg_src->name)) {
- ED_vgroup_add_name(ob_dst, dg_src->name);
+ if ((dg_dst = defgroup_find_name(ob_dst, dg_src->name)) == NULL) {
+ dg_dst = BKE_defgroup_new(ob_dst, dg_src->name);
}
- /* Get destination deformgroup.*/
- dg_dst = defgroup_find_name(ob_dst, dg_src->name);
-
/* Get meshes.*/
dmesh_src = mesh_get_derived_deform(scene, ob_src, CD_MASK_BAREMESH);
me_dst = ob_dst->data;
@@ -3811,7 +3803,6 @@ static int vertex_group_transfer_weight_exec(bContext *C, wmOperator *op)
/* Event notifiers for correct display of data.*/
DAG_id_tag_update(&ob_act->id, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_GEOM | ND_VERTEX_GROUP, ob_act);
-
return OPERATOR_FINISHED;
}
else {
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 173a76a54e8..a891524b5c6 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -380,11 +380,9 @@ static int wpaint_mirror_vgroup_ensure(Object *ob, const int vgroup_active)
flip_side_name(name, defgroup->name, FALSE);
mirrdef = defgroup_name_index(ob, name);
if (mirrdef == -1) {
- int olddef = ob->actdef; /* tsk, ED_vgroup_add sets the active defgroup */
- if (ED_vgroup_add_name(ob, name)) {
+ if (BKE_defgroup_new(ob, name)) {
mirrdef = BLI_countlist(&ob->defbase) - 1;
}
- ob->actdef = olddef;
}
/* curdef should never be NULL unless this is