diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-08-19 14:11:48 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-08-19 14:11:48 +0400 |
commit | c46cbc602e1007a15c6d9824ec34c41f124faeaa (patch) | |
tree | 3cc89f89a2601d7a8de18ef39b7207803b5f75fd /source/blender/blenkernel/BKE_lattice.h | |
parent | b9ae749480aeeb7e77f16ebe667ddfcf8b63650e (diff) |
Make lattice deform safe for threading
Lattice deformation used to store some runtime data
inside of lattice datablock itself. It's something
which is REALLY bad. Ideally DNA shouldn't contain
and runtime data.
For now solved it in a way that initialization of
lattice deform will create a structure which contains
lattice object for which deformation is calculating
and that runtime data which used to be stored in
lattice datablock itself.
It works really fine for mesh deform modifier, but
there's still runtime data stored in particle system
DNA, It didn't look something easy to be solved, so
leaving this as-is for now.
--
svn merge -r58277:58278 -r58795:58796 ^/branches/soc-2013-depsgraph_mt
Diffstat (limited to 'source/blender/blenkernel/BKE_lattice.h')
-rw-r--r-- | source/blender/blenkernel/BKE_lattice.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_lattice.h b/source/blender/blenkernel/BKE_lattice.h index 9b29412675b..ba33da7729c 100644 --- a/source/blender/blenkernel/BKE_lattice.h +++ b/source/blender/blenkernel/BKE_lattice.h @@ -49,9 +49,14 @@ void BKE_lattice_free(struct Lattice *lt); void BKE_lattice_make_local(struct Lattice *lt); void calc_lat_fudu(int flag, int res, float *r_fu, float *r_du); -void init_latt_deform(struct Object *oblatt, struct Object *ob); -void calc_latt_deform(struct Object *, float co[3], float weight); -void end_latt_deform(struct Object *); +struct LatticeDeformData; +struct LatticeDeformData *init_latt_deform(struct Object *oblatt, struct Object *ob) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +#endif +; +void calc_latt_deform(struct LatticeDeformData *lattice_deform_data, float co[3], float weight); +void end_latt_deform(struct LatticeDeformData *lattice_deform_data); int object_deform_mball(struct Object *ob, struct ListBase *dispbase); void outside_lattice(struct Lattice *lt); |