static int node_animation_properties(bNodeTree *ntree, bNode *node) { bNodeSocket *sock; const ListBase *lb; Link *link; PointerRNA ptr; PropertyRNA *prop; /* check to see if any of the node's properties have fcurves */ RNA_pointer_create((ID *)ntree, &RNA_Node, node, &ptr); lb = RNA_struct_type_properties(ptr.type); for (link = lb->first; link; link = link->next) { prop = (PropertyRNA *)link; if (RNA_property_animated(&ptr, prop)) { nodeUpdate(ntree, node); return 1; } } /* now check node sockets */ for (sock = node->inputs.first; sock; sock = sock->next) { RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &ptr); prop = RNA_struct_find_property(&ptr, "default_value"); if (RNA_property_animated(&ptr, prop)) { nodeUpdate(ntree, node); return 1; } } return 0; }
static bool render_layer_exclude_animated(Scene *scene, SceneRenderLayer *srl) { PointerRNA ptr; PropertyRNA *prop; RNA_pointer_create(&scene->id, &RNA_SceneRenderLayer, srl, &ptr); prop = RNA_struct_find_property(&ptr, "layers_exclude"); return RNA_property_animated(&ptr, prop); }