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:
authorSybren A. Stüvel <sybren@blender.org>2021-03-29 11:14:53 +0300
committerSybren A. Stüvel <sybren@blender.org>2021-03-29 12:00:32 +0300
commit3681a619ded1a6b225befc31ef87259081fb61e5 (patch)
tree35f841fc7287689e25c95da5aa89842b75a9fd7b /source/blender/blenkernel/intern/lattice_deform.c
parent8034b276ba6c5369a356a1b8f5e858305f8b47b9 (diff)
Fix T78650: Lattice evaluation writes to shared data
Fix the data management bug where evaluation of lattice objects would write back to the CoW copy of the Lattice ID, even when that copy was shared between objects. Each lattice object evaluation now stores its own evaluated data copy via `BKE_object_eval_assign_data()`. Reviewed By: sergey Maniphest Tasks: T78650 Differential Revision: https://developer.blender.org/D10790
Diffstat (limited to 'source/blender/blenkernel/intern/lattice_deform.c')
-rw-r--r--source/blender/blenkernel/intern/lattice_deform.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/lattice_deform.c b/source/blender/blenkernel/intern/lattice_deform.c
index 2651042939f..4a926ee3d96 100644
--- a/source/blender/blenkernel/intern/lattice_deform.c
+++ b/source/blender/blenkernel/intern/lattice_deform.c
@@ -47,6 +47,7 @@
#include "BKE_key.h"
#include "BKE_lattice.h"
#include "BKE_modifier.h"
+#include "BKE_object.h"
#include "BKE_deform.h"
@@ -69,7 +70,7 @@ typedef struct LatticeDeformData {
LatticeDeformData *BKE_lattice_deform_data_create(const Object *oblatt, const Object *ob)
{
/* we make an array with all differences */
- Lattice *lt = oblatt->data;
+ Lattice *lt = BKE_object_get_lattice(oblatt);
BPoint *bp;
DispList *dl = oblatt->runtime.curve_cache ?
BKE_displist_find(&oblatt->runtime.curve_cache->disp, DL_VERTS) :
@@ -83,9 +84,6 @@ LatticeDeformData *BKE_lattice_deform_data_create(const Object *oblatt, const Ob
float latmat[4][4];
LatticeDeformData *lattice_deform_data;
- if (lt->editlatt) {
- lt = lt->editlatt->latt;
- }
bp = lt->def;
const int32_t num_points = lt->pntsu * lt->pntsv * lt->pntsw;