diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-05-30 17:25:35 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-05-30 18:00:47 +0300 |
commit | 41fac4fa76d677ce6bf8b1411d46dd18d04d6943 (patch) | |
tree | 37bf1b3e6bae877ae5b763f6868fe3a34d99ba15 /source/blender/blenkernel | |
parent | 25d4d43491055c4c7c0a523a0ddb0bf027d1515d (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.c | 24 |
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); |