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:
authorBastien Montagne <montagne29@wanadoo.fr>2013-11-01 12:31:36 +0400
committerBastien Montagne <montagne29@wanadoo.fr>2013-11-01 12:31:36 +0400
commitb375388959ac7311174e9859e724b169ede674d9 (patch)
tree7a97bfbd1da90fa8ac6b67cf90e7c06aa43a7b21 /source
parent1512cda61d0c2a2b946e8c5a73cf9bab45bd1bc7 (diff)
Fix [#37266] Skin modifier can't be copied.
Patch by Martin Felke, many thanks. When copying that modifier across objects, we also have to ensure that a skin CDLayer is present in dest objects (just as when adding it).
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_modifier.h1
-rw-r--r--source/blender/blenkernel/intern/object.c7
-rw-r--r--source/blender/editors/object/object_modifier.c3
3 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 6bf42a3e885..65038c7f09c 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -357,6 +357,7 @@ bool modifiers_usesArmature(struct Object *ob, struct bArmature *arm);
bool modifiers_isCorrectableDeformed(struct Scene *scene, struct Object *ob);
void modifier_freeTemporaryData(struct ModifierData *md);
bool modifiers_isPreview(struct Object *ob);
+void modifier_skin_customdata_ensure(struct Object *ob);
typedef struct CDMaskLink {
struct CDMaskLink *next;
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index bef0263b2f5..45d9d144f55 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -32,7 +32,7 @@
#include <string.h>
#include <math.h>
-#include <stdio.h>
+#include <stdio.h>
#include "MEM_guardedalloc.h"
@@ -256,6 +256,11 @@ void BKE_object_link_modifiers(struct Object *ob_dst, struct Object *ob_src)
if (!BKE_object_support_modifier_type_check(ob_dst, md->type))
continue;
+
+ if (md->type == eModifierType_Skin) {
+ /* ensure skin-node customdata exists */
+ modifier_skin_customdata_ensure(ob_dst);
+ }
nmd = modifier_new(md->type);
BLI_strncpy(nmd->name, md->name, sizeof(nmd->name));
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 0ba84e27420..ec0423d7480 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -87,7 +87,6 @@
#include "object_intern.h"
-static void modifier_skin_customdata_ensure(struct Object *ob);
static void modifier_skin_customdata_delete(struct Object *ob);
/******************************** API ****************************/
@@ -1434,7 +1433,7 @@ void OBJECT_OT_multires_base_apply(wmOperatorType *ot)
/************************** skin modifier ***********************/
-static void modifier_skin_customdata_ensure(Object *ob)
+void modifier_skin_customdata_ensure(Object *ob)
{
Mesh *me = ob->data;
BMesh *bm = me->edit_btmesh ? me->edit_btmesh->bm : NULL;