[Bf-blender-cvs] [5d70a4d7ee4] master: Geometry Nodes: Move output attribute names to a subpanel

Hans Goudey noreply at git.blender.org
Mon Sep 27 20:05:08 CEST 2021


Commit: 5d70a4d7ee4e31de7784acc9dc0637e39c949583
Author: Hans Goudey
Date:   Mon Sep 27 13:04:58 2021 -0500
Branches: master
https://developer.blender.org/rB5d70a4d7ee4e31de7784acc9dc0637e39c949583

Geometry Nodes: Move output attribute names to a subpanel

In a sub-panel it will be clearer that they are outputs, since they
just look like more inputs now. Unfortunately it is not possible to
make sub-panels display conditionally currently, so the output
sub-panel will always be visible whether or not it is empty.

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

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

M	source/blender/modifiers/intern/MOD_nodes.cc

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

diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index c39beb63eb3..6e930e391d0 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -1205,11 +1205,6 @@ static void panel_draw(const bContext *C, Panel *panel)
     LISTBASE_FOREACH (bNodeSocket *, socket, &nmd->node_group->inputs) {
       draw_property_for_input_socket(layout, nmd, &bmain_ptr, ptr, *socket);
     }
-    LISTBASE_FOREACH (bNodeSocket *, socket, &nmd->node_group->outputs) {
-      if (socket_type_has_attribute_toggle(*socket)) {
-        draw_property_for_output_socket(layout, ptr, *socket);
-      }
-    }
   }
 
   /* Draw node warnings. */
@@ -1239,9 +1234,34 @@ static void panel_draw(const bContext *C, Panel *panel)
   modifier_panel_end(layout, ptr);
 }
 
+static void output_attribute_panel_draw(const bContext *UNUSED(C), Panel *panel)
+{
+  uiLayout *layout = panel->layout;
+
+  PointerRNA *ptr = modifier_panel_get_property_pointers(panel, nullptr);
+  NodesModifierData *nmd = static_cast<NodesModifierData *>(ptr->data);
+
+  uiLayoutSetPropSep(layout, true);
+  uiLayoutSetPropDecorate(layout, true);
+
+  if (nmd->node_group != nullptr && nmd->settings.properties != nullptr) {
+    LISTBASE_FOREACH (bNodeSocket *, socket, &nmd->node_group->outputs) {
+      if (socket_type_has_attribute_toggle(*socket)) {
+        draw_property_for_output_socket(layout, ptr, *socket);
+      }
+    }
+  }
+}
+
 static void panelRegister(ARegionType *region_type)
 {
-  modifier_panel_register(region_type, eModifierType_Nodes, panel_draw);
+  PanelType *panel_type = modifier_panel_register(region_type, eModifierType_Nodes, panel_draw);
+  modifier_subpanel_register(region_type,
+                             "output_attributes",
+                             N_("Output Attributes"),
+                             nullptr,
+                             output_attribute_panel_draw,
+                             panel_type);
 }
 
 static void blendWrite(BlendWriter *writer, const ModifierData *md)



More information about the Bf-blender-cvs mailing list