diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-12-21 21:35:52 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-12-21 21:37:26 +0400 |
commit | 158b4e61a050a25fec47a00797ab7db46fc3198c (patch) | |
tree | 8685bf78c15dc0b65477a5d6b7da29c40b599caa /source/blender/blenkernel/intern/modifier.c | |
parent | 87cc890aef53c4660448b1125dc0c40a187ae1f2 (diff) |
Mesh Modifiers: refactor copying using a generic function
Diffstat (limited to 'source/blender/blenkernel/intern/modifier.c')
-rw-r--r-- | source/blender/blenkernel/intern/modifier.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 4d2f6971f64..f9a0d462ac0 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -253,6 +253,19 @@ void modifiers_foreachTexLink(Object *ob, TexWalkFunc walk, void *userData) } } +/* callback's can use this + * to avoid copying every member. + */ +void modifier_copyData_generic(const ModifierData *md_src, ModifierData *md_dst) +{ + ModifierTypeInfo *mti = modifierType_getInfo(md_src->type); + const size_t data_size = sizeof(ModifierData); + const char *md_src_data = ((char *)md_src) + data_size; + char *md_dst_data = ((char *)md_dst) + data_size; + BLI_assert(data_size <= (size_t)mti->structSize); + memcpy(md_dst_data, md_src_data, (size_t)mti->structSize - data_size); +} + void modifier_copyData(ModifierData *md, ModifierData *target) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); |