struct CacheFile;
struct EffectorWeights;
struct Collection;
+struct ID;
struct Main;
struct ModifierData;
struct Object;
struct CacheFile *cache_file,
eDepsObjectComponentType component,
const char *description);
+/* Adds relation from DEG_OPCODE_GENERIC_DATABLOCK_UPDATE of a given ID.
+ * Is used for such entities as textures and images. */
+void DEG_add_generic_id_relation(struct DepsNodeHandle *node_handle,
+ struct ID *id,
+ const char *description);
/* Adds relations from the given component of a given object to the given node
* handle AND the component to the point cache component of the node's ID.
}
}
+void DEG_add_generic_id_relation(struct DepsNodeHandle *node_handle,
+ struct ID *id,
+ const char *description)
+{
+ DEG::OperationKey operation_key(
+ id,
+ DEG::DEG_NODE_TYPE_GENERIC_DATABLOCK,
+ DEG::DEG_OPCODE_GENERIC_DATABLOCK_UPDATE);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_node_handle_relation(operation_key,
+ deg_node_handle,
+ description);
+}
+
void DEG_add_special_eval_flag(struct DepsNodeHandle *node_handle,
ID *id,
uint32_t flag)
{
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Displace Modifier");
}
+ if (dmd->texture != NULL) {
+ DEG_add_generic_id_relation(ctx->node, &dmd->texture->id, "Displace Modifier");
+ }
}
typedef struct DisplaceUserdata {
if ((wmd->texmapping == MOD_DISP_MAP_OBJECT) && wmd->map_object != NULL) {
DEG_add_object_relation(ctx->node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Warp Modifier map");
}
+ if (wmd->texture != NULL) {
+ DEG_add_generic_id_relation(ctx->node, &wmd->texture->id, "Warp Modifier");
+ }
}
static void warpModifier_do(
if (wmd->objectcenter != NULL || wmd->map_object != NULL) {
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
}
+ if (wmd->texture != NULL) {
+ DEG_add_generic_id_relation(ctx->node, &wmd->texture->id, "Wave Modifier");
+ }
}
static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)