67 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use bevy::prelude::*;
 | |
| use bevy_scriptum::prelude::*;
 | |
| use bevy_scriptum::runtimes::ruby::prelude::*;
 | |
| 
 | |
| // Plugin A
 | |
| struct PluginA;
 | |
| impl Plugin for PluginA {
 | |
|     fn build(&self, app: &mut App) {
 | |
|         app.add_scripting_api::<RubyRuntime>(|runtime| {
 | |
|             runtime.add_function(String::from("hello_from_plugin_a"), || {
 | |
|                 info!("Hello from Plugin A");
 | |
|             });
 | |
|         })
 | |
|         .add_systems(Startup, plugin_a_startup);
 | |
|     }
 | |
| }
 | |
| 
 | |
| fn plugin_a_startup(mut commands: Commands, assets_server: Res<AssetServer>) {
 | |
|     commands.spawn(Script::<RubyScript>::new(
 | |
|         assets_server.load("examples/ruby/multiple_plugins_plugin_a.rb"),
 | |
|     ));
 | |
| }
 | |
| 
 | |
| // Plugin B
 | |
| struct PluginB;
 | |
| impl Plugin for PluginB {
 | |
|     fn build(&self, app: &mut App) {
 | |
|         app.add_scripting_api::<RubyRuntime>(|runtime| {
 | |
|             runtime.add_function(
 | |
|                 String::from("hello_from_plugin_b_with_parameters"),
 | |
|                 hello_from_b,
 | |
|             );
 | |
|         })
 | |
|         .add_systems(Startup, plugin_b_startup);
 | |
|     }
 | |
| }
 | |
| 
 | |
| fn plugin_b_startup(mut commands: Commands, assets_server: Res<AssetServer>) {
 | |
|     commands.spawn(Script::<RubyScript>::new(
 | |
|         assets_server.load("examples/lua/multiple_plugins_plugin_b.lua"),
 | |
|     ));
 | |
| }
 | |
| 
 | |
| fn hello_from_b(In((text, x)): In<(String, i32)>) {
 | |
|     info!("{} from Plugin B: {}", text, x);
 | |
| }
 | |
| 
 | |
| // Main
 | |
| fn main() {
 | |
|     App::new()
 | |
|         .add_plugins(DefaultPlugins)
 | |
|         .add_scripting::<RubyRuntime>(|runtime| {
 | |
|             runtime.add_function(String::from("hello_bevy"), || {
 | |
|                 info!("hello bevy, called from script");
 | |
|             });
 | |
|         })
 | |
|         .add_systems(Startup, main_startup)
 | |
|         .add_plugins(PluginA)
 | |
|         .add_plugins(PluginB)
 | |
|         .run();
 | |
| }
 | |
| 
 | |
| fn main_startup(mut commands: Commands, assets_server: Res<AssetServer>) {
 | |
|     commands.spawn(Script::<RubyScript>::new(
 | |
|         assets_server.load("examples/ruby/hello_world.rb"),
 | |
|     ));
 | |
| }
 | 
