Fix T73932: modifying keyframes in nodes fails when there is an image sequence
Image animation should not be an depsgraph node of type ANIMATION, there is no need for it to be affected by the special casing for that.
This commit is contained in:
parent
ee5c13c45c
commit
f0a22f5dd0
Notes:
blender-bot
2023-02-13 23:27:24 +01:00
Referenced by issue #74633, Can't keyframe material attribute when image sequence involved Referenced by issue #74274, Blender 2.82a proposed revisions Referenced by issue #73932, Showstopper: 2nd keyframe for image sequences can't be set in compositing
|
@ -895,7 +895,7 @@ void DepsgraphNodeBuilder::build_animation_images(ID *id)
|
|||
if (BKE_image_user_id_has_animation(id)) {
|
||||
ID *id_cow = get_cow_id(id);
|
||||
add_operation_node(id,
|
||||
NodeType::ANIMATION,
|
||||
NodeType::IMAGE_ANIMATION,
|
||||
OperationCode::IMAGE_ANIMATION,
|
||||
function_bind(BKE_image_user_id_eval_animation, _1, id_cow));
|
||||
}
|
||||
|
|
|
@ -1384,9 +1384,8 @@ void DepsgraphRelationBuilder::build_animation_images(ID *id)
|
|||
{
|
||||
/* TODO: can we check for existence of node for performance? */
|
||||
if (BKE_image_user_id_has_animation(id)) {
|
||||
OperationKey image_animation_key(id, NodeType::ANIMATION, OperationCode::IMAGE_ANIMATION);
|
||||
ComponentKey cow_key(id, NodeType::COPY_ON_WRITE);
|
||||
add_relation(cow_key, image_animation_key, "CoW -> Image Animation");
|
||||
OperationKey image_animation_key(
|
||||
id, NodeType::IMAGE_ANIMATION, OperationCode::IMAGE_ANIMATION);
|
||||
TimeSourceKey time_src_key;
|
||||
add_relation(time_src_key, image_animation_key, "TimeSrc -> Image Animation");
|
||||
}
|
||||
|
|
|
@ -361,7 +361,7 @@ RNANodeIdentifier RNANodeQuery::construct_node_identifier(const PointerRNA *ptr,
|
|||
}
|
||||
else if (RNA_struct_is_a(ptr->type, &RNA_ImageUser)) {
|
||||
if (GS(node_identifier.id->name) == ID_NT) {
|
||||
node_identifier.type = NodeType::ANIMATION;
|
||||
node_identifier.type = NodeType::IMAGE_ANIMATION;
|
||||
node_identifier.operation_code = OperationCode::IMAGE_ANIMATION;
|
||||
return node_identifier;
|
||||
}
|
||||
|
|
|
@ -428,6 +428,7 @@ static void deg_debug_graphviz_node(const DebugContext &ctx, const Node *node)
|
|||
case NodeType::SHADING_PARAMETERS:
|
||||
case NodeType::CACHE:
|
||||
case NodeType::POINT_CACHE:
|
||||
case NodeType::IMAGE_ANIMATION:
|
||||
case NodeType::LAYER_COLLECTIONS:
|
||||
case NodeType::PARTICLE_SYSTEM:
|
||||
case NodeType::PARTICLE_SETTINGS:
|
||||
|
|
|
@ -100,6 +100,8 @@ const char *nodeTypeAsString(NodeType type)
|
|||
return "CACHE";
|
||||
case NodeType::POINT_CACHE:
|
||||
return "POINT_CACHE";
|
||||
case NodeType::IMAGE_ANIMATION:
|
||||
return "IMAGE_ANIMATION";
|
||||
case NodeType::BATCH_CACHE:
|
||||
return "BATCH_CACHE";
|
||||
case NodeType::DUPLI:
|
||||
|
@ -157,6 +159,7 @@ eDepsSceneComponentType nodeTypeToSceneComponent(NodeType type)
|
|||
case NodeType::PARTICLE_SETTINGS:
|
||||
case NodeType::SHADING_PARAMETERS:
|
||||
case NodeType::POINT_CACHE:
|
||||
case NodeType::IMAGE_ANIMATION:
|
||||
case NodeType::BATCH_CACHE:
|
||||
case NodeType::DUPLI:
|
||||
case NodeType::SYNCHRONIZATION:
|
||||
|
@ -238,6 +241,7 @@ eDepsObjectComponentType nodeTypeToObjectComponent(NodeType type)
|
|||
case NodeType::PARTICLE_SETTINGS:
|
||||
case NodeType::SHADING_PARAMETERS:
|
||||
case NodeType::POINT_CACHE:
|
||||
case NodeType::IMAGE_ANIMATION:
|
||||
case NodeType::BATCH_CACHE:
|
||||
case NodeType::DUPLI:
|
||||
case NodeType::SYNCHRONIZATION:
|
||||
|
|
|
@ -114,6 +114,8 @@ enum class NodeType {
|
|||
SHADING_PARAMETERS,
|
||||
/* Point cache Component */
|
||||
POINT_CACHE,
|
||||
/* Image Animation Component */
|
||||
IMAGE_ANIMATION,
|
||||
/* Cache Component */
|
||||
/* TODO(sergey); Verify that we really need this. */
|
||||
CACHE,
|
||||
|
|
|
@ -349,6 +349,7 @@ DEG_COMPONENT_NODE_DEFINE(BatchCache, BATCH_CACHE, ID_RECALC_SHADING);
|
|||
DEG_COMPONENT_NODE_DEFINE(Bone, BONE, ID_RECALC_GEOMETRY);
|
||||
DEG_COMPONENT_NODE_DEFINE(Cache, CACHE, 0);
|
||||
DEG_COMPONENT_NODE_DEFINE(CopyOnWrite, COPY_ON_WRITE, ID_RECALC_COPY_ON_WRITE);
|
||||
DEG_COMPONENT_NODE_DEFINE(ImageAnimation, IMAGE_ANIMATION, 0);
|
||||
DEG_COMPONENT_NODE_DEFINE(Geometry, GEOMETRY, ID_RECALC_GEOMETRY);
|
||||
DEG_COMPONENT_NODE_DEFINE(LayerCollections, LAYER_COLLECTIONS, 0);
|
||||
DEG_COMPONENT_NODE_DEFINE(Parameters, PARAMETERS, 0);
|
||||
|
@ -383,6 +384,7 @@ void deg_register_component_depsnodes()
|
|||
register_node_typeinfo(&DNTI_PARTICLE_SYSTEM);
|
||||
register_node_typeinfo(&DNTI_PARTICLE_SETTINGS);
|
||||
register_node_typeinfo(&DNTI_POINT_CACHE);
|
||||
register_node_typeinfo(&DNTI_IMAGE_ANIMATION);
|
||||
register_node_typeinfo(&DNTI_PROXY);
|
||||
register_node_typeinfo(&DNTI_EVAL_POSE);
|
||||
register_node_typeinfo(&DNTI_SEQUENCER);
|
||||
|
|
|
@ -172,6 +172,7 @@ DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(BatchCache);
|
|||
DEG_COMPONENT_NODE_DECLARE_GENERIC(Cache);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(CopyOnWrite);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(Geometry);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(ImageAnimation);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(LayerCollections);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(Parameters);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(Particles);
|
||||
|
|
Loading…
Reference in New Issue