[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