diff --git a/node-graph/gstd/src/raster.rs b/node-graph/gstd/src/raster.rs index 146d4d1dc..fcb11c657 100644 --- a/node-graph/gstd/src/raster.rs +++ b/node-graph/gstd/src/raster.rs @@ -231,7 +231,7 @@ fn mask( } #[node_macro::node(category(""))] -fn extend_image_to_bounds(_: impl Ctx, image: RasterDataTable, bounds: DAffine2) -> RasterDataTable { +pub fn extend_image_to_bounds(_: impl Ctx, image: RasterDataTable, bounds: DAffine2) -> RasterDataTable { let mut result_table = RasterDataTable::default(); for mut image_instance in image.instance_iter() { @@ -284,7 +284,7 @@ fn extend_image_to_bounds(_: impl Ctx, image: RasterDataTable, bounds: DAff } #[node_macro::node(category("Debug: Raster"))] -fn empty_image(_: impl Ctx, transform: DAffine2, color: Color) -> RasterDataTable { +pub fn empty_image(_: impl Ctx, transform: DAffine2, color: Color) -> RasterDataTable { let width = transform.transform_vector2(DVec2::new(1., 0.)).length() as u32; let height = transform.transform_vector2(DVec2::new(0., 1.)).length() as u32; diff --git a/node-graph/node-macro/src/codegen.rs b/node-graph/node-macro/src/codegen.rs index 18705ad6a..bb3ac0082 100644 --- a/node-graph/node-macro/src/codegen.rs +++ b/node-graph/node-macro/src/codegen.rs @@ -12,6 +12,7 @@ static NODE_ID: AtomicU64 = AtomicU64::new(0); pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result { let ParsedNodeFn { + vis, attributes, fn_name, struct_name, @@ -345,7 +346,7 @@ pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result (#input_ident: #input_type #(, #field_idents: #field_types)*) -> #output_type #where_clause #body + #vis #async_keyword fn #fn_name <'n, #(#fn_generics,)*> (#input_ident: #input_type #(, #field_idents: #field_types)*) -> #output_type #where_clause #body #[automatically_derived] impl<'n, #(#fn_generics,)* #(#struct_generics,)* #(#future_idents,)*> #graphene_core::Node<'n, #input_type> for #mod_name::#struct_name<#(#struct_generics,)*> diff --git a/node-graph/node-macro/src/parsing.rs b/node-graph/node-macro/src/parsing.rs index e49233363..81151110a 100644 --- a/node-graph/node-macro/src/parsing.rs +++ b/node-graph/node-macro/src/parsing.rs @@ -7,8 +7,8 @@ use syn::punctuated::Punctuated; use syn::spanned::Spanned; use syn::token::{Comma, RArrow}; use syn::{ - AttrStyle, Attribute, Error, Expr, ExprTuple, FnArg, GenericParam, Ident, ItemFn, Lit, LitFloat, LitInt, LitStr, Meta, Pat, PatIdent, PatType, Path, ReturnType, Type, TypeParam, WhereClause, - parse_quote, + AttrStyle, Attribute, Error, Expr, ExprTuple, FnArg, GenericParam, Ident, ItemFn, Lit, LitFloat, LitInt, LitStr, Meta, Pat, PatIdent, PatType, Path, ReturnType, Type, TypeParam, Visibility, + WhereClause, parse_quote, }; use crate::codegen::generate_node_code; @@ -22,6 +22,7 @@ pub(crate) struct Implementation { #[derive(Debug)] pub(crate) struct ParsedNodeFn { + pub(crate) vis: Visibility, pub(crate) attributes: NodeFnAttributes, pub(crate) fn_name: Ident, pub(crate) struct_name: Ident, @@ -263,6 +264,7 @@ fn parse_node_fn(attr: TokenStream2, item: TokenStream2) -> syn::Result(attr.clone()).map_err(|e| Error::new(e.span(), format!("Failed to parse node_fn attributes: {}", e)))?; let input_fn = syn::parse2::(item.clone()).map_err(|e| Error::new(e.span(), format!("Failed to parse function: {}. Make sure it's a valid Rust function.", e)))?; + let vis = input_fn.vis; let fn_name = input_fn.sig.ident.clone(); let struct_name = format_ident!("{}", fn_name.to_string().to_case(Case::Pascal)); let mod_name = fn_name.clone(); @@ -297,6 +299,7 @@ fn parse_node_fn(attr: TokenStream2, item: TokenStream2) -> syn::Result