Modifiers: Stop using md->scene in isDisabled() callback
This is first commit in series of changes to get rid of md->scene.
This commit is contained in:
parent
991d4f1c6b
commit
6427141f7b
|
@ -315,7 +315,7 @@ typedef struct ModifierTypeInfo {
|
|||
*
|
||||
* This function is optional (assumes never disabled if not present).
|
||||
*/
|
||||
bool (*isDisabled)(struct ModifierData *md, int userRenderParams);
|
||||
bool (*isDisabled)(const struct Scene *scene, struct ModifierData *md, int userRenderParams);
|
||||
|
||||
/* Add the appropriate relations to the dependency graph.
|
||||
*
|
||||
|
@ -397,7 +397,7 @@ bool modifier_couldBeCage(struct Scene *scene, struct ModifierData *md)
|
|||
bool modifier_isCorrectableDeformed(struct ModifierData *md);
|
||||
bool modifier_isSameTopology(ModifierData *md);
|
||||
bool modifier_isNonGeometrical(ModifierData *md);
|
||||
bool modifier_isEnabled(struct Scene *scene, struct ModifierData *md, int required_mode);
|
||||
bool modifier_isEnabled(const struct Scene *scene, struct ModifierData *md, int required_mode);
|
||||
void modifier_setError(struct ModifierData *md, const char *format, ...) ATTR_PRINTF_FORMAT(2, 3);
|
||||
bool modifier_isPreview(struct ModifierData *md);
|
||||
|
||||
|
|
|
@ -1050,7 +1050,7 @@ void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, Scene *scene, Objec
|
|||
if (!(mti->flags & eModifierTypeFlag_AcceptsLattice)) continue;
|
||||
if (!(md->mode & eModifierMode_Realtime)) continue;
|
||||
if (editmode && !(md->mode & eModifierMode_Editmode)) continue;
|
||||
if (mti->isDisabled && mti->isDisabled(md, 0)) continue;
|
||||
if (mti->isDisabled && mti->isDisabled(scene, md, 0)) continue;
|
||||
if (mti->type != eModifierTypeType_OnlyDeform) continue;
|
||||
|
||||
if (!vertexCos) vertexCos = BKE_lattice_vertexcos_get(ob_orig, &numVerts);
|
||||
|
|
|
@ -1156,7 +1156,7 @@ Mesh *BKE_mesh_create_derived_for_modifier(
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (mti->isDisabled && mti->isDisabled(md, 0)) {
|
||||
if (mti->isDisabled && mti->isDisabled(scene, md, 0)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -349,9 +349,7 @@ bool modifier_supportsCage(struct Scene *scene, ModifierData *md)
|
|||
{
|
||||
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
|
||||
md->scene = scene;
|
||||
|
||||
return ((!mti->isDisabled || !mti->isDisabled(md, 0)) &&
|
||||
return ((!mti->isDisabled || !mti->isDisabled(scene, md, 0)) &&
|
||||
(mti->flags & eModifierTypeFlag_SupportsEditmode) &&
|
||||
modifier_supportsMapping(md));
|
||||
}
|
||||
|
@ -360,11 +358,9 @@ bool modifier_couldBeCage(struct Scene *scene, ModifierData *md)
|
|||
{
|
||||
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
|
||||
md->scene = scene;
|
||||
|
||||
return ((md->mode & eModifierMode_Realtime) &&
|
||||
(md->mode & eModifierMode_Editmode) &&
|
||||
(!mti->isDisabled || !mti->isDisabled(md, 0)) &&
|
||||
(!mti->isDisabled || !mti->isDisabled(scene, md, 0)) &&
|
||||
modifier_supportsMapping(md));
|
||||
}
|
||||
|
||||
|
@ -421,9 +417,7 @@ int modifiers_getCageIndex(struct Scene *scene, Object *ob, int *r_lastPossibleC
|
|||
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
bool supports_mapping;
|
||||
|
||||
md->scene = scene;
|
||||
|
||||
if (mti->isDisabled && mti->isDisabled(md, 0)) continue;
|
||||
if (mti->isDisabled && mti->isDisabled(scene, md, 0)) continue;
|
||||
if (!(mti->flags & eModifierTypeFlag_SupportsEditmode)) continue;
|
||||
if (md->mode & eModifierMode_DisableTemporary) continue;
|
||||
|
||||
|
@ -479,14 +473,12 @@ bool modifiers_isParticleEnabled(Object *ob)
|
|||
*
|
||||
* \param scene Current scene, may be NULL, in which case isDisabled callback of the modifier is never called.
|
||||
*/
|
||||
bool modifier_isEnabled(struct Scene *scene, ModifierData *md, int required_mode)
|
||||
bool modifier_isEnabled(const struct Scene *scene, ModifierData *md, int required_mode)
|
||||
{
|
||||
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
|
||||
md->scene = scene;
|
||||
|
||||
if ((md->mode & required_mode) != required_mode) return false;
|
||||
if (scene != NULL && mti->isDisabled && mti->isDisabled(md, required_mode == eModifierMode_Render)) 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;
|
||||
|
||||
|
|
|
@ -1356,8 +1356,7 @@ static uiLayout *draw_modifier(
|
|||
UI_block_emboss_set(block, UI_EMBOSS);
|
||||
|
||||
/* modifier name */
|
||||
md->scene = scene;
|
||||
if (mti->isDisabled && mti->isDisabled(md, 0)) {
|
||||
if (mti->isDisabled && mti->isDisabled(scene, md, 0)) {
|
||||
uiLayoutSetRedAlert(row, true);
|
||||
}
|
||||
uiItemR(row, &ptr, "name", 0, "", ICON_NONE);
|
||||
|
|
|
@ -529,7 +529,7 @@ static int modifier_apply_shape(
|
|||
|
||||
md->scene = scene;
|
||||
|
||||
if (mti->isDisabled && mti->isDisabled(md, 0)) {
|
||||
if (mti->isDisabled && mti->isDisabled(scene, md, 0)) {
|
||||
BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply");
|
||||
return 0;
|
||||
}
|
||||
|
@ -589,7 +589,7 @@ static int modifier_apply_obdata(ReportList *reports, Depsgraph *depsgraph, Scen
|
|||
|
||||
md->scene = scene;
|
||||
|
||||
if (mti->isDisabled && mti->isDisabled(md, 0)) {
|
||||
if (mti->isDisabled && mti->isDisabled(scene, md, 0)) {
|
||||
BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply");
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *UNUSED(
|
|||
return dataMask;
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
ArmatureModifierData *amd = (ArmatureModifierData *) md;
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ static void initData(ModifierData *md)
|
|||
bmd->double_threshold = 1e-6f;
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
BooleanModifierData *bmd = (BooleanModifierData *) md;
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ static void initData(ModifierData *md)
|
|||
cmd->object = NULL;
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
CastModifierData *cmd = (CastModifierData *) md;
|
||||
short flag;
|
||||
|
|
|
@ -71,7 +71,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
|
|||
return dataMask;
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(userRenderParams))
|
||||
static bool isDisabled(const Scene *UNUSED(scene), ModifierData *md, int UNUSED(userRenderParams))
|
||||
{
|
||||
CurveModifierData *cmd = (CurveModifierData *) md;
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
|
|||
}
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
DataTransferModifierData *dtmd = (DataTransferModifierData *) md;
|
||||
/* If no source object, bypass. */
|
||||
|
|
|
@ -137,7 +137,7 @@ static void foreachTexLink(
|
|||
walk(userData, ob, md, "texture");
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
DisplaceModifierData *dmd = (DisplaceModifierData *) md;
|
||||
return ((!dmd->texture && dmd->direction == MOD_DISP_DIR_RGB_XYZ) || dmd->strength == 0.0f);
|
||||
|
|
|
@ -96,7 +96,7 @@ static void freeData(ModifierData *md)
|
|||
MEM_SAFE_FREE(hmd->indexar);
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
HookModifierData *hmd = (HookModifierData *) md;
|
||||
|
||||
|
|
|
@ -715,7 +715,7 @@ static void copyData(const ModifierData *md, ModifierData *target)
|
|||
tlmd->cache_system = NULL;
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
LaplacianDeformModifierData *lmd = (LaplacianDeformModifierData *)md;
|
||||
if (lmd->anchor_grp_name[0]) return 0;
|
||||
|
|
|
@ -81,7 +81,7 @@ struct BLaplacianSystem {
|
|||
typedef struct BLaplacianSystem LaplacianSystem;
|
||||
|
||||
static CustomDataMask required_data_mask(Object *ob, ModifierData *md);
|
||||
static bool is_disabled(ModifierData *md, int useRenderParams);
|
||||
static bool is_disabled(const struct Scene *UNUSED(scene), ModifierData *md, int useRenderParams);
|
||||
static float compute_volume(const float center[3], float (*vertexCos)[3], const MPoly *mpoly, int numPolys, const MLoop *mloop);
|
||||
static LaplacianSystem *init_laplacian_system(int a_numEdges, int a_numPolys, int a_numLoops, int a_numVerts);
|
||||
static void delete_laplacian_system(LaplacianSystem *sys);
|
||||
|
@ -474,7 +474,7 @@ static void init_data(ModifierData *md)
|
|||
smd->defgrp_name[0] = '\0';
|
||||
}
|
||||
|
||||
static bool is_disabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool is_disabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
LaplacianSmoothModifierData *smd = (LaplacianSmoothModifierData *) md;
|
||||
short flag;
|
||||
|
|
|
@ -67,7 +67,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
|
|||
return dataMask;
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(userRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(userRenderParams))
|
||||
{
|
||||
LatticeModifierData *lmd = (LatticeModifierData *) md;
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ static bool dependsOnTime(ModifierData *md)
|
|||
return (mcmd->play_mode == MOD_MESHCACHE_PLAY_CFEA);
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
MeshCacheModifierData *mcmd = (MeshCacheModifierData *) md;
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
|
|||
return dataMask;
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
MeshDeformModifierData *mmd = (MeshDeformModifierData *) md;
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ static void freeData(ModifierData *md)
|
|||
}
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *) md;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
* no other functions will be called
|
||||
*/
|
||||
|
||||
static bool isDisabled(ModifierData *UNUSED(md), int UNUSED(userRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *UNUSED(md), int UNUSED(userRenderParams))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -525,7 +525,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
|
|||
walk(userData, ob, &enmd->target, IDWALK_CB_NOP);
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
NormalEditModifierData *enmd = (NormalEditModifierData *)md;
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
|
|||
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int useRenderParams)
|
||||
static bool isDisabled(const struct Scene *scene, ModifierData *md, int useRenderParams)
|
||||
{
|
||||
ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *)md;
|
||||
ParticleSystem *psys;
|
||||
|
@ -112,7 +112,7 @@ static bool isDisabled(ModifierData *md, int useRenderParams)
|
|||
if (useRenderParams) required_mode = eModifierMode_Render;
|
||||
else required_mode = eModifierMode_Realtime;
|
||||
|
||||
if (!modifier_isEnabled(md->scene, ob_md, required_mode))
|
||||
if (!modifier_isEnabled(scene, ob_md, required_mode))
|
||||
return true;
|
||||
|
||||
break;
|
||||
|
|
|
@ -82,7 +82,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
|
|||
return dataMask;
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *) md;
|
||||
return !smd->target;
|
||||
|
|
|
@ -61,7 +61,7 @@ static void initData(ModifierData *md)
|
|||
smd->defgrp_name[0] = '\0';
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
SmoothModifierData *smd = (SmoothModifierData *) md;
|
||||
short flag;
|
||||
|
|
|
@ -91,12 +91,12 @@ static void freeData(ModifierData *md)
|
|||
}
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int useRenderParams)
|
||||
static bool isDisabled(const Scene *scene, ModifierData *md, int useRenderParams)
|
||||
{
|
||||
SubsurfModifierData *smd = (SubsurfModifierData *) md;
|
||||
int levels = (useRenderParams) ? smd->renderLevels : smd->levels;
|
||||
|
||||
return get_render_subsurf_level(&md->scene->r, levels, useRenderParams != 0) == 0;
|
||||
return get_render_subsurf_level(&scene->r, levels, useRenderParams != 0) == 0;
|
||||
}
|
||||
|
||||
static DerivedMesh *applyModifier(
|
||||
|
|
|
@ -1195,7 +1195,7 @@ static void deformVertsEM(
|
|||
surfacedeformModifier_do(md, ctx, vertexCos, numVerts, ctx->object);
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@ static void freeData(ModifierData *md)
|
|||
}
|
||||
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(userRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(userRenderParams))
|
||||
{
|
||||
WarpModifierData *wmd = (WarpModifierData *) md;
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
|
|||
}
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
WeightVGEditModifierData *wmd = (WeightVGEditModifierData *) md;
|
||||
/* If no vertex group, bypass. */
|
||||
|
|
|
@ -185,7 +185,7 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
|
|||
}
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md;
|
||||
/* If no vertex group, bypass. */
|
||||
|
|
|
@ -357,7 +357,7 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
|
|||
}
|
||||
}
|
||||
|
||||
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
||||
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, int UNUSED(useRenderParams))
|
||||
{
|
||||
WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *) md;
|
||||
/* If no vertex group, bypass. */
|
||||
|
|
Loading…
Reference in New Issue