use bevy::prelude::*; use bevy_scriptum::prelude::*; use bevy_scriptum::runtimes::ruby::magnus; use bevy_scriptum::runtimes::ruby::prelude::*; fn main() { App::new() .add_plugins(DefaultPlugins) .add_scripting::(|runtime| { runtime .add_function(String::from("fun_without_params"), || { println!("called without params"); }) .add_function( String::from("fun_with_string_param"), |In((x,)): In<(String,)>| { println!("called with string: '{}'", x); }, ) .add_function( String::from("fun_with_i64_param"), |In((x,)): In<(i64,)>| { println!("called with i64: {}", x); }, ) .add_function( String::from("fun_with_multiple_params"), |In((x, y)): In<(i64, String)>| { println!("called with i64: {} and string: '{}'", x, y); }, ); // .add_function( // String::from("fun_with_i64_and_array_param"), // |In((x, y)): In<(i64, magnus::value::RArray)>, runtime: Res| { // runtime.with_engine(|engine| { // println!( // "called with i64: {} and dynamically typed array: [{:?}]", // x, // engine // .registry_value::(&y) // .unwrap() // .pairs::() // .map(|pair| pair.unwrap()) // .map(|(_, v)| format!("{:?}", v)) // .collect::>() // .join(",") // ); // }); // }, // ); }) .add_systems(Startup, startup) .run(); } fn startup(mut commands: Commands, assets_server: Res) { commands.spawn(Script::::new( assets_server.load("examples/ruby/function_params.rb"), )); }