From 60a37ab4ea72cb50611cf3e50a7279de2c79ff25 Mon Sep 17 00:00:00 2001 From: Setzer22 Date: Wed, 23 Mar 2022 09:54:47 +0100 Subject: [PATCH] Expand the example to include graph evaluation --- README.md | 2 + egui_node_graph_example/Cargo.toml | 1 + egui_node_graph_example/src/app.rs | 218 ++++++++++++++++++++++++++++- showcase.png | Bin 0 -> 58002 bytes 4 files changed, 215 insertions(+), 6 deletions(-) create mode 100644 showcase.png diff --git a/README.md b/README.md index 93eabe1..16e5dca 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ ![MIT](https://img.shields.io/badge/license-MIT-blue.svg) [![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/) +![Showcase image](showcase.png) + **Egui node graph** is a featureful, customizable library to create node graph applications using [egui](https://github.com/emilk/egui). The library takes care of presenting a node graph to your users, and allows customizing many aspects of diff --git a/egui_node_graph_example/Cargo.toml b/egui_node_graph_example/Cargo.toml index a8c88e3..6e4816d 100644 --- a/egui_node_graph_example/Cargo.toml +++ b/egui_node_graph_example/Cargo.toml @@ -11,6 +11,7 @@ crate-type = ["cdylib", "rlib"] [dependencies] eframe = "0.16.0" egui_node_graph = { path = "../egui_node_graph" } +anyhow = "1.0" [features] default = [] diff --git a/egui_node_graph_example/src/app.rs b/egui_node_graph_example/src/app.rs index ceea0de..ac60aba 100644 --- a/egui_node_graph_example/src/app.rs +++ b/egui_node_graph_example/src/app.rs @@ -1,3 +1,5 @@ +use std::collections::HashMap; + use eframe::{ egui::{self, DragValue}, epi, @@ -8,8 +10,10 @@ use egui_node_graph::*; /// The NodeData holds a custom data struct inside each node. It's useful to /// store additional information that doesn't live in parameters. For this -/// simple example we don't really want to store anything. -pub struct MyNodeData; +/// example, the node data stores the template (i.e. the "type") of the node. +pub struct MyNodeData { + template: MyNodeTemplate, +} /// `DataType`s are what defines the possible range of connections when /// attaching two ports together. The graph UI will make sure to not allow @@ -27,20 +31,44 @@ pub enum MyDataType { /// this library makes no attempt to check this consistency. For instance, it is /// up to the user code in this example to make sure no parameter is created /// with a DataType of Scalar and a ValueType of Vec2. +#[derive(Copy, Clone, Debug)] pub enum MyValueType { Vec2 { value: egui::Vec2 }, Scalar { value: f32 }, } +impl MyValueType { + /// Tries to downcast this value type to a vector + pub fn try_to_vec2(self) -> anyhow::Result { + if let MyValueType::Vec2 { value } = self { + Ok(value) + } else { + anyhow::bail!("Invalid cast from {:?} to vec2", self) + } + } + + /// Tries to downcast this value type to a scalar + pub fn try_to_scalar(self) -> anyhow::Result { + if let MyValueType::Scalar { value } = self { + Ok(value) + } else { + anyhow::bail!("Invalid cast from {:?} to scalar", self) + } + } +} + /// NodeTemplate is a mechanism to define node templates. It's what the graph /// will display in the "new node" popup. The user code needs to tell the /// library how to convert a NodeTemplate into a Node. #[derive(Clone, Copy)] pub enum MyNodeTemplate { + MakeVector, + MakeScalar, AddScalar, SubtractScalar, VectorTimesScalar, AddVector, + SubtractVector, } /// The response type is used to encode side-effects produced when drawing a @@ -89,10 +117,13 @@ impl NodeTemplateTrait for MyNodeTemplate { fn node_finder_label(&self) -> &str { match self { + MyNodeTemplate::MakeVector => "New vector", + MyNodeTemplate::MakeScalar => "New scalar", MyNodeTemplate::AddScalar => "Scalar add", MyNodeTemplate::SubtractScalar => "Scalar subtract", + MyNodeTemplate::AddVector => "Vector add", + MyNodeTemplate::SubtractVector => "Vector subtract", MyNodeTemplate::VectorTimesScalar => "Vector times scalar", - MyNodeTemplate::AddVector => "Vector subtract", } } @@ -103,7 +134,7 @@ impl NodeTemplateTrait for MyNodeTemplate { } fn user_data(&self) -> Self::NodeData { - MyNodeData + MyNodeData { template: *self } } fn build_node( @@ -187,6 +218,20 @@ impl NodeTemplateTrait for MyNodeTemplate { input!(vector "v2"); output!(vector "out"); } + MyNodeTemplate::SubtractVector => { + input!(vector "v1"); + input!(vector "v2"); + output!(vector "out"); + } + MyNodeTemplate::MakeVector => { + input!(scalar "x"); + input!(scalar "y"); + output!(vector "out"); + } + MyNodeTemplate::MakeScalar => { + input!(scalar "value"); + output!(scalar "out"); + } } } } @@ -200,10 +245,13 @@ impl NodeTemplateIter for AllMyNodeTemplates { // will use to display it to the user. Crates like strum can reduce the // boilerplate in enumerating all variants of an enum. vec![ + MyNodeTemplate::MakeScalar, + MyNodeTemplate::MakeVector, MyNodeTemplate::AddScalar, MyNodeTemplate::SubtractScalar, - MyNodeTemplate::VectorTimesScalar, MyNodeTemplate::AddVector, + MyNodeTemplate::SubtractVector, + MyNodeTemplate::VectorTimesScalar, ] } } @@ -286,10 +334,14 @@ impl NodeDataTrait for MyNodeData { } } +type MyGraph = Graph; +type MyEditorState = + GraphEditorState; + pub struct NodeGraphExample { // The `GraphEditorState` is the top-level object. You "register" all your // custom types by specifying it as its generic parameters. - state: GraphEditorState, + state: MyEditorState, } impl Default for NodeGraphExample { @@ -322,5 +374,159 @@ impl epi::App for NodeGraphExample { } } } + + if let Some(node) = self.state.user_state.active_node { + let text = match evaluate_node(&self.state.graph, node, &mut HashMap::new()) { + Ok(value) => format!("The result is: {:?}", value), + Err(err) => format!("Execution error: {}", err), + }; + ctx.debug_painter().text( + egui::pos2(10.0, 10.0), + egui::Align2::LEFT_TOP, + text, + egui::TextStyle::Button, + egui::Color32::WHITE, + ); + } + } +} + +type OutputsCache = HashMap; + +/// Recursively evaluates all dependencies of this node, then evaluates the node itself. +pub fn evaluate_node( + graph: &MyGraph, + node_id: NodeId, + outputs_cache: &mut OutputsCache, +) -> anyhow::Result { + // Similar to when creating node types above, we define two macros for + // convenience. They may be overkill for this small example, but something + // like this makes the code much more readable when the number of nodes + // starts growing. + macro_rules! input { + (Vec2 $name:expr) => { + evaluate_input(graph, node_id, $name, outputs_cache)?.try_to_vec2()? + }; + (Scalar $name:expr) => { + evaluate_input(graph, node_id, $name, outputs_cache)?.try_to_scalar()? + }; + } + + macro_rules! output { + (Vec2 $name:expr => $value:expr) => {{ + let out = MyValueType::Vec2 { value: $value }; + populate_output(graph, outputs_cache, node_id, $name, out)?; + Ok(out) + }}; + (Scalar $name:expr => $value:expr) => {{ + let out = MyValueType::Scalar { value: $value }; + populate_output(graph, outputs_cache, node_id, $name, out)?; + Ok(out) + }}; + } + + let node = &graph[node_id]; + match node.user_data.template { + MyNodeTemplate::AddScalar => { + // Calling `evaluate_input` recursively evaluates other nodes in the + // graph until the input value for a paramater has been computed. + // This first call doesn't use the `input!` macro to illustrate what + // is going on underneath. + let a = evaluate_input(graph, node_id, "A", outputs_cache)?.try_to_scalar()?; + let b = evaluate_input(graph, node_id, "B", outputs_cache)?.try_to_scalar()?; + + // After computing an output, we don't just return it, but we also + // populate the outputs cache with it. This ensures the evaluation + // only ever computes an output once. + // + // The return value of the function is the "final" output of the + // node, the thing we want to get from the evaluation. The example + // would be slightly more contrived when we had multiple output + // values, as we would need to choose which of the outputs is the + // one we want to return. Other outputs could be used as + // intermediate values. + // + // Note that this is just one possible semantic interpretation of + // the graphs, you can come up with your own evaluation semantics! + let out = MyValueType::Scalar { value: a + b }; + populate_output(graph, outputs_cache, node_id, "out", out)?; + Ok(out) + } + MyNodeTemplate::SubtractScalar => { + // Using the macros, the code gets as succint as it gets + let a = input!(Scalar "A"); + let b = input!(Scalar "B"); + output!(Scalar "out" => a - b) + } + MyNodeTemplate::VectorTimesScalar => { + let scalar = input!(Scalar "scalar"); + let vector = input!(Vec2 "vector"); + output!(Vec2 "out" => vector * scalar) + } + MyNodeTemplate::AddVector => { + let v1 = input!(Vec2 "v1"); + let v2 = input!(Vec2 "v2"); + output!(Vec2 "out" => v1 + v2) + } + MyNodeTemplate::SubtractVector => { + let v1 = input!(Vec2 "v1"); + let v2 = input!(Vec2 "v2"); + output!(Vec2 "out" => v1 - v2) + } + MyNodeTemplate::MakeVector => { + let x = input!(Scalar "x"); + let y = input!(Scalar "y"); + output!(Vec2 "out" => egui::vec2(x, y)) + } + MyNodeTemplate::MakeScalar => { + let value = input!(Scalar "value"); + output!(Scalar "out" => value) + } + } +} + +fn populate_output( + graph: &MyGraph, + outputs_cache: &mut OutputsCache, + node_id: NodeId, + param_name: &str, + value: MyValueType, +) -> anyhow::Result<()> { + let output_id = graph[node_id].get_output(param_name)?; + outputs_cache.insert(output_id, value); + Ok(()) +} + +// Evaluates the input value of +fn evaluate_input( + graph: &MyGraph, + node_id: NodeId, + param_name: &str, + outputs_cache: &mut OutputsCache, +) -> anyhow::Result { + let input_id = graph[node_id].get_input(param_name)?; + + // The output of another node is connected. + if let Some(other_output_id) = graph.connection(input_id) { + // The value was already computed due to the evaluation of some other + // node. We simply return value from the cache. + if let Some(other_value) = outputs_cache.get(&other_output_id) { + Ok(*other_value) + } + // This is the first time encountering this node, so we need to + // recursively evaluate it. + else { + // Calling this will populate the cache + evaluate_node(graph, graph[other_output_id].node, outputs_cache)?; + + // Now that we know the value is cached, return it + Ok(*outputs_cache + .get(&other_output_id) + .expect("Cache should be populated")) + } + } + // No existing connection, take the inline value instead. + else { + Ok(graph[input_id].value) } } diff --git a/showcase.png b/showcase.png new file mode 100644 index 0000000000000000000000000000000000000000..db9f7dc06ce82070d12a6b599596ec69af09d995 GIT binary patch literal 58002 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 literal 0 HcmV?d00001