diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2013-10-01 20:15:52 +0400 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2013-10-01 20:15:52 +0400 |
commit | d2e55cb28253b6085212d962a60567ef3d542c18 (patch) | |
tree | 9c57d7ef0f55fcfbd750e65769123a408e8e16d2 /source/blender/blenkernel/intern/node.c | |
parent | 1fa59cdf4dcae382904ea06bfdeba19d89a9f0ad (diff) |
bugfix [#32346] Node animation, removing nodes keeps FCurves.
The same bug happens for modifiers, but better to address it separately.
Contribution and review by Lukas Toenne and Brecht van Lommel
Diffstat (limited to 'source/blender/blenkernel/intern/node.c')
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 071edb9067c..e296e97fb11 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1594,6 +1594,8 @@ static void node_unlink_attached(bNodeTree *ntree, bNode *parent) void nodeFreeNode(bNodeTree *ntree, bNode *node) { bNodeSocket *sock, *nextsock; + char propname_esc[MAX_IDPROP_NAME * 2]; + char prefix[MAX_IDPROP_NAME * 2]; /* extra free callback */ if (node->typeinfo && node->typeinfo->freefunc_api) { @@ -1613,6 +1615,11 @@ void nodeFreeNode(bNodeTree *ntree, bNode *node) BLI_remlink(&ntree->nodes, node); + BLI_strescape(propname_esc, node->name, sizeof(propname_esc)); + BLI_snprintf(prefix, sizeof(prefix), "nodes[\"%s\"]", propname_esc); + + BKE_animdata_fix_paths_remove((ID *)ntree, prefix); + if (ntree->typeinfo && ntree->typeinfo->free_node_cache) ntree->typeinfo->free_node_cache(ntree, node); |