/* tags nodes that have animation capabilities */ int ntreeCompositTagAnimated(bNodeTree *ntree) { bNode *node; int tagged= 0; if(ntree==NULL) return 0; for(node= ntree->nodes.first; node; node= node->next) { tagged = node_animation_properties(ntree, node); /* otherwise always tag these node types */ if(node->type==CMP_NODE_IMAGE) { Image *ima= (Image *)node->id; if(ima && ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) { NodeTagChanged(ntree, node); tagged= 1; } } else if(node->type==CMP_NODE_TIME) { NodeTagChanged(ntree, node); tagged= 1; } /* here was tag render layer, but this is called after a render, so re-composites fail */ else if(node->type==NODE_GROUP) { if( ntreeCompositTagAnimated((bNodeTree *)node->id) ) { NodeTagChanged(ntree, node); } } } return tagged; }
/* tags nodes that have animation capabilities */ int ntreeCompositTagAnimated(bNodeTree *ntree) { bNode *node; int tagged = 0; if (ntree == NULL) return 0; for (node = ntree->nodes.first; node; node = node->next) { tagged = node_animation_properties(ntree, node); /* otherwise always tag these node types */ if (node->type == CMP_NODE_IMAGE) { Image *ima = (Image *)node->id; if (ima && BKE_image_is_animated(ima)) { nodeUpdate(ntree, node); tagged = 1; } } else if (node->type == CMP_NODE_TIME) { nodeUpdate(ntree, node); tagged = 1; } /* here was tag render layer, but this is called after a render, so re-composites fail */ else if (node->type == NODE_GROUP) { if (ntreeCompositTagAnimated((bNodeTree *)node->id)) { nodeUpdate(ntree, node); } } else if (ELEM(node->type, CMP_NODE_MOVIECLIP, CMP_NODE_TRANSFORM)) { nodeUpdate(ntree, node); tagged = 1; } else if (node->type == CMP_NODE_MASK) { nodeUpdate(ntree, node); tagged = 1; } } return tagged; }