Merge branch 'master' into blender2.8
This commit is contained in:
@@ -129,6 +129,19 @@ typedef enum ModifierApplyFlag {
|
|||||||
} ModifierApplyFlag;
|
} ModifierApplyFlag;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct ModifierUpdateDepsgraphContext {
|
||||||
|
struct Main *bmain;
|
||||||
|
struct Scene *scene;
|
||||||
|
struct Object *object;
|
||||||
|
|
||||||
|
/* Old depsgraph node handle. */
|
||||||
|
struct DagForest *forest;
|
||||||
|
struct DagNode *obNode;
|
||||||
|
|
||||||
|
/* new depsgraph node handle. */
|
||||||
|
struct DepsNodeHandle *node;
|
||||||
|
} ModifierUpdateDepsgraphContext;
|
||||||
|
|
||||||
typedef struct ModifierTypeInfo {
|
typedef struct ModifierTypeInfo {
|
||||||
/* The user visible name for this modifier */
|
/* The user visible name for this modifier */
|
||||||
char name[32];
|
char name[32];
|
||||||
@@ -268,10 +281,7 @@ typedef struct ModifierTypeInfo {
|
|||||||
* This function is optional.
|
* This function is optional.
|
||||||
*/
|
*/
|
||||||
void (*updateDepsgraph)(struct ModifierData *md,
|
void (*updateDepsgraph)(struct ModifierData *md,
|
||||||
struct Main *bmain,
|
const ModifierUpdateDepsgraphContext* ctx);
|
||||||
struct Scene *scene,
|
|
||||||
struct Object *ob,
|
|
||||||
struct DepsNodeHandle *node);
|
|
||||||
|
|
||||||
/* Should return true if the modifier needs to be recalculated on time
|
/* Should return true if the modifier needs to be recalculated on time
|
||||||
* changes.
|
* changes.
|
||||||
|
@@ -1642,16 +1642,17 @@ void DepsgraphRelationBuilder::build_obdata_geom(Object *object)
|
|||||||
|
|
||||||
/* Modifiers */
|
/* Modifiers */
|
||||||
if (object->modifiers.first != NULL) {
|
if (object->modifiers.first != NULL) {
|
||||||
|
ModifierUpdateDepsgraphContext ctx = {};
|
||||||
|
ctx.bmain = bmain_;
|
||||||
|
ctx.scene = scene_;
|
||||||
|
ctx.object = object;
|
||||||
|
|
||||||
LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) {
|
LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) {
|
||||||
const ModifierTypeInfo *mti = modifierType_getInfo((ModifierType)md->type);
|
const ModifierTypeInfo *mti = modifierType_getInfo((ModifierType)md->type);
|
||||||
if (mti->updateDepsgraph) {
|
if (mti->updateDepsgraph) {
|
||||||
DepsNodeHandle handle = create_node_handle(obdata_ubereval_key);
|
DepsNodeHandle handle = create_node_handle(obdata_ubereval_key);
|
||||||
mti->updateDepsgraph(
|
ctx.node = reinterpret_cast< ::DepsNodeHandle* >(&handle);
|
||||||
md,
|
mti->updateDepsgraph(md, &ctx);
|
||||||
bmain_,
|
|
||||||
scene_,
|
|
||||||
object,
|
|
||||||
reinterpret_cast< ::DepsNodeHandle* >(&handle));
|
|
||||||
}
|
}
|
||||||
if (BKE_object_modifier_use_time(object, md)) {
|
if (BKE_object_modifier_use_time(object, md)) {
|
||||||
TimeSourceKey time_src_key;
|
TimeSourceKey time_src_key;
|
||||||
|
@@ -97,16 +97,12 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &amd->object, IDWALK_CB_NOP);
|
walk(userData, ob, &amd->object, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
ArmatureModifierData *amd = (ArmatureModifierData *)md;
|
ArmatureModifierData *amd = (ArmatureModifierData *)md;
|
||||||
if (amd->object != NULL) {
|
if (amd->object != NULL) {
|
||||||
DEG_add_object_relation(node, amd->object, DEG_OB_COMP_EVAL_POSE, "Armature Modifier");
|
DEG_add_object_relation(ctx->node, amd->object, DEG_OB_COMP_EVAL_POSE, "Armature Modifier");
|
||||||
DEG_add_object_relation(node, amd->object, DEG_OB_COMP_TRANSFORM, "Armature Modifier");
|
DEG_add_object_relation(ctx->node, amd->object, DEG_OB_COMP_TRANSFORM, "Armature Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -96,26 +96,22 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &amd->offset_ob, IDWALK_CB_NOP);
|
walk(userData, ob, &amd->offset_ob, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
ArrayModifierData *amd = (ArrayModifierData *)md;
|
ArrayModifierData *amd = (ArrayModifierData *)md;
|
||||||
if (amd->start_cap != NULL) {
|
if (amd->start_cap != NULL) {
|
||||||
DEG_add_object_relation(node, amd->start_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier Start Cap");
|
DEG_add_object_relation(ctx->node, amd->start_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier Start Cap");
|
||||||
}
|
}
|
||||||
if (amd->end_cap != NULL) {
|
if (amd->end_cap != NULL) {
|
||||||
DEG_add_object_relation(node, amd->end_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier End Cap");
|
DEG_add_object_relation(ctx->node, amd->end_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier End Cap");
|
||||||
}
|
}
|
||||||
if (amd->curve_ob) {
|
if (amd->curve_ob) {
|
||||||
struct Depsgraph *depsgraph = DEG_get_graph_from_handle(node);
|
struct Depsgraph *depsgraph = DEG_get_graph_from_handle(ctx->node);
|
||||||
DEG_add_object_relation(node, amd->curve_ob, DEG_OB_COMP_GEOMETRY, "Array Modifier Curve");
|
DEG_add_object_relation(ctx->node, amd->curve_ob, DEG_OB_COMP_GEOMETRY, "Array Modifier Curve");
|
||||||
DEG_add_special_eval_flag(depsgraph, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH);
|
DEG_add_special_eval_flag(depsgraph, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH);
|
||||||
}
|
}
|
||||||
if (amd->offset_ob != NULL) {
|
if (amd->offset_ob != NULL) {
|
||||||
DEG_add_object_relation(node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Array Modifier Offset");
|
DEG_add_object_relation(ctx->node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Array Modifier Offset");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -95,19 +95,15 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &bmd->object, IDWALK_CB_NOP);
|
walk(userData, ob, &bmd->object, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
BooleanModifierData *bmd = (BooleanModifierData *)md;
|
BooleanModifierData *bmd = (BooleanModifierData *)md;
|
||||||
if (bmd->object != NULL) {
|
if (bmd->object != NULL) {
|
||||||
DEG_add_object_relation(node, bmd->object, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
|
DEG_add_object_relation(ctx->node, bmd->object, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
|
||||||
DEG_add_object_relation(node, bmd->object, DEG_OB_COMP_GEOMETRY, "Boolean Modifier");
|
DEG_add_object_relation(ctx->node, bmd->object, DEG_OB_COMP_GEOMETRY, "Boolean Modifier");
|
||||||
}
|
}
|
||||||
/* We need own transformation as well. */
|
/* We need own transformation as well. */
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
static DerivedMesh *get_quick_derivedMesh(
|
static DerivedMesh *get_quick_derivedMesh(
|
||||||
|
@@ -102,16 +102,12 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &cmd->object, IDWALK_CB_NOP);
|
walk(userData, ob, &cmd->object, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *object,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
CastModifierData *cmd = (CastModifierData *)md;
|
CastModifierData *cmd = (CastModifierData *)md;
|
||||||
if (cmd->object != NULL) {
|
if (cmd->object != NULL) {
|
||||||
DEG_add_object_relation(node, cmd->object, DEG_OB_COMP_TRANSFORM, "Cast Modifier");
|
DEG_add_object_relation(ctx->node, cmd->object, DEG_OB_COMP_TRANSFORM, "Cast Modifier");
|
||||||
DEG_add_object_relation(node, object, DEG_OB_COMP_TRANSFORM, "Cast Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Cast Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -114,18 +114,14 @@ static void deformVerts(ModifierData *md, const struct EvaluationContext *eval_c
|
|||||||
dm->release(dm);
|
dm->release(dm);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *scene,
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
ClothModifierData *clmd = (ClothModifierData *)md;
|
ClothModifierData *clmd = (ClothModifierData *)md;
|
||||||
if (clmd != NULL) {
|
if (clmd != NULL) {
|
||||||
/* Actual code uses get_collisionobjects */
|
/* Actual code uses get_collisionobjects */
|
||||||
DEG_add_collision_relations(node, scene, ob, clmd->coll_parms->group, eModifierType_Collision, NULL, true, "Cloth Collision");
|
DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, clmd->coll_parms->group, eModifierType_Collision, NULL, true, "Cloth Collision");
|
||||||
|
|
||||||
DEG_add_forcefield_relations(node, scene, ob, clmd->sim_parms->effector_weights, true, 0, "Cloth Field");
|
DEG_add_forcefield_relations(ctx->node, ctx->scene, ctx->object, clmd->sim_parms->effector_weights, true, 0, "Cloth Field");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -93,11 +93,7 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &cmd->object, IDWALK_CB_NOP);
|
walk(userData, ob, &cmd->object, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *object,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
CurveModifierData *cmd = (CurveModifierData *)md;
|
CurveModifierData *cmd = (CurveModifierData *)md;
|
||||||
if (cmd->object != NULL) {
|
if (cmd->object != NULL) {
|
||||||
@@ -107,12 +103,12 @@ static void updateDepsgraph(ModifierData *md,
|
|||||||
/* TODO(sergey): Currently path is evaluated as a part of modifier stack,
|
/* TODO(sergey): Currently path is evaluated as a part of modifier stack,
|
||||||
* might be changed in the future.
|
* might be changed in the future.
|
||||||
*/
|
*/
|
||||||
struct Depsgraph *depsgraph = DEG_get_graph_from_handle(node);
|
struct Depsgraph *depsgraph = DEG_get_graph_from_handle(ctx->node);
|
||||||
DEG_add_object_relation(node, cmd->object, DEG_OB_COMP_GEOMETRY, "Curve Modifier");
|
DEG_add_object_relation(ctx->node, cmd->object, DEG_OB_COMP_GEOMETRY, "Curve Modifier");
|
||||||
DEG_add_special_eval_flag(depsgraph, &cmd->object->id, DAG_EVAL_NEED_CURVE_PATH);
|
DEG_add_special_eval_flag(depsgraph, &cmd->object->id, DAG_EVAL_NEED_CURVE_PATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEG_add_object_relation(node, object, DEG_OB_COMP_TRANSFORM, "Curve Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Curve Modifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deformVerts(ModifierData *md, const struct EvaluationContext *UNUSED(eval_ctx),
|
static void deformVerts(ModifierData *md, const struct EvaluationContext *UNUSED(eval_ctx),
|
||||||
|
@@ -125,15 +125,11 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &dtmd->ob_source, IDWALK_CB_NOP);
|
walk(userData, ob, &dtmd->ob_source, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
DataTransferModifierData *dtmd = (DataTransferModifierData *) md;
|
DataTransferModifierData *dtmd = (DataTransferModifierData *) md;
|
||||||
if (dtmd->ob_source != NULL) {
|
if (dtmd->ob_source != NULL) {
|
||||||
DEG_add_object_relation(node, dtmd->ob_source, DEG_OB_COMP_GEOMETRY, "DataTransfer Modifier");
|
DEG_add_object_relation(ctx->node, dtmd->ob_source, DEG_OB_COMP_GEOMETRY, "DataTransfer Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -154,21 +154,17 @@ static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
|||||||
return ((!dmd->texture && dmd->direction == MOD_DISP_DIR_RGB_XYZ) || dmd->strength == 0.0f);
|
return ((!dmd->texture && dmd->direction == MOD_DISP_DIR_RGB_XYZ) || dmd->strength == 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
DisplaceModifierData *dmd = (DisplaceModifierData *)md;
|
DisplaceModifierData *dmd = (DisplaceModifierData *)md;
|
||||||
if (dmd->map_object != NULL && dmd->texmapping == MOD_DISP_MAP_OBJECT) {
|
if (dmd->map_object != NULL && dmd->texmapping == MOD_DISP_MAP_OBJECT) {
|
||||||
DEG_add_object_relation(node, dmd->map_object, DEG_OB_COMP_TRANSFORM, "Displace Modifier");
|
DEG_add_object_relation(ctx->node, dmd->map_object, DEG_OB_COMP_TRANSFORM, "Displace Modifier");
|
||||||
}
|
}
|
||||||
if (dmd->texmapping == MOD_DISP_MAP_GLOBAL ||
|
if (dmd->texmapping == MOD_DISP_MAP_GLOBAL ||
|
||||||
(ELEM(dmd->direction, MOD_DISP_DIR_X, MOD_DISP_DIR_Y, MOD_DISP_DIR_Z, MOD_DISP_DIR_RGB_XYZ) &&
|
(ELEM(dmd->direction, MOD_DISP_DIR_X, MOD_DISP_DIR_Y, MOD_DISP_DIR_Z, MOD_DISP_DIR_RGB_XYZ) &&
|
||||||
dmd->space == MOD_DISP_SPACE_GLOBAL))
|
dmd->space == MOD_DISP_SPACE_GLOBAL))
|
||||||
{
|
{
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Displace Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Displace Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -132,22 +132,18 @@ static bool is_brush_cb(Object *UNUSED(ob), ModifierData *pmd)
|
|||||||
return ((DynamicPaintModifierData *)pmd)->brush != NULL;
|
return ((DynamicPaintModifierData *)pmd)->brush != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *scene,
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
|
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
|
||||||
/* Add relation from canvases to all brush objects. */
|
/* Add relation from canvases to all brush objects. */
|
||||||
if (pmd->canvas != NULL) {
|
if (pmd->canvas != NULL) {
|
||||||
for (DynamicPaintSurface *surface = pmd->canvas->surfaces.first; surface; surface = surface->next) {
|
for (DynamicPaintSurface *surface = pmd->canvas->surfaces.first; surface; surface = surface->next) {
|
||||||
if (surface->effect & MOD_DPAINT_EFFECT_DO_DRIP) {
|
if (surface->effect & MOD_DPAINT_EFFECT_DO_DRIP) {
|
||||||
DEG_add_forcefield_relations(node, scene, ob, surface->effector_weights, true, 0, "Dynamic Paint Field");
|
DEG_add_forcefield_relations(ctx->node, ctx->scene, ctx->object, surface->effector_weights, true, 0, "Dynamic Paint Field");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Actual code uses custom loop over group/scene without layer checks in dynamicPaint_doStep */
|
/* Actual code uses custom loop over group/scene without layer checks in dynamicPaint_doStep */
|
||||||
DEG_add_collision_relations(node, scene, ob, surface->brush_group, eModifierType_DynamicPaint, is_brush_cb, false, "Dynamic Paint Brush");
|
DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, surface->brush_group, eModifierType_DynamicPaint, is_brush_cb, false, "Dynamic Paint Brush");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -103,24 +103,20 @@ static DerivedMesh *applyModifier(ModifierData *md, const struct EvaluationConte
|
|||||||
return result ? result : dm;
|
return result ? result : dm;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *scene,
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;
|
FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;
|
||||||
if (fluidmd && fluidmd->fss) {
|
if (fluidmd && fluidmd->fss) {
|
||||||
if (fluidmd->fss->type == OB_FLUIDSIM_DOMAIN) {
|
if (fluidmd->fss->type == OB_FLUIDSIM_DOMAIN) {
|
||||||
FOREACH_SCENE_OBJECT(scene, ob1)
|
FOREACH_SCENE_OBJECT(ctx->scene, ob1)
|
||||||
{
|
{
|
||||||
if (ob1 != ob) {
|
if (ob1 != ctx->object) {
|
||||||
FluidsimModifierData *fluidmdtmp =
|
FluidsimModifierData *fluidmdtmp =
|
||||||
(FluidsimModifierData *)modifiers_findByType(ob1, eModifierType_Fluidsim);
|
(FluidsimModifierData *)modifiers_findByType(ob1, eModifierType_Fluidsim);
|
||||||
|
|
||||||
/* Only put dependencies from NON-DOMAIN fluids in here. */
|
/* Only put dependencies from NON-DOMAIN fluids in here. */
|
||||||
if (fluidmdtmp && fluidmdtmp->fss && (fluidmdtmp->fss->type != OB_FLUIDSIM_DOMAIN)) {
|
if (fluidmdtmp && fluidmdtmp->fss && (fluidmdtmp->fss->type != OB_FLUIDSIM_DOMAIN)) {
|
||||||
DEG_add_object_relation(node, ob1, DEG_OB_COMP_TRANSFORM, "Fluidsim Object");
|
DEG_add_object_relation(ctx->node, ob1, DEG_OB_COMP_TRANSFORM, "Fluidsim Object");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -116,21 +116,17 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &hmd->object, IDWALK_CB_NOP);
|
walk(userData, ob, &hmd->object, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
HookModifierData *hmd = (HookModifierData *)md;
|
HookModifierData *hmd = (HookModifierData *)md;
|
||||||
if (hmd->object != NULL) {
|
if (hmd->object != NULL) {
|
||||||
if (hmd->subtarget[0]) {
|
if (hmd->subtarget[0]) {
|
||||||
DEG_add_bone_relation(node, hmd->object, hmd->subtarget, DEG_OB_COMP_BONE, "Hook Modifier");
|
DEG_add_bone_relation(ctx->node, hmd->object, hmd->subtarget, DEG_OB_COMP_BONE, "Hook Modifier");
|
||||||
}
|
}
|
||||||
DEG_add_object_relation(node, hmd->object, DEG_OB_COMP_TRANSFORM, "Hook Modifier");
|
DEG_add_object_relation(ctx->node, hmd->object, DEG_OB_COMP_TRANSFORM, "Hook Modifier");
|
||||||
}
|
}
|
||||||
/* We need own transformation as well. */
|
/* We need own transformation as well. */
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Hook Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Hook Modifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
struct HookData_cb {
|
struct HookData_cb {
|
||||||
|
@@ -89,18 +89,14 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &lmd->object, IDWALK_CB_NOP);
|
walk(userData, ob, &lmd->object, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *object,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
LatticeModifierData *lmd = (LatticeModifierData *)md;
|
LatticeModifierData *lmd = (LatticeModifierData *)md;
|
||||||
if (lmd->object != NULL) {
|
if (lmd->object != NULL) {
|
||||||
DEG_add_object_relation(node, lmd->object, DEG_OB_COMP_GEOMETRY, "Lattice Modifier");
|
DEG_add_object_relation(ctx->node, lmd->object, DEG_OB_COMP_GEOMETRY, "Lattice Modifier");
|
||||||
DEG_add_object_relation(node, lmd->object, DEG_OB_COMP_TRANSFORM, "Lattice Modifier");
|
DEG_add_object_relation(ctx->node, lmd->object, DEG_OB_COMP_TRANSFORM, "Lattice Modifier");
|
||||||
}
|
}
|
||||||
DEG_add_object_relation(node, object, DEG_OB_COMP_TRANSFORM, "Lattice Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Lattice Modifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deformVerts(ModifierData *md, const struct EvaluationContext *UNUSED(eval_ctx),
|
static void deformVerts(ModifierData *md, const struct EvaluationContext *UNUSED(eval_ctx),
|
||||||
|
@@ -78,18 +78,14 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &mmd->ob_arm, IDWALK_CB_NOP);
|
walk(userData, ob, &mmd->ob_arm, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
MaskModifierData *mmd = (MaskModifierData *)md;
|
MaskModifierData *mmd = (MaskModifierData *)md;
|
||||||
if (mmd->ob_arm) {
|
if (mmd->ob_arm) {
|
||||||
bArmature *arm = (bArmature *)mmd->ob_arm->data;
|
bArmature *arm = (bArmature *)mmd->ob_arm->data;
|
||||||
/* Tag relationship in depsgraph, but also on the armature. */
|
/* Tag relationship in depsgraph, but also on the armature. */
|
||||||
/* TODO(sergey): Is it a proper relation here? */
|
/* TODO(sergey): Is it a proper relation here? */
|
||||||
DEG_add_object_relation(node, mmd->ob_arm, DEG_OB_COMP_TRANSFORM, "Mask Modifier");
|
DEG_add_object_relation(ctx->node, mmd->ob_arm, DEG_OB_COMP_TRANSFORM, "Mask Modifier");
|
||||||
arm->flag |= ARM_HAS_VIZ_DEPS;
|
arm->flag |= ARM_HAS_VIZ_DEPS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -122,16 +122,12 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
|
walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
MeshDeformModifierData *mmd = (MeshDeformModifierData *)md;
|
MeshDeformModifierData *mmd = (MeshDeformModifierData *)md;
|
||||||
if (mmd->object != NULL) {
|
if (mmd->object != NULL) {
|
||||||
/* TODO(sergey): Do we need transform component here? */
|
/* TODO(sergey): Do we need transform component here? */
|
||||||
DEG_add_object_relation(node, mmd->object, DEG_OB_COMP_GEOMETRY, "Mesh Deform Modifier");
|
DEG_add_object_relation(ctx->node, mmd->object, DEG_OB_COMP_GEOMETRY, "Mesh Deform Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -173,19 +173,13 @@ static void foreachIDLink(ModifierData *md, Object *ob,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *bmain,
|
|
||||||
struct Scene *scene,
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *) md;
|
MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *) md;
|
||||||
|
|
||||||
if (mcmd->cache_file != NULL) {
|
if (mcmd->cache_file != NULL) {
|
||||||
DEG_add_object_cache_relation(node, mcmd->cache_file, DEG_OB_COMP_CACHE, "Mesh Cache File");
|
DEG_add_object_cache_relation(ctx->node, mcmd->cache_file, DEG_OB_COMP_CACHE, "Mesh Cache File");
|
||||||
}
|
}
|
||||||
|
|
||||||
UNUSED_VARS(bmain, scene, ob);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ModifierTypeInfo modifierType_MeshSequenceCache = {
|
ModifierTypeInfo modifierType_MeshSequenceCache = {
|
||||||
|
@@ -76,17 +76,13 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &mmd->mirror_ob, IDWALK_CB_NOP);
|
walk(userData, ob, &mmd->mirror_ob, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
MirrorModifierData *mmd = (MirrorModifierData *)md;
|
MirrorModifierData *mmd = (MirrorModifierData *)md;
|
||||||
if (mmd->mirror_ob != NULL) {
|
if (mmd->mirror_ob != NULL) {
|
||||||
DEG_add_object_relation(node, mmd->mirror_ob, DEG_OB_COMP_TRANSFORM, "Mirror Modifier");
|
DEG_add_object_relation(ctx->node, mmd->mirror_ob, DEG_OB_COMP_TRANSFORM, "Mirror Modifier");
|
||||||
}
|
}
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Mirror Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Mirror Modifier");
|
||||||
}
|
}
|
||||||
|
|
||||||
static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd,
|
static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd,
|
||||||
|
@@ -509,15 +509,11 @@ static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
|
|||||||
return !is_valid_target(enmd);
|
return !is_valid_target(enmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
NormalEditModifierData *enmd = (NormalEditModifierData *) md;
|
NormalEditModifierData *enmd = (NormalEditModifierData *) md;
|
||||||
if (enmd->target) {
|
if (enmd->target) {
|
||||||
DEG_add_object_relation(node, enmd->target, DEG_OB_COMP_TRANSFORM, "NormalEdit Modifier");
|
DEG_add_object_relation(ctx->node, enmd->target, DEG_OB_COMP_TRANSFORM, "NormalEdit Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -111,15 +111,11 @@ static bool isDisabled(ModifierData *md, int useRenderParams)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md;
|
ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md;
|
||||||
if (pimd->ob != NULL) {
|
if (pimd->ob != NULL) {
|
||||||
DEG_add_object_relation(node, pimd->ob, DEG_OB_COMP_TRANSFORM, "Particle Instance Modifier");
|
DEG_add_object_relation(ctx->node, pimd->ob, DEG_OB_COMP_TRANSFORM, "Particle Instance Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1117,15 +1117,11 @@ static DerivedMesh *applyModifier(ModifierData *md, const struct EvaluationConte
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
ScrewModifierData *ltmd = (ScrewModifierData *)md;
|
ScrewModifierData *ltmd = (ScrewModifierData *)md;
|
||||||
if (ltmd->ob_axis != NULL) {
|
if (ltmd->ob_axis != NULL) {
|
||||||
DEG_add_object_relation(node, ltmd->ob_axis, DEG_OB_COMP_TRANSFORM, "Screw Modifier");
|
DEG_add_object_relation(ctx->node, ltmd->ob_axis, DEG_OB_COMP_TRANSFORM, "Screw Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -142,20 +142,16 @@ static void deformVertsEM(ModifierData *md, const struct EvaluationContext *eval
|
|||||||
dm->release(dm);
|
dm->release(dm);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md;
|
ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md;
|
||||||
if (smd->target != NULL) {
|
if (smd->target != NULL) {
|
||||||
DEG_add_object_relation(node, smd->target, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier");
|
DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier");
|
||||||
DEG_add_object_relation(node, smd->target, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier");
|
DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier");
|
||||||
}
|
}
|
||||||
if (smd->auxTarget != NULL) {
|
if (smd->auxTarget != NULL) {
|
||||||
DEG_add_object_relation(node, smd->auxTarget, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier");
|
DEG_add_object_relation(ctx->node, smd->auxTarget, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier");
|
||||||
DEG_add_object_relation(node, smd->auxTarget, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier");
|
DEG_add_object_relation(ctx->node, smd->auxTarget, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -375,15 +375,11 @@ static void foreachObjectLink(
|
|||||||
walk(userData, ob, &smd->origin, IDWALK_CB_NOP);
|
walk(userData, ob, &smd->origin, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
SimpleDeformModifierData *smd = (SimpleDeformModifierData *)md;
|
SimpleDeformModifierData *smd = (SimpleDeformModifierData *)md;
|
||||||
if (smd->origin != NULL) {
|
if (smd->origin != NULL) {
|
||||||
DEG_add_object_relation(node, smd->origin, DEG_OB_COMP_TRANSFORM, "SimpleDeform Modifier");
|
DEG_add_object_relation(ctx->node, smd->origin, DEG_OB_COMP_TRANSFORM, "SimpleDeform Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -131,20 +131,16 @@ static bool is_coll_cb(Object *UNUSED(ob), ModifierData *md)
|
|||||||
return (smd->type & MOD_SMOKE_TYPE_COLL) && smd->coll;
|
return (smd->type & MOD_SMOKE_TYPE_COLL) && smd->coll;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *scene,
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
SmokeModifierData *smd = (SmokeModifierData *)md;
|
SmokeModifierData *smd = (SmokeModifierData *)md;
|
||||||
|
|
||||||
if (smd && (smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) {
|
if (smd && (smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) {
|
||||||
/* Actual code uses get_collisionobjects */
|
/* Actual code uses get_collisionobjects */
|
||||||
DEG_add_collision_relations(node, scene, ob, smd->domain->fluid_group, eModifierType_Smoke, is_flow_cb, true, "Smoke Flow");
|
DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, smd->domain->fluid_group, eModifierType_Smoke, is_flow_cb, true, "Smoke Flow");
|
||||||
DEG_add_collision_relations(node, scene, ob, smd->domain->coll_group, eModifierType_Smoke, is_coll_cb, true, "Smoke Coll");
|
DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, smd->domain->coll_group, eModifierType_Smoke, is_coll_cb, true, "Smoke Coll");
|
||||||
|
|
||||||
DEG_add_forcefield_relations(node, scene, ob, smd->domain->effector_weights, true, PFIELD_SMOKEFLOW, "Smoke Force Field");
|
DEG_add_forcefield_relations(ctx->node, ctx->scene, ctx->object, smd->domain->effector_weights, true, PFIELD_SMOKEFLOW, "Smoke Force Field");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -63,17 +63,13 @@ static bool dependsOnTime(ModifierData *UNUSED(md))
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *UNUSED(md),
|
static void updateDepsgraph(ModifierData *UNUSED(md), const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *scene,
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
if (ob->soft) {
|
if (ctx->object->soft) {
|
||||||
/* Actual code uses ccd_build_deflector_hash */
|
/* Actual code uses ccd_build_deflector_hash */
|
||||||
DEG_add_collision_relations(node, scene, ob, ob->soft->collision_group, eModifierType_Collision, NULL, false, "Softbody Collision");
|
DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, ctx->object->soft->collision_group, eModifierType_Collision, NULL, false, "Softbody Collision");
|
||||||
|
|
||||||
DEG_add_forcefield_relations(node, scene, ob, ob->soft->effector_weights, true, 0, "Softbody Field");
|
DEG_add_forcefield_relations(ctx->node, ctx->scene, ctx->object, ctx->object->soft->effector_weights, true, 0, "Softbody Field");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -170,15 +170,11 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
|
|||||||
walk(userData, ob, &smd->target, IDWALK_NOP);
|
walk(userData, ob, &smd->target, IDWALK_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
|
SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
|
||||||
if (smd->target != NULL) {
|
if (smd->target != NULL) {
|
||||||
DEG_add_object_relation(node, smd->target, DEG_OB_COMP_GEOMETRY, "Surface Deform Modifier");
|
DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_GEOMETRY, "Surface Deform Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -109,17 +109,13 @@ static void foreachIDLink(ModifierData *md, Object *ob,
|
|||||||
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
|
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
UVProjectModifierData *umd = (UVProjectModifierData *)md;
|
UVProjectModifierData *umd = (UVProjectModifierData *)md;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < umd->num_projectors; ++i) {
|
for (i = 0; i < umd->num_projectors; ++i) {
|
||||||
if (umd->projectors[i] != NULL) {
|
if (umd->projectors[i] != NULL) {
|
||||||
DEG_add_object_relation(node, umd->projectors[i], DEG_OB_COMP_TRANSFORM, "UV Project Modifier");
|
DEG_add_object_relation(ctx->node, umd->projectors[i], DEG_OB_COMP_TRANSFORM, "UV Project Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -232,9 +232,9 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
|
|||||||
walk(userData, ob, &umd->object_src, IDWALK_CB_NOP);
|
walk(userData, ob, &umd->object_src, IDWALK_CB_NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uv_warp_deps_object_bone(struct DepsNodeHandle *node,
|
static void uv_warp_deps_object_bone_new(struct DepsNodeHandle *node,
|
||||||
Object *object,
|
Object *object,
|
||||||
const char *bonename)
|
const char *bonename)
|
||||||
{
|
{
|
||||||
if (object != NULL) {
|
if (object != NULL) {
|
||||||
if (bonename[0])
|
if (bonename[0])
|
||||||
@@ -244,16 +244,12 @@ static void uv_warp_deps_object_bone(struct DepsNodeHandle *node,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
UVWarpModifierData *umd = (UVWarpModifierData *) md;
|
UVWarpModifierData *umd = (UVWarpModifierData *) md;
|
||||||
|
|
||||||
uv_warp_deps_object_bone(node, umd->object_src, umd->bone_src);
|
uv_warp_deps_object_bone_new(ctx->node, umd->object_src, umd->bone_src);
|
||||||
uv_warp_deps_object_bone(node, umd->object_dst, umd->bone_dst);
|
uv_warp_deps_object_bone_new(ctx->node, umd->object_dst, umd->bone_dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
ModifierTypeInfo modifierType_UVWarp = {
|
ModifierTypeInfo modifierType_UVWarp = {
|
||||||
|
@@ -137,19 +137,15 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
|
|||||||
walk(userData, ob, md, "texture");
|
walk(userData, ob, md, "texture");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
WarpModifierData *wmd = (WarpModifierData *) md;
|
WarpModifierData *wmd = (WarpModifierData *) md;
|
||||||
if (wmd->object_from != NULL && wmd->object_to != NULL) {
|
if (wmd->object_from != NULL && wmd->object_to != NULL) {
|
||||||
DEG_add_object_relation(node, wmd->object_from, DEG_OB_COMP_TRANSFORM, "Warp Modifier from");
|
DEG_add_object_relation(ctx->node, wmd->object_from, DEG_OB_COMP_TRANSFORM, "Warp Modifier from");
|
||||||
DEG_add_object_relation(node, wmd->object_to, DEG_OB_COMP_TRANSFORM, "Warp Modifier to");
|
DEG_add_object_relation(ctx->node, wmd->object_to, DEG_OB_COMP_TRANSFORM, "Warp Modifier to");
|
||||||
}
|
}
|
||||||
if ((wmd->texmapping == MOD_DISP_MAP_OBJECT) && wmd->map_object != NULL) {
|
if ((wmd->texmapping == MOD_DISP_MAP_OBJECT) && wmd->map_object != NULL) {
|
||||||
DEG_add_object_relation(node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Warp Modifier map");
|
DEG_add_object_relation(ctx->node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Warp Modifier map");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -127,18 +127,14 @@ static void foreachTexLink(ModifierData *md, Object *ob,
|
|||||||
walk(userData, ob, md, "texture");
|
walk(userData, ob, md, "texture");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *UNUSED(ob),
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
WaveModifierData *wmd = (WaveModifierData *)md;
|
WaveModifierData *wmd = (WaveModifierData *)md;
|
||||||
if (wmd->objectcenter != NULL) {
|
if (wmd->objectcenter != NULL) {
|
||||||
DEG_add_object_relation(node, wmd->objectcenter, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
|
DEG_add_object_relation(ctx->node, wmd->objectcenter, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
|
||||||
}
|
}
|
||||||
if (wmd->map_object != NULL) {
|
if (wmd->map_object != NULL) {
|
||||||
DEG_add_object_relation(node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
|
DEG_add_object_relation(ctx->node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -140,18 +140,14 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
|
|||||||
walk(userData, ob, md, "mask_texture");
|
walk(userData, ob, md, "mask_texture");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
WeightVGEditModifierData *wmd = (WeightVGEditModifierData *)md;
|
WeightVGEditModifierData *wmd = (WeightVGEditModifierData *)md;
|
||||||
if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
|
if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
|
||||||
DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGEdit Modifier");
|
DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGEdit Modifier");
|
||||||
}
|
}
|
||||||
if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
|
if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "WeightVGEdit Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "WeightVGEdit Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -189,20 +189,16 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
|
|||||||
walk(userData, ob, md, "mask_texture");
|
walk(userData, ob, md, "mask_texture");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md;
|
WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md;
|
||||||
if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
|
if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
|
||||||
DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGMix Modifier");
|
DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGMix Modifier");
|
||||||
DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_GEOMETRY, "WeightVGMix Modifier");
|
DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_GEOMETRY, "WeightVGMix Modifier");
|
||||||
}
|
}
|
||||||
if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
|
if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "WeightVGMix Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "WeightVGMix Modifier");
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_GEOMETRY, "WeightVGMix Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_GEOMETRY, "WeightVGMix Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -350,24 +350,20 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
|
|||||||
walk(userData, ob, md, "mask_texture");
|
walk(userData, ob, md, "mask_texture");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateDepsgraph(ModifierData *md,
|
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||||
struct Main *UNUSED(bmain),
|
|
||||||
struct Scene *UNUSED(scene),
|
|
||||||
Object *ob,
|
|
||||||
struct DepsNodeHandle *node)
|
|
||||||
{
|
{
|
||||||
WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *)md;
|
WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *)md;
|
||||||
if (wmd->proximity_ob_target != NULL) {
|
if (wmd->proximity_ob_target != NULL) {
|
||||||
DEG_add_object_relation(node, wmd->proximity_ob_target, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
|
DEG_add_object_relation(ctx->node, wmd->proximity_ob_target, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
|
||||||
DEG_add_object_relation(node, wmd->proximity_ob_target, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
|
DEG_add_object_relation(ctx->node, wmd->proximity_ob_target, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
|
||||||
}
|
}
|
||||||
if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
|
if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
|
||||||
DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
|
DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
|
||||||
DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
|
DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
|
||||||
}
|
}
|
||||||
if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
|
if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
|
||||||
DEG_add_object_relation(node, ob, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
|
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user