| use graph_craft::ProtoNodeIdentifier; |
| use graph_craft::concrete; |
| use graph_craft::document::value::TaggedValue; |
| use graph_craft::document::{DocumentNode, DocumentNodeImplementation, NodeInput, NodeNetwork}; |
| use graph_craft::generic; |
| use graph_craft::wasm_application_io::WasmEditorApi; |
| use graphene_std::Context; |
| use graphene_std::uuid::NodeId; |
| use std::sync::Arc; |
|
|
| |
| pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc<WasmEditorApi>) -> NodeNetwork { |
| network.generate_node_paths(&[]); |
|
|
| let inner_network = DocumentNode { |
| implementation: DocumentNodeImplementation::Network(network), |
| inputs: vec![], |
| ..Default::default() |
| }; |
|
|
| |
| |
| |
| |
| |
|
|
| let render_node = DocumentNode { |
| inputs: vec![NodeInput::node(NodeId(0), 0), NodeInput::node(NodeId(2), 0)], |
| implementation: DocumentNodeImplementation::Network(NodeNetwork { |
| exports: vec![NodeInput::node(NodeId(2), 0)], |
| nodes: [ |
| DocumentNode { |
| inputs: vec![NodeInput::scope("editor-api")], |
| manual_composition: Some(concrete!(Context)), |
| implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("wgpu_executor::CreateGpuSurfaceNode")), |
| skip_deduplication: true, |
| ..Default::default() |
| }, |
| DocumentNode { |
| manual_composition: Some(concrete!(Context)), |
| inputs: vec![NodeInput::node(NodeId(0), 0)], |
| implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode")), |
| ..Default::default() |
| }, |
| |
| DocumentNode { |
| manual_composition: Some(concrete!(graphene_std::application_io::RenderConfig)), |
| inputs: vec![ |
| NodeInput::scope("editor-api"), |
| NodeInput::network(graphene_core::Type::Fn(Box::new(concrete!(Context)), Box::new(generic!(T))), 0), |
| NodeInput::node(NodeId(1), 0), |
| ], |
| implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::RenderNode")), |
| ..Default::default() |
| }, |
| ] |
| .into_iter() |
| .enumerate() |
| .map(|(id, node)| (NodeId(id as u64), node)) |
| .collect(), |
| ..Default::default() |
| }), |
| ..Default::default() |
| }; |
|
|
| |
| let nodes = vec![ |
| inner_network, |
| render_node, |
| DocumentNode { |
| implementation: DocumentNodeImplementation::proto("graphene_core::ops::IdentityNode"), |
| inputs: vec![NodeInput::value(TaggedValue::EditorApi(editor_api), false)], |
| ..Default::default() |
| }, |
| ]; |
|
|
| NodeNetwork { |
| exports: vec![NodeInput::node(NodeId(1), 0)], |
| nodes: nodes.into_iter().enumerate().map(|(id, node)| (NodeId(id as u64), node)).collect(), |
| scope_injections: [("editor-api".to_string(), (NodeId(2), concrete!(&WasmEditorApi)))].into_iter().collect(), |
| |
| generated: false, |
| } |
| } |
|
|