@@ -61,6 +61,14 @@ fn node_registry() -> HashMap<ProtoNodeIdentifier, HashMap<NodeIOTypes, NodeCons
6161 convert_node!( from: DVec2 , to: String ) ,
6262 convert_node!( from: IVec2 , to: String ) ,
6363 convert_node!( from: DAffine2 , to: String ) ,
64+ #[ cfg( feature = "gpu" ) ]
65+ convert_node!( from: Table <Raster <CPU >>, to: Table <Raster <CPU >>, converter: & WgpuExecutor ) ,
66+ #[ cfg( feature = "gpu" ) ]
67+ convert_node!( from: Table <Raster <CPU >>, to: Table <Raster <GPU >>, converter: & WgpuExecutor ) ,
68+ #[ cfg( feature = "gpu" ) ]
69+ convert_node!( from: Table <Raster <GPU >>, to: Table <Raster <GPU >>, converter: & WgpuExecutor ) ,
70+ #[ cfg( feature = "gpu" ) ]
71+ convert_node!( from: Table <Raster <GPU >>, to: Table <Raster <CPU >>, converter: & WgpuExecutor ) ,
6472 // =============
6573 // MONITOR NODES
6674 // =============
@@ -394,21 +402,30 @@ mod node_registry_macros {
394402 x
395403 } } ;
396404 ( from: $from: ty, to: $to: ty) => {
405+ convert_node!( from: $from, to: $to, converter: ( ) )
406+ } ;
407+ ( from: $from: ty, to: $to: ty, converter: $convert: ty) => {
397408 (
398409 ProtoNodeIdentifier :: new( concat![ "graphene_core::ops::ConvertNode<" , stringify!( $to) , ">" ] ) ,
399410 |mut args| {
400411 Box :: pin( async move {
401- let node = graphene_core:: ops:: ConvertNode :: new( graphene_std:: any:: downcast_node:: <Context , $from>( args. pop( ) . unwrap( ) ) ,
402- graphene_std:: any:: FutureWrapperNode :: new( graphene_std:: value:: ClonedNode :: new( std:: marker:: PhantomData :: <$to>) ) ) ;
412+ let mut args = args. drain( ..) ;
413+ let node = graphene_core:: ops:: ConvertNode :: new(
414+ graphene_std:: any:: downcast_node:: <Context , $from>( args. next( ) . expect( "Convert node did not get first argument" ) ) ,
415+ graphene_std:: any:: downcast_node:: <Context , $convert>( args. next( ) . expect( "Convert node did not get converter argument" ) ) ,
416+ graphene_std:: any:: FutureWrapperNode :: new( graphene_std:: value:: ClonedNode :: new( std:: marker:: PhantomData :: <$to>) )
417+ ) ;
403418 let any: DynAnyNode <Context , $to, _> = graphene_std:: any:: DynAnyNode :: new( node) ;
404419 Box :: new( any) as TypeErasedBox
405420 } )
406421 } ,
407422 {
408- let node = graphene_core:: ops:: ConvertNode :: new( graphene_std:: any:: PanicNode :: <Context , core:: pin:: Pin <Box <dyn core:: future:: Future <Output = $from> + Send >>>:: new( ) ,
409-
410- graphene_std:: any:: FutureWrapperNode :: new( graphene_std:: value:: ClonedNode :: new( std:: marker:: PhantomData :: <$to>) ) ) ;
411- let params = vec![ fn_type_fut!( Context , $from) ] ;
423+ let node = graphene_core:: ops:: ConvertNode :: new(
424+ graphene_std:: any:: PanicNode :: <Context , core:: pin:: Pin <Box <dyn core:: future:: Future <Output = $from> + Send >>>:: new( ) ,
425+ graphene_std:: any:: PanicNode :: <Context , core:: pin:: Pin <Box <dyn core:: future:: Future <Output = $convert> + Send >>>:: new( ) ,
426+ graphene_std:: any:: FutureWrapperNode :: new( graphene_std:: value:: ClonedNode :: new( std:: marker:: PhantomData :: <$to>) )
427+ ) ;
428+ let params = vec![ fn_type_fut!( Context , $from) , fn_type_fut!( Context , $convert) ] ;
412429 let node_io = NodeIO :: <' _, Context >:: to_async_node_io( & node, params) ;
413430 node_io
414431 } ,
0 commit comments