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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-05-30 17:25:35 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-05-30 18:00:47 +0300
commit41fac4fa76d677ce6bf8b1411d46dd18d04d6943 (patch)
tree37bf1b3e6bae877ae5b763f6868fe3a34d99ba15 /source/blender/blenkernel
parent25d4d43491055c4c7c0a523a0ddb0bf027d1515d (diff)
Modifiers: Make input of modifier stack referencing copied CD layers
The idea is to allow modifier stack to reference custom data layers from copied version of mesh datablock.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index c8d5bb5ffd7..3c9e0efa12e 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1294,7 +1294,11 @@ static Mesh *create_orco_mesh(Object *ob, Mesh *me, BMEditMesh *em, int layer)
else {
BKE_id_copy_ex(
NULL, &me->id, (ID **)&mesh,
- LIB_ID_CREATE_NO_MAIN | LIB_ID_CREATE_NO_USER_REFCOUNT | LIB_ID_CREATE_NO_DEG_TAG, false);
+ (LIB_ID_CREATE_NO_MAIN |
+ LIB_ID_CREATE_NO_USER_REFCOUNT |
+ LIB_ID_CREATE_NO_DEG_TAG |
+ LIB_ID_COPY_CD_REFERENCE),
+ false);
}
orco = get_orco_coords_dm(ob, em, layer, &free);
@@ -2125,7 +2129,11 @@ static void mesh_calc_modifiers(
if (r_deform_mesh) {
BKE_id_copy_ex(
NULL, &me->id, (ID **)r_deform_mesh,
- LIB_ID_CREATE_NO_MAIN | LIB_ID_CREATE_NO_USER_REFCOUNT | LIB_ID_CREATE_NO_DEG_TAG, false);
+ (LIB_ID_CREATE_NO_MAIN |
+ LIB_ID_CREATE_NO_USER_REFCOUNT |
+ LIB_ID_CREATE_NO_DEG_TAG |
+ LIB_ID_COPY_CD_REFERENCE),
+ false);
/* XXX: Is build_shapekey_layers ever even true? This should have crashed long ago... */
BLI_assert(!build_shapekey_layers);
@@ -2268,7 +2276,11 @@ static void mesh_calc_modifiers(
else {
BKE_id_copy_ex(
NULL, &me->id, (ID **)&mesh,
- LIB_ID_CREATE_NO_MAIN | LIB_ID_CREATE_NO_USER_REFCOUNT | LIB_ID_CREATE_NO_DEG_TAG, false);
+ (LIB_ID_CREATE_NO_MAIN |
+ LIB_ID_CREATE_NO_USER_REFCOUNT |
+ LIB_ID_CREATE_NO_DEG_TAG |
+ LIB_ID_COPY_CD_REFERENCE),
+ false);
ASSERT_IS_VALID_MESH(mesh);
// XXX: port to Mesh if build_shapekey_layers can ever be true
@@ -2439,7 +2451,11 @@ static void mesh_calc_modifiers(
else {
BKE_id_copy_ex(
NULL, &me->id, (ID **)&final_mesh,
- LIB_ID_CREATE_NO_MAIN | LIB_ID_CREATE_NO_USER_REFCOUNT | LIB_ID_CREATE_NO_DEG_TAG, false);
+ (LIB_ID_CREATE_NO_MAIN |
+ LIB_ID_CREATE_NO_USER_REFCOUNT |
+ LIB_ID_CREATE_NO_DEG_TAG |
+ LIB_ID_COPY_CD_REFERENCE),
+ false);
//if (build_shapekey_layers) {
// add_shapekey_layers(final_mesh, me, ob);