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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-11-30 11:11:29 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-11-30 11:11:29 +0400
commitb202bf05646b89c8b1f9f24a1d0f9750914997b1 (patch)
tree8851e06e1c771e077027e258c9cf2721131bffe1 /source/blender/blenkernel/intern/deform.c
parent4afc0e80a7af094946640b2ec03d8f9eac4042ba (diff)
fix [#29450] Mirror Vertex Groups issue
Diffstat (limited to 'source/blender/blenkernel/intern/deform.c')
-rw-r--r--source/blender/blenkernel/intern/deform.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index 0c3c78f6eef..021433dee9e 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -94,6 +94,31 @@ void defvert_copy (MDeformVert *dvert_r, const MDeformVert *dvert)
}
}
+/* copy an index from one dvert to another
+ * - do nothing if neither are set.
+ * - add destination weight if needed.
+ */
+void defvert_copy_index (MDeformVert *dv_dst, const MDeformVert *dv_src, const int defgroup)
+{
+ MDeformWeight *dw_src, *dw_dst;
+
+ dw_src= defvert_find_index(dv_src, defgroup);
+
+ if (dw_src) {
+ /* source is valid, verify destination */
+ dw_dst= defvert_verify_index(dv_dst, defgroup);
+ dw_dst->weight= dw_src->weight;
+ }
+ else {
+ /* source was NULL, assign zero, could also remove */
+ dw_dst= defvert_find_index(dv_dst, defgroup);
+
+ if (dw_dst) {
+ dw_dst->weight= 0.0f;
+ }
+ }
+}
+
/* only sync over matching weights, don't add or remove groups
* warning, loop within loop.
*/