mirror of
https://github.com/eliasstepanik/egui_node_graph.git
synced 2026-01-11 22:08:28 +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,
|
UserResponse: UserResponseTrait,
|
||||||
ValueType: WidgetValueTrait<Response = UserResponse>,
|
ValueType: WidgetValueTrait<Response = UserResponse>,
|
||||||
NodeTemplate:
|
NodeTemplate: NodeTemplateTrait<
|
||||||
NodeTemplateTrait<NodeData = NodeData, DataType = DataType, ValueType = ValueType>,
|
NodeData = NodeData,
|
||||||
|
DataType = DataType,
|
||||||
|
ValueType = ValueType,
|
||||||
|
UserState = UserState,
|
||||||
|
>,
|
||||||
DataType: DataTypeTrait<UserState>,
|
DataType: DataTypeTrait<UserState>,
|
||||||
{
|
{
|
||||||
#[must_use]
|
#[must_use]
|
||||||
@ -142,7 +146,7 @@ where
|
|||||||
let new_node = self.graph.add_node(
|
let new_node = self.graph.add_node(
|
||||||
node_kind.node_graph_label(),
|
node_kind.node_graph_label(),
|
||||||
node_kind.user_data(),
|
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(
|
self.node_positions.insert(
|
||||||
new_node,
|
new_node,
|
||||||
|
|||||||
@ -108,6 +108,8 @@ pub trait NodeTemplateTrait: Clone {
|
|||||||
type DataType;
|
type DataType;
|
||||||
/// Must be set to the custom user `ValueType` type
|
/// Must be set to the custom user `ValueType` type
|
||||||
type ValueType;
|
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.
|
/// Returns a descriptive name for the node kind, used in the node finder.
|
||||||
fn node_finder_label(&self) -> &str;
|
fn node_finder_label(&self) -> &str;
|
||||||
@ -124,6 +126,7 @@ pub trait NodeTemplateTrait: Clone {
|
|||||||
fn build_node(
|
fn build_node(
|
||||||
&self,
|
&self,
|
||||||
graph: &mut Graph<Self::NodeData, Self::DataType, Self::ValueType>,
|
graph: &mut Graph<Self::NodeData, Self::DataType, Self::ValueType>,
|
||||||
|
user_state: &Self::UserState,
|
||||||
node_id: NodeId,
|
node_id: NodeId,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,6 +111,7 @@ impl NodeTemplateTrait for MyNodeTemplate {
|
|||||||
type NodeData = MyNodeData;
|
type NodeData = MyNodeData;
|
||||||
type DataType = MyDataType;
|
type DataType = MyDataType;
|
||||||
type ValueType = MyValueType;
|
type ValueType = MyValueType;
|
||||||
|
type UserState = MyGraphState;
|
||||||
|
|
||||||
fn node_finder_label(&self) -> &str {
|
fn node_finder_label(&self) -> &str {
|
||||||
match self {
|
match self {
|
||||||
@ -137,6 +138,7 @@ impl NodeTemplateTrait for MyNodeTemplate {
|
|||||||
fn build_node(
|
fn build_node(
|
||||||
&self,
|
&self,
|
||||||
graph: &mut Graph<Self::NodeData, Self::DataType, Self::ValueType>,
|
graph: &mut Graph<Self::NodeData, Self::DataType, Self::ValueType>,
|
||||||
|
_user_state: &Self::UserState,
|
||||||
node_id: NodeId,
|
node_id: NodeId,
|
||||||
) {
|
) {
|
||||||
// The nodes are created empty by default. This function needs to take
|
// The nodes are created empty by default. This function needs to take
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user