mirror of
https://github.com/eliasstepanik/egui_node_graph.git
synced 2026-01-11 05:48:27 +00:00
Add UserState to build_node
This is necessary if your NodeTemplate struct can't store all the necessary information to define a new node.
This commit is contained in:
parent
008aa9ad5b
commit
ec0e863dc7
@ -68,8 +68,12 @@ where
|
||||
>,
|
||||
UserResponse: UserResponseTrait,
|
||||
ValueType: WidgetValueTrait<Response = UserResponse>,
|
||||
NodeTemplate:
|
||||
NodeTemplateTrait<NodeData = NodeData, DataType = DataType, ValueType = ValueType>,
|
||||
NodeTemplate: NodeTemplateTrait<
|
||||
NodeData = NodeData,
|
||||
DataType = DataType,
|
||||
ValueType = ValueType,
|
||||
UserState = UserState,
|
||||
>,
|
||||
DataType: DataTypeTrait<UserState>,
|
||||
{
|
||||
#[must_use]
|
||||
@ -142,7 +146,7 @@ where
|
||||
let new_node = self.graph.add_node(
|
||||
node_kind.node_graph_label(),
|
||||
node_kind.user_data(),
|
||||
|graph, node_id| node_kind.build_node(graph, node_id),
|
||||
|graph, node_id| node_kind.build_node(graph, &self.user_state, node_id),
|
||||
);
|
||||
self.node_positions.insert(
|
||||
new_node,
|
||||
|
||||
@ -108,6 +108,8 @@ pub trait NodeTemplateTrait: Clone {
|
||||
type DataType;
|
||||
/// Must be set to the custom user `ValueType` type
|
||||
type ValueType;
|
||||
/// Must be set to the custom user `UserState` type
|
||||
type UserState;
|
||||
|
||||
/// Returns a descriptive name for the node kind, used in the node finder.
|
||||
fn node_finder_label(&self) -> &str;
|
||||
@ -124,6 +126,7 @@ pub trait NodeTemplateTrait: Clone {
|
||||
fn build_node(
|
||||
&self,
|
||||
graph: &mut Graph<Self::NodeData, Self::DataType, Self::ValueType>,
|
||||
user_state: &Self::UserState,
|
||||
node_id: NodeId,
|
||||
);
|
||||
}
|
||||
|
||||
@ -111,6 +111,7 @@ impl NodeTemplateTrait for MyNodeTemplate {
|
||||
type NodeData = MyNodeData;
|
||||
type DataType = MyDataType;
|
||||
type ValueType = MyValueType;
|
||||
type UserState = MyGraphState;
|
||||
|
||||
fn node_finder_label(&self) -> &str {
|
||||
match self {
|
||||
@ -137,6 +138,7 @@ impl NodeTemplateTrait for MyNodeTemplate {
|
||||
fn build_node(
|
||||
&self,
|
||||
graph: &mut Graph<Self::NodeData, Self::DataType, Self::ValueType>,
|
||||
_user_state: &Self::UserState,
|
||||
node_id: NodeId,
|
||||
) {
|
||||
// The nodes are created empty by default. This function needs to take
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user