From 297615304678fa5c3d234806c71bf25138fe7ab3 Mon Sep 17 00:00:00 2001 From: Kamil Koczurek Date: Tue, 9 May 2023 16:58:08 +0200 Subject: [PATCH] Add NodeDataTrait::separator --- egui_node_graph/src/editor_ui.rs | 15 +++++++++++++++ egui_node_graph/src/traits.rs | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/egui_node_graph/src/editor_ui.rs b/egui_node_graph/src/editor_ui.rs index d009e42..9d1bd9e 100644 --- a/egui_node_graph/src/editor_ui.rs +++ b/egui_node_graph/src/editor_ui.rs @@ -600,6 +600,13 @@ where responses.extend(node_responses.into_iter().map(NodeResponse::User)); } + self.graph[self.node_id].user_data.separator( + ui, + self.node_id, + self.graph, + user_state, + ); + self.graph[param_id].value = value; let height_after = ui.min_rect().bottom(); @@ -616,6 +623,14 @@ where .output_ui(ui, self.node_id, self.graph, user_state, ¶m_name) .into_iter(), ); + + self.graph[self.node_id].user_data.separator( + ui, + self.node_id, + self.graph, + user_state, + ); + let height_after = ui.min_rect().bottom(); output_port_heights.push((height_before + height_after) / 2.0); } diff --git a/egui_node_graph/src/traits.rs b/egui_node_graph/src/traits.rs index 535ec0e..8354035 100644 --- a/egui_node_graph/src/traits.rs +++ b/egui_node_graph/src/traits.rs @@ -158,6 +158,22 @@ where None } + /// Separator to put between elements in the node. + /// + /// Invoked between inputs, outputs and bottom UI. Useful for + /// complicated UIs that start to lose structure without explicit + /// separators. + /// + /// Default implementation does nothing. + fn separator( + &self, + _ui: &mut egui::Ui, + _node_id: NodeId, + _graph: &Graph, + _user_state: &mut Self::UserState, + ) { + } + fn can_delete( &self, _node_id: NodeId,