[Bf-blender-cvs] [8b516d87120] master: Include node name for socket animation channel UI

Philipp Oeser noreply at git.blender.org
Wed Nov 3 15:34:48 CET 2021


Commit: 8b516d8712024af9380fe3f7559c336042d612f5
Author: Philipp Oeser
Date:   Wed Nov 3 12:05:43 2021 +0100
Branches: master
https://developer.blender.org/rB8b516d8712024af9380fe3f7559c336042d612f5

Include node name for socket animation channel UI

The channel names were often indistingushable in animation editors.
Now include the node _name_ (unfortunately, getting the _label_ could
result in bad performance in some circustances -- see previous version
of D13085).
Similar to what rB77744b581d08 did for some VSE strip properties.

ref. T91917

Maniphest Tasks: T91917

Differential Revision: https://developer.blender.org/D13085

===================================================================

M	source/blender/editors/animation/anim_ipo_utils.c

===================================================================

diff --git a/source/blender/editors/animation/anim_ipo_utils.c b/source/blender/editors/animation/anim_ipo_utils.c
index 6fe32699907..05837ed17b9 100644
--- a/source/blender/editors/animation/anim_ipo_utils.c
+++ b/source/blender/editors/animation/anim_ipo_utils.c
@@ -145,6 +145,22 @@ int getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
             }
           }
         }
+        /* For node sockets, it is useful to include the node name as well (multiple similar nodes
+         * are not distinguishable otherwise). Unfortunately, the node label cannot be retrieved
+         * from the rna path, for this to work access to the underlying node is needed (but finding
+         * the node iterates all nodes & sockets which would result in bad performance in some
+         * circumstances). */
+        if (RNA_struct_is_a(ptr.type, &RNA_NodeSocket)) {
+          char nodename[256];
+          if (BLI_str_quoted_substr(fcu->rna_path, "nodes[", nodename, sizeof(nodename))) {
+            const char *structname_all = BLI_sprintfN("%s : %s", nodename, structname);
+            if (free_structname) {
+              MEM_freeN((void *)structname);
+            }
+            structname = structname_all;
+            free_structname = 1;
+          }
+        }
       }
 
       /* Property Name is straightforward */



More information about the Bf-blender-cvs mailing list