Compare commits
	
		
			3 commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | fa70abac23 | ||
| 41d0fd57f3 | |||
|   | e430795dce | 
					 5 changed files with 24 additions and 26 deletions
				
			
		|  | @ -1,7 +1,7 @@ | ||||||
| [package] | [package] | ||||||
| name = "bevy_scriptum" | name = "bevy_scriptum" | ||||||
| authors = ["Jaroslaw Konik <konikjar@gmail.com>"] | authors = ["Jaroslaw Konik <konikjar@gmail.com>"] | ||||||
| version = "0.9.0" | version = "0.9.1" | ||||||
| edition = "2024" | edition = "2024" | ||||||
| license = "MIT OR Apache-2.0" | license = "MIT OR Apache-2.0" | ||||||
| readme = "README.md" | readme = "README.md" | ||||||
|  |  | ||||||
							
								
								
									
										19
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								README.md
									
									
									
									
									
								
							|  | @ -3,21 +3,19 @@ | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| bevy_scriptum is a a plugin for [Bevy](https://bevyengine.org/) that allows you to write some of your game or application logic in a scripting language. | bevy_scriptum is a a plugin for [Bevy](https://bevyengine.org/) that allows you to write some of your game or application logic in a scripting language. | ||||||
| 
 |  | ||||||
| ### Supported scripting languages/runtimes | ### Supported scripting languages/runtimes | ||||||
| 
 | 
 | ||||||
| | language/runtime                           | cargo feature | documentation chapter                                           | | | language/runtime                           | cargo feature | documentation chapter                                           | | ||||||
| | ---------------- | ------------- | --------------------------------------------------------------- | | | ------------------------------------------ | ------------- | --------------------------------------------------------------- | | ||||||
| | 🌙 LuaJIT                                  | `lua`         | [link](https://jarkonik.github.io/bevy_scriptum/lua/lua.html)   | | | 🌙 LuaJIT                                  | `lua`         | [link](https://jarkonik.github.io/bevy_scriptum/lua/lua.html)   | | ||||||
| | 🌾 Rhai                                    | `rhai`        | [link](https://jarkonik.github.io/bevy_scriptum/rhai/rhai.html) | | | 🌾 Rhai                                    | `rhai`        | [link](https://jarkonik.github.io/bevy_scriptum/rhai/rhai.html) | | ||||||
| | 💎 Ruby          | `ruby`        | [link](https://jarkonik.github.io/bevy_scriptum/ruby/ruby.html) | | | 💎 Ruby(currently only supported on Linux) | `ruby`        | [link](https://jarkonik.github.io/bevy_scriptum/ruby/ruby.html) | | ||||||
| 
 | 
 | ||||||
| Documentation book is available [here](https://jarkonik.github.io/bevy_scriptum/) 📖 | Documentation book is available [here](https://jarkonik.github.io/bevy_scriptum/) 📖 | ||||||
| 
 | 
 | ||||||
| Full API docs are available at [docs.rs](https://docs.rs/bevy_scriptum/latest/bevy_scriptum/) 🧑💻 | Full API docs are available at [docs.rs](https://docs.rs/bevy_scriptum/latest/bevy_scriptum/) 🧑💻 | ||||||
| 
 | 
 | ||||||
| bevy_scriptum's main advantages include: | bevy_scriptum's main advantages include: | ||||||
| 
 |  | ||||||
| - low-boilerplate | - low-boilerplate | ||||||
| - easy to use | - easy to use | ||||||
| - asynchronicity with a promise-based API | - asynchronicity with a promise-based API | ||||||
|  | @ -27,7 +25,6 @@ bevy_scriptum's main advantages include: | ||||||
| Scripts are separate files that can be hot-reloaded at runtime. This allows you to quickly iterate on your game or application logic without having to recompile it. | Scripts are separate files that can be hot-reloaded at runtime. This allows you to quickly iterate on your game or application logic without having to recompile it. | ||||||
| 
 | 
 | ||||||
| All you need to do is register callbacks on your Bevy app like this: | All you need to do is register callbacks on your Bevy app like this: | ||||||
| 
 |  | ||||||
| ```rust | ```rust | ||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| use bevy_scriptum::prelude::*; | use bevy_scriptum::prelude::*; | ||||||
|  | @ -42,9 +39,7 @@ App::new() | ||||||
|     }) |     }) | ||||||
|     .run(); |     .run(); | ||||||
| ``` | ``` | ||||||
| 
 |  | ||||||
| And you can call them in your scripts like this: | And you can call them in your scripts like this: | ||||||
| 
 |  | ||||||
| ```lua | ```lua | ||||||
| hello_bevy() | hello_bevy() | ||||||
| ``` | ``` | ||||||
|  | @ -75,7 +70,6 @@ App::new() | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| You can also pass arguments to your callback functions, just like you would in a regular Bevy system - using `In` structs with tuples: | You can also pass arguments to your callback functions, just like you would in a regular Bevy system - using `In` structs with tuples: | ||||||
| 
 |  | ||||||
| ```rust | ```rust | ||||||
| use bevy::prelude::*; | use bevy::prelude::*; | ||||||
| use bevy_scriptum::prelude::*; | use bevy_scriptum::prelude::*; | ||||||
|  | @ -93,9 +87,7 @@ App::new() | ||||||
|     }) |     }) | ||||||
|     .run(); |     .run(); | ||||||
| ``` | ``` | ||||||
| 
 |  | ||||||
| which you can then call in your script like this: | which you can then call in your script like this: | ||||||
| 
 |  | ||||||
| ```lua | ```lua | ||||||
| fun_with_string_param("Hello world!") | fun_with_string_param("Hello world!") | ||||||
| ``` | ``` | ||||||
|  | @ -169,13 +161,12 @@ You can also try running provided examples by cloning this repository and runnin | ||||||
| ```bash | ```bash | ||||||
| cargo run --example hello_world_lua | cargo run --example hello_world_lua | ||||||
| ``` | ``` | ||||||
| 
 |  | ||||||
| The examples live in `examples` directory and their corresponding scripts live in `assets/examples` directory within the repository. | The examples live in `examples` directory and their corresponding scripts live in `assets/examples` directory within the repository. | ||||||
| 
 | 
 | ||||||
| ### Bevy compatibility | ### Bevy compatibility | ||||||
| 
 | 
 | ||||||
| | bevy version | bevy_scriptum version | | | bevy version | bevy_scriptum version | | ||||||
| | ------------ | --------------------- | | |--------------|-----------------------| | ||||||
| | 0.16         | 0.8-0.9               | | | 0.16         | 0.8-0.9               | | ||||||
| | 0.15         | 0.7                   | | | 0.15         | 0.7                   | | ||||||
| | 0.14         | 0.6                   | | | 0.14         | 0.6                   | | ||||||
|  | @ -193,7 +184,6 @@ get_player_name():and_then(function(name) | ||||||
|     print(name) |     print(name) | ||||||
| end) | end) | ||||||
| ``` | ``` | ||||||
| 
 |  | ||||||
| which will print out `John` when used with following exposed function: | which will print out `John` when used with following exposed function: | ||||||
| 
 | 
 | ||||||
| ```rust | ```rust | ||||||
|  | @ -206,7 +196,7 @@ App::new() | ||||||
|    .add_scripting::<LuaRuntime>(|runtime| { |    .add_scripting::<LuaRuntime>(|runtime| { | ||||||
|            runtime.add_function(String::from("get_player_name"), || String::from("John")); |            runtime.add_function(String::from("get_player_name"), || String::from("John")); | ||||||
|    }); |    }); | ||||||
| ``` | ```` | ||||||
| 
 | 
 | ||||||
| ## Access entity from script | ## Access entity from script | ||||||
| 
 | 
 | ||||||
|  | @ -214,7 +204,6 @@ A variable called `entity` is automatically available to all scripts - it repres | ||||||
| It exposes `index` property that returns bevy entity index. | It exposes `index` property that returns bevy entity index. | ||||||
| It is useful for accessing entity's components from scripts. | It is useful for accessing entity's components from scripts. | ||||||
| It can be used in the following way: | It can be used in the following way: | ||||||
| 
 |  | ||||||
| ```lua | ```lua | ||||||
| print("Current entity index: " .. entity.index) | print("Current entity index: " .. entity.index) | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | @ -1,5 +1,7 @@ | ||||||
| # Installation | # Installation | ||||||
| 
 | 
 | ||||||
|  | Ruby is currently only supported on Linux. | ||||||
|  | 
 | ||||||
| ## Ruby | ## Ruby | ||||||
| 
 | 
 | ||||||
| To build `bevy_scriptum` with Ruby support a Ruby installation is needed to be | To build `bevy_scriptum` with Ruby support a Ruby installation is needed to be | ||||||
|  |  | ||||||
|  | @ -1,3 +1,4 @@ | ||||||
| # Ruby | # Ruby | ||||||
| 
 | 
 | ||||||
| This chapter demonstrates how to work with bevy_scriptum when using Ruby language runtime. | This chapter demonstrates how to work with bevy_scriptum when using Ruby language runtime. | ||||||
|  | Ruby is currently only supported on Linux. | ||||||
|  |  | ||||||
							
								
								
									
										12
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/lib.rs
									
									
									
									
									
								
							|  | @ -5,10 +5,10 @@ | ||||||
| //! ## Supported scripting languages/runtimes
 | //! ## Supported scripting languages/runtimes
 | ||||||
| //!
 | //!
 | ||||||
| //! | language/runtime                           | cargo feature | documentation chapter                                           |
 | //! | language/runtime                           | cargo feature | documentation chapter                                           |
 | ||||||
| //! | ----------------- | ------------- | --------------------------------------------------------------- |
 | //! | ------------------------------------------ | ------------- | --------------------------------------------------------------- |
 | ||||||
| //! | 🌙 LuaJIT                                  | `lua`         | [link](https://jarkonik.github.io/bevy_scriptum/lua/lua.html)   |
 | //! | 🌙 LuaJIT                                  | `lua`         | [link](https://jarkonik.github.io/bevy_scriptum/lua/lua.html)   |
 | ||||||
| //! | 🌾 Rhai                                    | `rhai`        | [link](https://jarkonik.github.io/bevy_scriptum/rhai/rhai.html) |
 | //! | 🌾 Rhai                                    | `rhai`        | [link](https://jarkonik.github.io/bevy_scriptum/rhai/rhai.html) |
 | ||||||
| //! | 💎 Ruby           | `ruby`        | [link](https://jarkonik.github.io/bevy_scriptum/ruby/ruby.html) |
 | //! | 💎 Ruby(currently only supported on Linux) | `ruby`        | [link](https://jarkonik.github.io/bevy_scriptum/ruby/ruby.html) |
 | ||||||
| //!
 | //!
 | ||||||
| //! Documentation book is available [here](https://jarkonik.github.io/bevy_scriptum/) 📖
 | //! Documentation book is available [here](https://jarkonik.github.io/bevy_scriptum/) 📖
 | ||||||
| //!
 | //!
 | ||||||
|  | @ -510,7 +510,7 @@ impl<R: Runtime> Default for Callbacks<R> { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[cfg(debug_assertions)] | #[cfg(all(debug_assertions, unix))] | ||||||
| pub extern "C" fn is_rdynamic_linking() -> bool { | pub extern "C" fn is_rdynamic_linking() -> bool { | ||||||
|     unsafe { |     unsafe { | ||||||
|         // Get a function pointer to itself
 |         // Get a function pointer to itself
 | ||||||
|  | @ -524,6 +524,12 @@ pub extern "C" fn is_rdynamic_linking() -> bool { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #[cfg(any(not(debug_assertions), not(unix)))] | ||||||
|  | pub extern "C" fn is_rdynamic_linking() -> bool { | ||||||
|  |     // On Windows or in release builds, return a default value
 | ||||||
|  |     true | ||||||
|  | } | ||||||
|  | 
 | ||||||
| pub mod prelude { | pub mod prelude { | ||||||
|     pub use crate::{BuildScriptingRuntime as _, Runtime as _, Script}; |     pub use crate::{BuildScriptingRuntime as _, Runtime as _, Script}; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue