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:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/blenkernel/intern/modifier.c
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/blenkernel/intern/modifier.c')
-rw-r--r--source/blender/blenkernel/intern/modifier.c1023
1 files changed, 527 insertions, 496 deletions
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 7600c74b777..7d4fc15ca56 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -76,317 +76,327 @@ static VirtualModifierData virtualModifierCommonData;
void BKE_modifier_init(void)
{
- ModifierData *md;
+ ModifierData *md;
- /* Initialize modifier types */
- modifier_type_init(modifier_types); /* MOD_utils.c */
+ /* Initialize modifier types */
+ modifier_type_init(modifier_types); /* MOD_utils.c */
- /* Initialize global cmmon storage used for virtual modifier list */
- md = modifier_new(eModifierType_Armature);
- virtualModifierCommonData.amd = *((ArmatureModifierData *) md);
- modifier_free(md);
+ /* Initialize global cmmon storage used for virtual modifier list */
+ md = modifier_new(eModifierType_Armature);
+ virtualModifierCommonData.amd = *((ArmatureModifierData *)md);
+ modifier_free(md);
- md = modifier_new(eModifierType_Curve);
- virtualModifierCommonData.cmd = *((CurveModifierData *) md);
- modifier_free(md);
+ md = modifier_new(eModifierType_Curve);
+ virtualModifierCommonData.cmd = *((CurveModifierData *)md);
+ modifier_free(md);
- md = modifier_new(eModifierType_Lattice);
- virtualModifierCommonData.lmd = *((LatticeModifierData *) md);
- modifier_free(md);
+ md = modifier_new(eModifierType_Lattice);
+ virtualModifierCommonData.lmd = *((LatticeModifierData *)md);
+ modifier_free(md);
- md = modifier_new(eModifierType_ShapeKey);
- virtualModifierCommonData.smd = *((ShapeKeyModifierData *) md);
- modifier_free(md);
+ md = modifier_new(eModifierType_ShapeKey);
+ virtualModifierCommonData.smd = *((ShapeKeyModifierData *)md);
+ modifier_free(md);
- virtualModifierCommonData.amd.modifier.mode |= eModifierMode_Virtual;
- virtualModifierCommonData.cmd.modifier.mode |= eModifierMode_Virtual;
- virtualModifierCommonData.lmd.modifier.mode |= eModifierMode_Virtual;
- virtualModifierCommonData.smd.modifier.mode |= eModifierMode_Virtual;
+ virtualModifierCommonData.amd.modifier.mode |= eModifierMode_Virtual;
+ virtualModifierCommonData.cmd.modifier.mode |= eModifierMode_Virtual;
+ virtualModifierCommonData.lmd.modifier.mode |= eModifierMode_Virtual;
+ virtualModifierCommonData.smd.modifier.mode |= eModifierMode_Virtual;
}
const ModifierTypeInfo *modifierType_getInfo(ModifierType type)
{
- /* type unsigned, no need to check < 0 */
- if (type < NUM_MODIFIER_TYPES && modifier_types[type]->name[0] != '\0') {
- return modifier_types[type];
- }
- else {
- return NULL;
- }
+ /* type unsigned, no need to check < 0 */
+ if (type < NUM_MODIFIER_TYPES && modifier_types[type]->name[0] != '\0') {
+ return modifier_types[type];
+ }
+ else {
+ return NULL;
+ }
}
/***/
ModifierData *modifier_new(int type)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(type);
- ModifierData *md = MEM_callocN(mti->structSize, mti->structName);
+ const ModifierTypeInfo *mti = modifierType_getInfo(type);
+ ModifierData *md = MEM_callocN(mti->structSize, mti->structName);
- /* note, this name must be made unique later */
- BLI_strncpy(md->name, DATA_(mti->name), sizeof(md->name));
+ /* note, this name must be made unique later */
+ BLI_strncpy(md->name, DATA_(mti->name), sizeof(md->name));
- md->type = type;
- md->mode = eModifierMode_Realtime | eModifierMode_Render | eModifierMode_Expanded;
- md->flag = eModifierFlag_StaticOverride_Local;
+ md->type = type;
+ md->mode = eModifierMode_Realtime | eModifierMode_Render | eModifierMode_Expanded;
+ md->flag = eModifierFlag_StaticOverride_Local;
- if (mti->flags & eModifierTypeFlag_EnableInEditmode)
- md->mode |= eModifierMode_Editmode;
+ if (mti->flags & eModifierTypeFlag_EnableInEditmode)
+ md->mode |= eModifierMode_Editmode;
- if (mti->initData) mti->initData(md);
+ if (mti->initData)
+ mti->initData(md);
- return md;
+ return md;
}
-static void modifier_free_data_id_us_cb(void *UNUSED(userData), Object *UNUSED(ob), ID **idpoin, int cb_flag)
+static void modifier_free_data_id_us_cb(void *UNUSED(userData),
+ Object *UNUSED(ob),
+ ID **idpoin,
+ int cb_flag)
{
- ID *id = *idpoin;
- if (id != NULL && (cb_flag & IDWALK_CB_USER) != 0) {
- id_us_min(id);
- }
+ ID *id = *idpoin;
+ if (id != NULL && (cb_flag & IDWALK_CB_USER) != 0) {
+ id_us_min(id);
+ }
}
void modifier_free_ex(ModifierData *md, const int flag)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) {
- if (mti->foreachIDLink) {
- mti->foreachIDLink(md, NULL, modifier_free_data_id_us_cb, NULL);
- }
- else if (mti->foreachObjectLink) {
- mti->foreachObjectLink(md, NULL, (ObjectWalkFunc)modifier_free_data_id_us_cb, NULL);
- }
- }
+ if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) {
+ if (mti->foreachIDLink) {
+ mti->foreachIDLink(md, NULL, modifier_free_data_id_us_cb, NULL);
+ }
+ else if (mti->foreachObjectLink) {
+ mti->foreachObjectLink(md, NULL, (ObjectWalkFunc)modifier_free_data_id_us_cb, NULL);
+ }
+ }
- if (mti->freeData) mti->freeData(md);
- if (md->error) MEM_freeN(md->error);
+ if (mti->freeData)
+ mti->freeData(md);
+ if (md->error)
+ MEM_freeN(md->error);
- MEM_freeN(md);
+ MEM_freeN(md);
}
void modifier_free(ModifierData *md)
{
- modifier_free_ex(md, 0);
+ modifier_free_ex(md, 0);
}
bool modifier_unique_name(ListBase *modifiers, ModifierData *md)
{
- if (modifiers && md) {
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ if (modifiers && md) {
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- return BLI_uniquename(modifiers, md, DATA_(mti->name), '.', offsetof(ModifierData, name), sizeof(md->name));
- }
- return false;
+ return BLI_uniquename(
+ modifiers, md, DATA_(mti->name), '.', offsetof(ModifierData, name), sizeof(md->name));
+ }
+ return false;
}
bool modifier_dependsOnTime(ModifierData *md)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- return mti->dependsOnTime && mti->dependsOnTime(md);
+ return mti->dependsOnTime && mti->dependsOnTime(md);
}
bool modifier_supportsMapping(ModifierData *md)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- return (mti->type == eModifierTypeType_OnlyDeform ||
- (mti->flags & eModifierTypeFlag_SupportsMapping));
+ return (mti->type == eModifierTypeType_OnlyDeform ||
+ (mti->flags & eModifierTypeFlag_SupportsMapping));
}
bool modifier_isPreview(ModifierData *md)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- /* Constructive modifiers are highly likely to also modify data like vgroups or vcol! */
- if (!((mti->flags & eModifierTypeFlag_UsesPreview) || (mti->type == eModifierTypeType_Constructive))) {
- return false;
- }
+ /* Constructive modifiers are highly likely to also modify data like vgroups or vcol! */
+ if (!((mti->flags & eModifierTypeFlag_UsesPreview) ||
+ (mti->type == eModifierTypeType_Constructive))) {
+ return false;
+ }
- if (md->mode & eModifierMode_Realtime) {
- return true;
- }
+ if (md->mode & eModifierMode_Realtime) {
+ return true;
+ }
- return false;
+ return false;
}
ModifierData *modifiers_findByType(Object *ob, ModifierType type)
{
- ModifierData *md = ob->modifiers.first;
+ ModifierData *md = ob->modifiers.first;
- for (; md; md = md->next)
- if (md->type == type)
- break;
+ for (; md; md = md->next)
+ if (md->type == type)
+ break;
- return md;
+ return md;
}
ModifierData *modifiers_findByName(Object *ob, const char *name)
{
- return BLI_findstring(&(ob->modifiers), name, offsetof(ModifierData, name));
+ return BLI_findstring(&(ob->modifiers), name, offsetof(ModifierData, name));
}
void modifiers_clearErrors(Object *ob)
{
- ModifierData *md = ob->modifiers.first;
- /* int qRedraw = 0; */
+ ModifierData *md = ob->modifiers.first;
+ /* int qRedraw = 0; */
- for (; md; md = md->next) {
- if (md->error) {
- MEM_freeN(md->error);
- md->error = NULL;
+ for (; md; md = md->next) {
+ if (md->error) {
+ MEM_freeN(md->error);
+ md->error = NULL;
- /* qRedraw = 1; */
- }
- }
+ /* qRedraw = 1; */
+ }
+ }
}
void modifiers_foreachObjectLink(Object *ob, ObjectWalkFunc walk, void *userData)
{
- ModifierData *md = ob->modifiers.first;
+ ModifierData *md = ob->modifiers.first;
- for (; md; md = md->next) {
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ for (; md; md = md->next) {
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- if (mti->foreachObjectLink)
- mti->foreachObjectLink(md, ob, walk, userData);
- }
+ if (mti->foreachObjectLink)
+ mti->foreachObjectLink(md, ob, walk, userData);
+ }
}
void modifiers_foreachIDLink(Object *ob, IDWalkFunc walk, void *userData)
{
- ModifierData *md = ob->modifiers.first;
+ ModifierData *md = ob->modifiers.first;
- for (; md; md = md->next) {
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ for (; md; md = md->next) {
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- if (mti->foreachIDLink) mti->foreachIDLink(md, ob, walk, userData);
- else if (mti->foreachObjectLink) {
- /* each Object can masquerade as an ID, so this should be OK */
- ObjectWalkFunc fp = (ObjectWalkFunc)walk;
- mti->foreachObjectLink(md, ob, fp, userData);
- }
- }
+ if (mti->foreachIDLink)
+ mti->foreachIDLink(md, ob, walk, userData);
+ else if (mti->foreachObjectLink) {
+ /* each Object can masquerade as an ID, so this should be OK */
+ ObjectWalkFunc fp = (ObjectWalkFunc)walk;
+ mti->foreachObjectLink(md, ob, fp, userData);
+ }
+ }
}
void modifiers_foreachTexLink(Object *ob, TexWalkFunc walk, void *userData)
{
- ModifierData *md = ob->modifiers.first;
+ ModifierData *md = ob->modifiers.first;
- for (; md; md = md->next) {
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ for (; md; md = md->next) {
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- if (mti->foreachTexLink)
- mti->foreachTexLink(md, ob, walk, userData);
- }
+ if (mti->foreachTexLink)
+ mti->foreachTexLink(md, ob, walk, userData);
+ }
}
/* callback's can use this
* to avoid copying every member.
*/
-void modifier_copyData_generic(const ModifierData *md_src, ModifierData *md_dst, const int UNUSED(flag))
+void modifier_copyData_generic(const ModifierData *md_src,
+ ModifierData *md_dst,
+ const int UNUSED(flag))
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md_src->type);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md_src->type);
- /* md_dst may have already be fully initialized with some extra allocated data,
- * we need to free it now to avoid memleak. */
- if (mti->freeData) {
- mti->freeData(md_dst);
- }
+ /* md_dst may have already be fully initialized with some extra allocated data,
+ * we need to free it now to avoid memleak. */
+ if (mti->freeData) {
+ mti->freeData(md_dst);
+ }
- const size_t data_size = sizeof(ModifierData);
- const char *md_src_data = ((const 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);
+ const size_t data_size = sizeof(ModifierData);
+ const char *md_src_data = ((const 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);
- /* Runtime fields are never to be preserved. */
- md_dst->runtime = NULL;
+ /* Runtime fields are never to be preserved. */
+ md_dst->runtime = NULL;
}
-static void modifier_copy_data_id_us_cb(void *UNUSED(userData), Object *UNUSED(ob), ID **idpoin, int cb_flag)
+static void modifier_copy_data_id_us_cb(void *UNUSED(userData),
+ Object *UNUSED(ob),
+ ID **idpoin,
+ int cb_flag)
{
- ID *id = *idpoin;
- if (id != NULL && (cb_flag & IDWALK_CB_USER) != 0) {
- id_us_plus(id);
- }
+ ID *id = *idpoin;
+ if (id != NULL && (cb_flag & IDWALK_CB_USER) != 0) {
+ id_us_plus(id);
+ }
}
void modifier_copyData_ex(ModifierData *md, ModifierData *target, const int flag)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- target->mode = md->mode;
- target->flag = md->flag;
+ target->mode = md->mode;
+ target->flag = md->flag;
- if (mti->copyData) {
- mti->copyData(md, target, flag);
- }
+ if (mti->copyData) {
+ mti->copyData(md, target, flag);
+ }
- if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) {
- if (mti->foreachIDLink) {
- mti->foreachIDLink(target, NULL, modifier_copy_data_id_us_cb, NULL);
- }
- else if (mti->foreachObjectLink) {
- mti->foreachObjectLink(target, NULL, (ObjectWalkFunc)modifier_copy_data_id_us_cb, NULL);
- }
- }
+ if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) {
+ if (mti->foreachIDLink) {
+ mti->foreachIDLink(target, NULL, modifier_copy_data_id_us_cb, NULL);
+ }
+ else if (mti->foreachObjectLink) {
+ mti->foreachObjectLink(target, NULL, (ObjectWalkFunc)modifier_copy_data_id_us_cb, NULL);
+ }
+ }
}
void modifier_copyData(ModifierData *md, ModifierData *target)
{
- modifier_copyData_ex(md, target, 0);
+ modifier_copyData_ex(md, target, 0);
}
-
bool modifier_supportsCage(struct Scene *scene, ModifierData *md)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- return ((!mti->isDisabled || !mti->isDisabled(scene, md, 0)) &&
- (mti->flags & eModifierTypeFlag_SupportsEditmode) &&
- modifier_supportsMapping(md));
+ return ((!mti->isDisabled || !mti->isDisabled(scene, md, 0)) &&
+ (mti->flags & eModifierTypeFlag_SupportsEditmode) && modifier_supportsMapping(md));
}
bool modifier_couldBeCage(struct Scene *scene, ModifierData *md)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- return ((md->mode & eModifierMode_Realtime) &&
- (md->mode & eModifierMode_Editmode) &&
- (!mti->isDisabled || !mti->isDisabled(scene, md, 0)) &&
- modifier_supportsMapping(md));
+ return ((md->mode & eModifierMode_Realtime) && (md->mode & eModifierMode_Editmode) &&
+ (!mti->isDisabled || !mti->isDisabled(scene, md, 0)) && modifier_supportsMapping(md));
}
bool modifier_isSameTopology(ModifierData *md)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- return ELEM(mti->type, eModifierTypeType_OnlyDeform, eModifierTypeType_NonGeometrical);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ return ELEM(mti->type, eModifierTypeType_OnlyDeform, eModifierTypeType_NonGeometrical);
}
bool modifier_isNonGeometrical(ModifierData *md)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- return (mti->type == eModifierTypeType_NonGeometrical);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ return (mti->type == eModifierTypeType_NonGeometrical);
}
void modifier_setError(ModifierData *md, const char *_format, ...)
{
- char buffer[512];
- va_list ap;
- const char *format = TIP_(_format);
+ char buffer[512];
+ va_list ap;
+ const char *format = TIP_(_format);
- va_start(ap, _format);
- vsnprintf(buffer, sizeof(buffer), format, ap);
- va_end(ap);
- buffer[sizeof(buffer) - 1] = '\0';
+ va_start(ap, _format);
+ vsnprintf(buffer, sizeof(buffer), format, ap);
+ va_end(ap);
+ buffer[sizeof(buffer) - 1] = '\0';
- if (md->error)
- MEM_freeN(md->error);
+ if (md->error)
+ MEM_freeN(md->error);
- md->error = BLI_strdup(buffer);
+ md->error = BLI_strdup(buffer);
- CLOG_STR_ERROR(&LOG, md->error);
+ CLOG_STR_ERROR(&LOG, md->error);
}
/* used for buttons, to find out if the 'draw deformed in editmode' option is
@@ -396,71 +406,79 @@ void modifier_setError(ModifierData *md, const char *_format, ...)
* then is NULL)
* also used for some mesh tools to give warnings
*/
-int modifiers_getCageIndex(struct Scene *scene, Object *ob, int *r_lastPossibleCageIndex, bool is_virtual)
+int modifiers_getCageIndex(struct Scene *scene,
+ Object *ob,
+ int *r_lastPossibleCageIndex,
+ bool is_virtual)
{
- VirtualModifierData virtualModifierData;
- ModifierData *md = (is_virtual) ? modifiers_getVirtualModifierList(ob, &virtualModifierData) : ob->modifiers.first;
- int i, cageIndex = -1;
+ VirtualModifierData virtualModifierData;
+ ModifierData *md = (is_virtual) ? modifiers_getVirtualModifierList(ob, &virtualModifierData) :
+ ob->modifiers.first;
+ int i, cageIndex = -1;
- if (r_lastPossibleCageIndex) {
- /* ensure the value is initialized */
- *r_lastPossibleCageIndex = -1;
- }
+ if (r_lastPossibleCageIndex) {
+ /* ensure the value is initialized */
+ *r_lastPossibleCageIndex = -1;
+ }
- /* Find the last modifier acting on the cage. */
- for (i = 0; md; i++, md = md->next) {
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- bool supports_mapping;
+ /* Find the last modifier acting on the cage. */
+ for (i = 0; md; i++, md = md->next) {
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ bool supports_mapping;
- if (mti->isDisabled && mti->isDisabled(scene, md, 0)) continue;
- if (!(mti->flags & eModifierTypeFlag_SupportsEditmode)) continue;
- if (md->mode & eModifierMode_DisableTemporary) continue;
+ if (mti->isDisabled && mti->isDisabled(scene, md, 0))
+ continue;
+ if (!(mti->flags & eModifierTypeFlag_SupportsEditmode))
+ continue;
+ if (md->mode & eModifierMode_DisableTemporary)
+ continue;
- supports_mapping = modifier_supportsMapping(md);
- if (r_lastPossibleCageIndex && supports_mapping) {
- *r_lastPossibleCageIndex = i;
- }
+ supports_mapping = modifier_supportsMapping(md);
+ if (r_lastPossibleCageIndex && supports_mapping) {
+ *r_lastPossibleCageIndex = i;
+ }
- if (!(md->mode & eModifierMode_Realtime)) continue;
- if (!(md->mode & eModifierMode_Editmode)) continue;
+ if (!(md->mode & eModifierMode_Realtime))
+ continue;
+ if (!(md->mode & eModifierMode_Editmode))
+ continue;
- if (!supports_mapping)
- break;
+ if (!supports_mapping)
+ break;
- if (md->mode & eModifierMode_OnCage)
- cageIndex = i;
- }
+ if (md->mode & eModifierMode_OnCage)
+ cageIndex = i;
+ }
- return cageIndex;
+ return cageIndex;
}
-
bool modifiers_isSoftbodyEnabled(Object *ob)
{
- ModifierData *md = modifiers_findByType(ob, eModifierType_Softbody);
+ ModifierData *md = modifiers_findByType(ob, eModifierType_Softbody);
- return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
+ return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
}
bool modifiers_isClothEnabled(Object *ob)
{
- ModifierData *md = modifiers_findByType(ob, eModifierType_Cloth);
+ ModifierData *md = modifiers_findByType(ob, eModifierType_Cloth);
- return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
+ return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
}
bool modifiers_isModifierEnabled(Object *ob, int modifierType)
{
- ModifierData *md = modifiers_findByType(ob, modifierType);
+ ModifierData *md = modifiers_findByType(ob, modifierType);
- return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
+ return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
}
bool modifiers_isParticleEnabled(Object *ob)
{
- ModifierData *md = modifiers_findByType(ob, eModifierType_ParticleSystem);
+ ModifierData *md = modifiers_findByType(ob, eModifierType_ParticleSystem);
- return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
+ return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
}
/**
@@ -470,122 +488,133 @@ bool modifiers_isParticleEnabled(Object *ob)
*/
bool modifier_isEnabled(const struct Scene *scene, ModifierData *md, int required_mode)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
-
- if ((md->mode & required_mode) != required_mode) return false;
- if (scene != NULL && mti->isDisabled && mti->isDisabled(scene, md, required_mode == eModifierMode_Render)) return false;
- if (md->mode & eModifierMode_DisableTemporary) return false;
- if ((required_mode & eModifierMode_Editmode) && !(mti->flags & eModifierTypeFlag_SupportsEditmode)) return false;
-
- return true;
-}
-
-CDMaskLink *modifiers_calcDataMasks(struct Scene *scene, Object *ob, ModifierData *md,
- const CustomData_MeshMasks *dataMask, int required_mode,
- ModifierData *previewmd, const CustomData_MeshMasks *previewmask)
-{
- CDMaskLink *dataMasks = NULL;
- CDMaskLink *curr, *prev;
-
- /* build a list of modifier data requirements in reverse order */
- for (; md; md = md->next) {
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
-
- curr = MEM_callocN(sizeof(CDMaskLink), "CDMaskLink");
-
- if (modifier_isEnabled(scene, md, required_mode)) {
- if (mti->requiredDataMask)
- mti->requiredDataMask(ob, md, &curr->mask);
-
- if (previewmd == md && previewmask != NULL) {
- CustomData_MeshMasks_update(&curr->mask, previewmask);
- }
- }
-
- /* prepend new datamask */
- curr->next = dataMasks;
- dataMasks = curr;
- }
-
- /* build the list of required data masks - each mask in the list must
- * include all elements of the masks that follow it
- *
- * note the list is currently in reverse order, so "masks that follow it"
- * actually means "masks that precede it" at the moment
- */
- for (curr = dataMasks, prev = NULL; curr; prev = curr, curr = curr->next) {
- if (prev) {
- CustomData_MeshMasks_update(&curr->mask, &prev->mask);
- }
- else {
- CustomData_MeshMasks_update(&curr->mask, dataMask);
- }
- }
-
- /* reverse the list so it's in the correct order */
- BLI_linklist_reverse((LinkNode **)&dataMasks);
-
- return dataMasks;
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+ if ((md->mode & required_mode) != required_mode)
+ return false;
+ if (scene != NULL && mti->isDisabled &&
+ mti->isDisabled(scene, md, required_mode == eModifierMode_Render))
+ return false;
+ if (md->mode & eModifierMode_DisableTemporary)
+ return false;
+ if ((required_mode & eModifierMode_Editmode) &&
+ !(mti->flags & eModifierTypeFlag_SupportsEditmode))
+ return false;
+
+ return true;
+}
+
+CDMaskLink *modifiers_calcDataMasks(struct Scene *scene,
+ Object *ob,
+ ModifierData *md,
+ const CustomData_MeshMasks *dataMask,
+ int required_mode,
+ ModifierData *previewmd,
+ const CustomData_MeshMasks *previewmask)
+{
+ CDMaskLink *dataMasks = NULL;
+ CDMaskLink *curr, *prev;
+
+ /* build a list of modifier data requirements in reverse order */
+ for (; md; md = md->next) {
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+ curr = MEM_callocN(sizeof(CDMaskLink), "CDMaskLink");
+
+ if (modifier_isEnabled(scene, md, required_mode)) {
+ if (mti->requiredDataMask)
+ mti->requiredDataMask(ob, md, &curr->mask);
+
+ if (previewmd == md && previewmask != NULL) {
+ CustomData_MeshMasks_update(&curr->mask, previewmask);
+ }
+ }
+
+ /* prepend new datamask */
+ curr->next = dataMasks;
+ dataMasks = curr;
+ }
+
+ /* build the list of required data masks - each mask in the list must
+ * include all elements of the masks that follow it
+ *
+ * note the list is currently in reverse order, so "masks that follow it"
+ * actually means "masks that precede it" at the moment
+ */
+ for (curr = dataMasks, prev = NULL; curr; prev = curr, curr = curr->next) {
+ if (prev) {
+ CustomData_MeshMasks_update(&curr->mask, &prev->mask);
+ }
+ else {
+ CustomData_MeshMasks_update(&curr->mask, dataMask);
+ }
+ }
+
+ /* reverse the list so it's in the correct order */
+ BLI_linklist_reverse((LinkNode **)&dataMasks);
+
+ return dataMasks;
}
ModifierData *modifiers_getLastPreview(struct Scene *scene, ModifierData *md, int required_mode)
{
- ModifierData *tmp_md = NULL;
+ ModifierData *tmp_md = NULL;
- if ((required_mode & ~eModifierMode_Editmode) != eModifierMode_Realtime)
- return tmp_md;
+ if ((required_mode & ~eModifierMode_Editmode) != eModifierMode_Realtime)
+ return tmp_md;
- /* Find the latest modifier in stack generating preview. */
- for (; md; md = md->next) {
- if (modifier_isEnabled(scene, md, required_mode) && modifier_isPreview(md))
- tmp_md = md;
- }
- return tmp_md;
+ /* Find the latest modifier in stack generating preview. */
+ for (; md; md = md->next) {
+ if (modifier_isEnabled(scene, md, required_mode) && modifier_isPreview(md))
+ tmp_md = md;
+ }
+ return tmp_md;
}
/* NOTE: This is to support old files from before Blender supported modifiers,
* in some cases versioning code updates these so for new files this will
* return an empty list. */
-ModifierData *modifiers_getVirtualModifierList(Object *ob, VirtualModifierData *virtualModifierData)
-{
- ModifierData *md;
-
- md = ob->modifiers.first;
-
- *virtualModifierData = virtualModifierCommonData;
-
- if (ob->parent) {
- if (ob->parent->type == OB_ARMATURE && ob->partype == PARSKEL) {
- virtualModifierData->amd.object = ob->parent;
- virtualModifierData->amd.modifier.next = md;
- virtualModifierData->amd.deformflag = ((bArmature *)(ob->parent->data))->deformflag;
- md = &virtualModifierData->amd.modifier;
- }
- else if (ob->parent->type == OB_CURVE && ob->partype == PARSKEL) {
- virtualModifierData->cmd.object = ob->parent;
- virtualModifierData->cmd.defaxis = ob->trackflag + 1;
- virtualModifierData->cmd.modifier.next = md;
- md = &virtualModifierData->cmd.modifier;
- }
- else if (ob->parent->type == OB_LATTICE && ob->partype == PARSKEL) {
- virtualModifierData->lmd.object = ob->parent;
- virtualModifierData->lmd.modifier.next = md;
- md = &virtualModifierData->lmd.modifier;
- }
- }
-
- /* shape key modifier, not yet for curves */
- if (ELEM(ob->type, OB_MESH, OB_LATTICE) && BKE_key_from_object(ob)) {
- if (ob->type == OB_MESH && (ob->shapeflag & OB_SHAPE_EDIT_MODE))
- virtualModifierData->smd.modifier.mode |= eModifierMode_Editmode | eModifierMode_OnCage;
- else
- virtualModifierData->smd.modifier.mode &= ~eModifierMode_Editmode | eModifierMode_OnCage;
-
- virtualModifierData->smd.modifier.next = md;
- md = &virtualModifierData->smd.modifier;
- }
-
- return md;
+ModifierData *modifiers_getVirtualModifierList(Object *ob,
+ VirtualModifierData *virtualModifierData)
+{
+ ModifierData *md;
+
+ md = ob->modifiers.first;
+
+ *virtualModifierData = virtualModifierCommonData;
+
+ if (ob->parent) {
+ if (ob->parent->type == OB_ARMATURE && ob->partype == PARSKEL) {
+ virtualModifierData->amd.object = ob->parent;
+ virtualModifierData->amd.modifier.next = md;
+ virtualModifierData->amd.deformflag = ((bArmature *)(ob->parent->data))->deformflag;
+ md = &virtualModifierData->amd.modifier;
+ }
+ else if (ob->parent->type == OB_CURVE && ob->partype == PARSKEL) {
+ virtualModifierData->cmd.object = ob->parent;
+ virtualModifierData->cmd.defaxis = ob->trackflag + 1;
+ virtualModifierData->cmd.modifier.next = md;
+ md = &virtualModifierData->cmd.modifier;
+ }
+ else if (ob->parent->type == OB_LATTICE && ob->partype == PARSKEL) {
+ virtualModifierData->lmd.object = ob->parent;
+ virtualModifierData->lmd.modifier.next = md;
+ md = &virtualModifierData->lmd.modifier;
+ }
+ }
+
+ /* shape key modifier, not yet for curves */
+ if (ELEM(ob->type, OB_MESH, OB_LATTICE) && BKE_key_from_object(ob)) {
+ if (ob->type == OB_MESH && (ob->shapeflag & OB_SHAPE_EDIT_MODE))
+ virtualModifierData->smd.modifier.mode |= eModifierMode_Editmode | eModifierMode_OnCage;
+ else
+ virtualModifierData->smd.modifier.mode &= ~eModifierMode_Editmode | eModifierMode_OnCage;
+
+ virtualModifierData->smd.modifier.next = md;
+ md = &virtualModifierData->smd.modifier;
+ }
+
+ return md;
}
/* Takes an object and returns its first selected armature, else just its armature
@@ -593,44 +622,44 @@ ModifierData *modifiers_getVirtualModifierList(Object *ob, VirtualModifierData *
*/
Object *modifiers_isDeformedByArmature(Object *ob)
{
- VirtualModifierData virtualModifierData;
- ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
- ArmatureModifierData *amd = NULL;
+ VirtualModifierData virtualModifierData;
+ ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
+ ArmatureModifierData *amd = NULL;
- /* return the first selected armature, this lets us use multiple armatures */
- for (; md; md = md->next) {
- if (md->type == eModifierType_Armature) {
- amd = (ArmatureModifierData *) md;
- if (amd->object && (amd->object->flag & SELECT))
- return amd->object;
- }
- }
+ /* return the first selected armature, this lets us use multiple armatures */
+ for (; md; md = md->next) {
+ if (md->type == eModifierType_Armature) {
+ amd = (ArmatureModifierData *)md;
+ if (amd->object && (amd->object->flag & SELECT))
+ return amd->object;
+ }
+ }
- if (amd) /* if were still here then return the last armature */
- return amd->object;
+ if (amd) /* if were still here then return the last armature */
+ return amd->object;
- return NULL;
+ return NULL;
}
Object *modifiers_isDeformedByMeshDeform(Object *ob)
{
- VirtualModifierData virtualModifierData;
- ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
- MeshDeformModifierData *mdmd = NULL;
+ VirtualModifierData virtualModifierData;
+ ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
+ MeshDeformModifierData *mdmd = NULL;
- /* return the first selected armature, this lets us use multiple armatures */
- for (; md; md = md->next) {
- if (md->type == eModifierType_MeshDeform) {
- mdmd = (MeshDeformModifierData *) md;
- if (mdmd->object && (mdmd->object->flag & SELECT))
- return mdmd->object;
- }
- }
+ /* return the first selected armature, this lets us use multiple armatures */
+ for (; md; md = md->next) {
+ if (md->type == eModifierType_MeshDeform) {
+ mdmd = (MeshDeformModifierData *)md;
+ if (mdmd->object && (mdmd->object->flag & SELECT))
+ return mdmd->object;
+ }
+ }
- if (mdmd) /* if were still here then return the last armature */
- return mdmd->object;
+ if (mdmd) /* if were still here then return the last armature */
+ return mdmd->object;
- return NULL;
+ return NULL;
}
/* Takes an object and returns its first selected lattice, else just its lattice
@@ -638,23 +667,23 @@ Object *modifiers_isDeformedByMeshDeform(Object *ob)
*/
Object *modifiers_isDeformedByLattice(Object *ob)
{
- VirtualModifierData virtualModifierData;
- ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
- LatticeModifierData *lmd = NULL;
+ VirtualModifierData virtualModifierData;
+ ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
+ LatticeModifierData *lmd = NULL;
- /* return the first selected lattice, this lets us use multiple lattices */
- for (; md; md = md->next) {
- if (md->type == eModifierType_Lattice) {
- lmd = (LatticeModifierData *) md;
- if (lmd->object && (lmd->object->flag & SELECT))
- return lmd->object;
- }
- }
+ /* return the first selected lattice, this lets us use multiple lattices */
+ for (; md; md = md->next) {
+ if (md->type == eModifierType_Lattice) {
+ lmd = (LatticeModifierData *)md;
+ if (lmd->object && (lmd->object->flag & SELECT))
+ return lmd->object;
+ }
+ }
- if (lmd) /* if were still here then return the last lattice */
- return lmd->object;
+ if (lmd) /* if were still here then return the last lattice */
+ return lmd->object;
- return NULL;
+ return NULL;
}
/* Takes an object and returns its first selected curve, else just its curve
@@ -662,110 +691,111 @@ Object *modifiers_isDeformedByLattice(Object *ob)
*/
Object *modifiers_isDeformedByCurve(Object *ob)
{
- VirtualModifierData virtualModifierData;
- ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
- CurveModifierData *cmd = NULL;
+ VirtualModifierData virtualModifierData;
+ ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
+ CurveModifierData *cmd = NULL;
- /* return the first selected curve, this lets us use multiple curves */
- for (; md; md = md->next) {
- if (md->type == eModifierType_Curve) {
- cmd = (CurveModifierData *) md;
- if (cmd->object && (cmd->object->flag & SELECT))
- return cmd->object;
- }
- }
+ /* return the first selected curve, this lets us use multiple curves */
+ for (; md; md = md->next) {
+ if (md->type == eModifierType_Curve) {
+ cmd = (CurveModifierData *)md;
+ if (cmd->object && (cmd->object->flag & SELECT))
+ return cmd->object;
+ }
+ }
- if (cmd) /* if were still here then return the last curve */
- return cmd->object;
+ if (cmd) /* if were still here then return the last curve */
+ return cmd->object;
- return NULL;
+ return NULL;
}
bool modifiers_usesArmature(Object *ob, bArmature *arm)
{
- VirtualModifierData virtualModifierData;
- ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
+ VirtualModifierData virtualModifierData;
+ ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
- for (; md; md = md->next) {
- if (md->type == eModifierType_Armature) {
- ArmatureModifierData *amd = (ArmatureModifierData *) md;
- if (amd->object && amd->object->data == arm)
- return true;
- }
- }
+ for (; md; md = md->next) {
+ if (md->type == eModifierType_Armature) {
+ ArmatureModifierData *amd = (ArmatureModifierData *)md;
+ if (amd->object && amd->object->data == arm)
+ return true;
+ }
+ }
- return false;
+ return false;
}
bool modifier_isCorrectableDeformed(ModifierData *md)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- return mti->deformMatricesEM != NULL;
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ return mti->deformMatricesEM != NULL;
}
bool modifiers_isCorrectableDeformed(struct Scene *scene, Object *ob)
{
- VirtualModifierData virtualModifierData;
- ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
- int required_mode = eModifierMode_Realtime;
+ VirtualModifierData virtualModifierData;
+ ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
+ int required_mode = eModifierMode_Realtime;
- if (ob->mode == OB_MODE_EDIT) {
- required_mode |= eModifierMode_Editmode;
- }
- for (; md; md = md->next) {
- if (!modifier_isEnabled(scene, md, required_mode)) {
- /* pass */
- }
- else if (modifier_isCorrectableDeformed(md)) {
- return true;
- }
- }
- return false;
+ if (ob->mode == OB_MODE_EDIT) {
+ required_mode |= eModifierMode_Editmode;
+ }
+ for (; md; md = md->next) {
+ if (!modifier_isEnabled(scene, md, required_mode)) {
+ /* pass */
+ }
+ else if (modifier_isCorrectableDeformed(md)) {
+ return true;
+ }
+ }
+ return false;
}
/* Check whether the given object has a modifier in its stack that uses WEIGHT_MCOL CD layer
* to preview something... Used by DynamicPaint and WeightVG currently. */
bool modifiers_isPreview(Object *ob)
{
- ModifierData *md = ob->modifiers.first;
+ ModifierData *md = ob->modifiers.first;
- for (; md; md = md->next) {
- if (modifier_isPreview(md))
- return true;
- }
+ for (; md; md = md->next) {
+ if (modifier_isPreview(md))
+ return true;
+ }
- return false;
+ return false;
}
void modifier_freeTemporaryData(ModifierData *md)
{
- if (md->type == eModifierType_Armature) {
- ArmatureModifierData *amd = (ArmatureModifierData *)md;
+ if (md->type == eModifierType_Armature) {
+ ArmatureModifierData *amd = (ArmatureModifierData *)md;
- if (amd->prevCos) {
- MEM_freeN(amd->prevCos);
- amd->prevCos = NULL;
- }
- }
+ if (amd->prevCos) {
+ MEM_freeN(amd->prevCos);
+ amd->prevCos = NULL;
+ }
+ }
}
/* ensure modifier correctness when changing ob->data */
void test_object_modifiers(Object *ob)
{
- ModifierData *md;
+ ModifierData *md;
- /* just multires checked for now, since only multires
- * modifies mesh data */
+ /* just multires checked for now, since only multires
+ * modifies mesh data */
- if (ob->type != OB_MESH) return;
+ if (ob->type != OB_MESH)
+ return;
- for (md = ob->modifiers.first; md; md = md->next) {
- if (md->type == eModifierType_Multires) {
- MultiresModifierData *mmd = (MultiresModifierData *)md;
+ for (md = ob->modifiers.first; md; md = md->next) {
+ if (md->type == eModifierType_Multires) {
+ MultiresModifierData *mmd = (MultiresModifierData *)md;
- multiresModifier_set_levels_from_disps(mmd, ob);
- }
- }
+ multiresModifier_set_levels_from_disps(mmd, ob);
+ }
+ }
}
/* where should this go?, it doesn't fit well anywhere :S - campbell */
@@ -781,84 +811,84 @@ void test_object_modifiers(Object *ob)
*/
const char *modifier_path_relbase(Main *bmain, Object *ob)
{
- if (G.relbase_valid || ID_IS_LINKED(ob)) {
- return ID_BLEND_PATH(bmain, &ob->id);
- }
- else {
- /* last resort, better then using "" which resolves to the current
- * working directory */
- return BKE_tempdir_session();
- }
+ if (G.relbase_valid || ID_IS_LINKED(ob)) {
+ return ID_BLEND_PATH(bmain, &ob->id);
+ }
+ else {
+ /* last resort, better then using "" which resolves to the current
+ * working directory */
+ return BKE_tempdir_session();
+ }
}
const char *modifier_path_relbase_from_global(Object *ob)
{
- if (G.relbase_valid || ID_IS_LINKED(ob)) {
- return ID_BLEND_PATH_FROM_GLOBAL(&ob->id);
- }
- else {
- /* last resort, better then using "" which resolves to the current
- * working directory */
- return BKE_tempdir_session();
- }
+ if (G.relbase_valid || ID_IS_LINKED(ob)) {
+ return ID_BLEND_PATH_FROM_GLOBAL(&ob->id);
+ }
+ else {
+ /* last resort, better then using "" which resolves to the current
+ * working directory */
+ return BKE_tempdir_session();
+ }
}
/* initializes the path with either */
void modifier_path_init(char *path, int path_maxlen, const char *name)
{
- /* elubie: changed this to default to the same dir as the render output
- * to prevent saving to C:\ on Windows */
- BLI_join_dirfile(path, path_maxlen,
- G.relbase_valid ? "//" : BKE_tempdir_session(),
- name);
+ /* elubie: changed this to default to the same dir as the render output
+ * to prevent saving to C:\ on Windows */
+ BLI_join_dirfile(path, path_maxlen, G.relbase_valid ? "//" : BKE_tempdir_session(), name);
}
-
/* wrapper around ModifierTypeInfo.applyModifier that ensures valid normals */
-struct Mesh *modwrap_applyModifier(
- ModifierData *md, const ModifierEvalContext *ctx,
- struct Mesh *me)
+struct Mesh *modwrap_applyModifier(ModifierData *md,
+ const ModifierEvalContext *ctx,
+ struct Mesh *me)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- BLI_assert(CustomData_has_layer(&me->pdata, CD_NORMAL) == false);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ BLI_assert(CustomData_has_layer(&me->pdata, CD_NORMAL) == false);
- if (mti->dependsOnNormals && mti->dependsOnNormals(md)) {
- BKE_mesh_calc_normals(me);
- }
- return mti->applyModifier(md, ctx, me);
+ if (mti->dependsOnNormals && mti->dependsOnNormals(md)) {
+ BKE_mesh_calc_normals(me);
+ }
+ return mti->applyModifier(md, ctx, me);
}
-void modwrap_deformVerts(
- ModifierData *md, const ModifierEvalContext *ctx,
- Mesh *me, float (*vertexCos)[3], int numVerts)
+void modwrap_deformVerts(ModifierData *md,
+ const ModifierEvalContext *ctx,
+ Mesh *me,
+ float (*vertexCos)[3],
+ int numVerts)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- BLI_assert(!me || CustomData_has_layer(&me->pdata, CD_NORMAL) == false);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ BLI_assert(!me || CustomData_has_layer(&me->pdata, CD_NORMAL) == false);
- if (me && mti->dependsOnNormals && mti->dependsOnNormals(md)) {
- BKE_mesh_calc_normals(me);
- }
- mti->deformVerts(md, ctx, me, vertexCos, numVerts);
+ if (me && mti->dependsOnNormals && mti->dependsOnNormals(md)) {
+ BKE_mesh_calc_normals(me);
+ }
+ mti->deformVerts(md, ctx, me, vertexCos, numVerts);
}
-void modwrap_deformVertsEM(
- ModifierData *md, const ModifierEvalContext *ctx,
- struct BMEditMesh *em, Mesh *me,
- float (*vertexCos)[3], int numVerts)
+void modwrap_deformVertsEM(ModifierData *md,
+ const ModifierEvalContext *ctx,
+ struct BMEditMesh *em,
+ Mesh *me,
+ float (*vertexCos)[3],
+ int numVerts)
{
- const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- BLI_assert(!me || CustomData_has_layer(&me->pdata, CD_NORMAL) == false);
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ BLI_assert(!me || CustomData_has_layer(&me->pdata, CD_NORMAL) == false);
- if (me && mti->dependsOnNormals && mti->dependsOnNormals(md)) {
- BKE_mesh_calc_normals(me);
- }
- mti->deformVertsEM(md, ctx, em, me, vertexCos, numVerts);
+ if (me && mti->dependsOnNormals && mti->dependsOnNormals(md)) {
+ BKE_mesh_calc_normals(me);
+ }
+ mti->deformVertsEM(md, ctx, em, me, vertexCos, numVerts);
}
/* end modifier callback wrappers */
-
/**
* Get evaluated mesh for other evaluated object, which is used as an operand for the modifier,
* e.g. second operand for boolean modifier.
@@ -867,41 +897,42 @@ void modwrap_deformVertsEM(
* \param get_cage_mesh Return evaluated mesh with only deforming modifiers applied
* (i.e. mesh topology remains the same as original one, a.k.a. 'cage' mesh).
*/
-Mesh *BKE_modifier_get_evaluated_mesh_from_evaluated_object(Object *ob_eval, const bool get_cage_mesh)
+Mesh *BKE_modifier_get_evaluated_mesh_from_evaluated_object(Object *ob_eval,
+ const bool get_cage_mesh)
{
- Mesh *me = NULL;
+ Mesh *me = NULL;
- if ((ob_eval->type == OB_MESH) && (ob_eval->mode & OB_MODE_EDIT)) {
- /* In EditMode, evaluated mesh is stored in BMEditMesh, not the object... */
- BMEditMesh *em = BKE_editmesh_from_object(ob_eval);
- if (em != NULL) { /* em might not exist yet in some cases, just after loading a .blend file, see T57878. */
- me = (get_cage_mesh && em->mesh_eval_cage != NULL) ? em->mesh_eval_cage : em->mesh_eval_final;
- }
- }
- if (me == NULL) {
- me = (get_cage_mesh && ob_eval->runtime.mesh_deform_eval != NULL) ? ob_eval->runtime.mesh_deform_eval :
- ob_eval->runtime.mesh_eval;
- }
+ if ((ob_eval->type == OB_MESH) && (ob_eval->mode & OB_MODE_EDIT)) {
+ /* In EditMode, evaluated mesh is stored in BMEditMesh, not the object... */
+ BMEditMesh *em = BKE_editmesh_from_object(ob_eval);
+ if (em !=
+ NULL) { /* em might not exist yet in some cases, just after loading a .blend file, see T57878. */
+ me = (get_cage_mesh && em->mesh_eval_cage != NULL) ? em->mesh_eval_cage :
+ em->mesh_eval_final;
+ }
+ }
+ if (me == NULL) {
+ me = (get_cage_mesh && ob_eval->runtime.mesh_deform_eval != NULL) ?
+ ob_eval->runtime.mesh_deform_eval :
+ ob_eval->runtime.mesh_eval;
+ }
- return me;
+ return me;
}
ModifierData *modifier_get_original(ModifierData *md)
{
- if (md->orig_modifier_data == NULL) {
- return md;
- }
- return md->orig_modifier_data;
+ if (md->orig_modifier_data == NULL) {
+ return md;
+ }
+ return md->orig_modifier_data;
}
-struct ModifierData *modifier_get_evaluated(
- Depsgraph *depsgraph,
- Object *object,
- ModifierData *md)
+struct ModifierData *modifier_get_evaluated(Depsgraph *depsgraph, Object *object, ModifierData *md)
{
- Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
- if (object_eval == object) {
- return md;
- }
- return modifiers_findByName(object_eval, md->name);
+ Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
+ if (object_eval == object) {
+ return md;
+ }
+ return modifiers_findByName(object_eval, md->name);
}