" file "
" >> "comment.md"
+ next
+ }
+ { print $0 >> "comment.md" }
+ END { if (file != "") print " " >> "comment.md" }
+ ' "${{ env.DIFF_ARTIFACT }}"
+
+ - name: Add or Update PR Comment with Diff
+ id: pr_comment
+ continue-on-error: true
+ uses: peter-evans/create-or-update-comment@v4
+ with:
+ issue-number: ${{ env.PR_NUMBER }}
+ body-path: comment.md
+ edit-mode: replace
+ token: ${{ secrets.GITHUB_TOKEN }}
+ comment-identifier: bindings-diff
+
- name: Fail PR With URL
uses: actions/github-script@v6
with:
diff --git a/Cargo.toml b/Cargo.toml
index 14c05b8747..a67b23aeb3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -66,6 +66,7 @@ core_functions = ["bevy_mod_scripting_functions/core_functions"]
bevy_a11y_bindings = ["bevy_mod_scripting_functions/bevy_a11y"]
bevy_animation_bindings = ["bevy_mod_scripting_functions/bevy_animation"]
bevy_asset_bindings = ["bevy_mod_scripting_functions/bevy_asset"]
+bevy_camera_bindings = ["bevy_mod_scripting_functions/bevy_camera"]
bevy_color_bindings = ["bevy_mod_scripting_functions/bevy_color"]
bevy_core_pipeline_bindings = [
"bevy_mod_scripting_functions/bevy_core_pipeline",
@@ -76,17 +77,24 @@ bevy_gltf_bindings = ["bevy_mod_scripting_functions/bevy_gltf"]
bevy_image_bindings = ["bevy_mod_scripting_functions/bevy_image"]
bevy_input_bindings = ["bevy_mod_scripting_functions/bevy_input"]
bevy_input_focus_bindings = ["bevy_mod_scripting_functions/bevy_input_focus"]
+bevy_light_bindings = ["bevy_mod_scripting_functions/bevy_light"]
bevy_math_bindings = ["bevy_mod_scripting_functions/bevy_math"]
bevy_mesh_bindings = ["bevy_mod_scripting_functions/bevy_mesh"]
bevy_pbr_bindings = ["bevy_mod_scripting_functions/bevy_pbr"]
bevy_picking_bindings = ["bevy_mod_scripting_functions/bevy_picking"]
+bevy_post_process_bindings = ["bevy_mod_scripting_functions/bevy_post_process"]
bevy_reflect_bindings = ["bevy_mod_scripting_functions/bevy_reflect"]
bevy_render_bindings = ["bevy_mod_scripting_functions/bevy_render"]
bevy_scene_bindings = ["bevy_mod_scripting_functions/bevy_scene"]
bevy_sprite_bindings = ["bevy_mod_scripting_functions/bevy_sprite"]
+bevy_sprite_render_bindings = [
+ "bevy_mod_scripting_functions/bevy_sprite_render",
+]
bevy_text_bindings = ["bevy_mod_scripting_functions/bevy_text"]
bevy_time_bindings = ["bevy_mod_scripting_functions/bevy_time"]
bevy_transform_bindings = ["bevy_mod_scripting_functions/bevy_transform"]
+bevy_ui_bindings = ["bevy_mod_scripting_functions/bevy_ui"]
+bevy_ui_render_bindings = ["bevy_mod_scripting_functions/bevy_ui_render"]
# optional
unsafe_lua_modules = ["bevy_mod_scripting_lua?/unsafe_lua_modules"]
@@ -140,54 +148,57 @@ bevy_mod_scripting_core = { path = "crates/bevy_mod_scripting_core", version = "
# bevy
-bevy = { version = "0.16.0", default-features = false }
-bevy_math = { version = "0.16.0", default-features = false, features = ["std"] }
-bevy_transform = { version = "0.16.0", default-features = false }
-bevy_reflect = { version = "0.16.0", default-features = false }
-bevy_ecs = { version = "0.16.0", default-features = false }
-bevy_asset = { version = "0.16.0", default-features = false }
-bevy_app = { version = "0.16.0", default-features = false }
-bevy_log = { version = "0.16.0", default-features = false }
-bevy_internal = { version = "0.16.0", default-features = false }
-bevy_diagnostic = { version = "0.16.0", default-features = false }
-bevy_platform = { version = "0.16.0", default-features = false }
-bevy_time = { version = "0.16.0", default-features = false }
-bevy_input = { version = "0.16.0", default-features = false }
-bevy_a11y = { version = "0.16.0", default-features = false, features = [
+
+bevy = { version = "0.17", default-features = false }
+bevy_math = { version = "0.17", default-features = false, features = ["std"] }
+bevy_transform = { version = "0.17", default-features = false }
+bevy_reflect = { version = "0.17", default-features = false }
+bevy_ecs = { version = "0.17", default-features = false }
+bevy_asset = { version = "0.17", default-features = false }
+bevy_app = { version = "0.17", default-features = false }
+bevy_log = { version = "0.17", default-features = false }
+bevy_internal = { version = "0.17", default-features = false }
+bevy_diagnostic = { version = "0.17", default-features = false }
+bevy_platform = { version = "0.17", default-features = false }
+bevy_time = { version = "0.17", default-features = false }
+bevy_input = { version = "0.17", default-features = false }
+bevy_a11y = { version = "0.17", default-features = false, features = [
"std",
"bevy_reflect",
] }
-bevy_animation = { version = "0.16.0", default-features = false }
-bevy_color = { version = "0.16.0", default-features = false, features = [
+bevy_animation = { version = "0.17", default-features = false }
+bevy_color = { version = "0.17", default-features = false, features = [
"std",
"bevy_reflect",
] }
-bevy_core_pipeline = { version = "0.16.0", default-features = false }
-bevy_gizmos = { version = "0.16.0", default-features = false }
-bevy_gltf = { version = "0.16.0", default-features = false }
-bevy_image = { version = "0.16.0", default-features = false, features = [
+bevy_core_pipeline = { version = "0.17", default-features = false }
+bevy_gizmos = { version = "0.17", default-features = false }
+bevy_gltf = { version = "0.17", default-features = false }
+bevy_image = { version = "0.17", default-features = false, features = [
"bevy_reflect",
] }
-bevy_input_focus = { version = "0.16.0", default-features = false, features = [
+bevy_input_focus = { version = "0.17", default-features = false, features = [
"std",
"bevy_reflect",
] }
-bevy_mesh = { version = "0.16.0", default-features = false }
-bevy_pbr = { version = "0.16.0", default-features = false }
-bevy_picking = { version = "0.16.0", default-features = false }
-bevy_render = { version = "0.16.0", default-features = false }
-bevy_scene = { version = "0.16.0", default-features = false }
-bevy_sprite = { version = "0.16.0", default-features = false }
-bevy_text = { version = "0.16.0", default-features = false }
-bevy_window = { version = "0.16.0", default-features = false, features = [
+bevy_mesh = { version = "0.17", default-features = false }
+bevy_pbr = { version = "0.17", default-features = false }
+bevy_picking = { version = "0.17", default-features = false }
+bevy_render = { version = "0.17", default-features = false }
+bevy_scene = { version = "0.17", default-features = false }
+bevy_sprite = { version = "0.17", default-features = false }
+bevy_text = { version = "0.17", default-features = false }
+bevy_window = { version = "0.17", default-features = false, features = [
"bevy_reflect",
"std",
] }
-bevy_winit = { version = "0.16.0", default-features = false }
+bevy_winit = { version = "0.17", default-features = false }
+bevy_utils = { version = "0.17", default-features = false, features = ["std"] }
-glam = { version = "0.29.3", default-features = false }
-uuid = { version = "1.11", default-features = false }
+glam = { version = "0.30.7", default-features = false }
+uuid = { version = "1.13", default-features = false }
smol_str = { version = "0.2.0", default-features = false }
+nonmax = { version = "0.5", default-features = false, features = ["std"] }
# other
serde_json = { version = "1.0", default-features = false }
@@ -224,7 +235,7 @@ pretty_assertions = { version = "1.4", default-features = false, features = [
manifest-dir-macros = { version = "0.1.18", default-features = false }
assert_cmd = { version = "2.1", default-features = false }
tokio = { version = "1", default-features = false }
-bevy_console = { version = "0.14", default-features = false }
+bevy_console = { version = "0.16", default-features = false }
tracing-tracy = { version = "0.11", default-features = false }
libtest-mimic = { version = "0.8", default-features = false }
criterion = { version = "0.5", default-features = false }
@@ -238,10 +249,13 @@ bevy = { workspace = true, features = [
"bevy_asset",
"bevy_core_pipeline",
"bevy_sprite",
+ "bevy_sprite_render",
"bevy_state",
"x11",
"bevy_ui",
"default_font",
+ "custom_cursor",
+ "debug",
] }
bevy_platform = { workspace = true }
clap = { workspace = true, features = ["derive"] }
diff --git a/assets/scripts/game_of_life.lua b/assets/scripts/game_of_life.lua
index c217f6b821..49a2ce4d21 100644
--- a/assets/scripts/game_of_life.lua
+++ b/assets/scripts/game_of_life.lua
@@ -2,7 +2,6 @@ LifeState = world.get_type_by_name("LifeState")
Settings = world.get_type_by_name("Settings")
info("Lua: The game_of_life.lua script just got loaded")
-
math.randomseed(os.time())
function fetch_life_state()
@@ -37,11 +36,11 @@ function on_click(x, y)
local dimensions = settings.physical_grid_dimensions
local screen = settings.display_grid_dimensions
- local dimension_x = dimensions._1
- local dimension_y = dimensions._2
+ local dimension_x = dimensions[1]
+ local dimension_y = dimensions[2]
- local screen_x = screen._1
- local screen_y = screen._2
+ local screen_x = screen[1]
+ local screen_y = screen[2]
local cell_width = screen_x / dimension_x
local cell_height = screen_y / dimension_y
@@ -78,8 +77,8 @@ function on_update()
local cells = fetch_life_state().cells
local settings = world.get_resource(Settings)
local dimensions = settings.physical_grid_dimensions
- local dimension_x = dimensions._1
- local dimension_y = dimensions._2
+ local dimension_x = dimensions[1]
+ local dimension_y = dimensions[2]
-- primitives are passed by value to lua, keep a hold of old state but turn 255's into 1's
local prev_state = {}
diff --git a/assets/scripts/game_of_life.rhai b/assets/scripts/game_of_life.rhai
index 0b99e385c7..557cdcf478 100644
--- a/assets/scripts/game_of_life.rhai
+++ b/assets/scripts/game_of_life.rhai
@@ -40,11 +40,11 @@ fn on_click(x,y) {
let dimensions = settings.physical_grid_dimensions;
let screen = settings.display_grid_dimensions;
- let dimension_x = dimensions["_0"];
- let dimension_y = dimensions["_1"];
+ let dimension_x = dimensions[0];
+ let dimension_y = dimensions[1];
- let screen_x = screen["_0"];
- let screen_y = screen["_1"];
+ let screen_x = screen[0];
+ let screen_y = screen[1];
let cell_width = screen_x / dimension_x;
let cell_height = screen_y / dimension_y;
@@ -77,8 +77,8 @@ fn on_update() {
// note that here we do not make use of RhaiProxyable and just go off pure reflection
let settings = world.get_resource.call(Settings);
let dimensions = settings.physical_grid_dimensions;
- let dimension_x = dimensions["_0"];
- let dimension_y = dimensions["_1"];
+ let dimension_x = dimensions[0];
+ let dimension_y = dimensions[1];
// primitives are passed by value to rhai, keep a hold of old state but turn 255's into 1's
let prev_state = [];
diff --git a/assets/tests/add_system/added_systems_run_in_parallel.lua b/assets/tests/add_system/added_systems_run_in_parallel.lua
index f5c129280c..63788e88fc 100644
--- a/assets/tests/add_system/added_systems_run_in_parallel.lua
+++ b/assets/tests/add_system/added_systems_run_in_parallel.lua
@@ -41,7 +41,7 @@ digraph {
node_16 [label="on_test_post_update"];
node_17 [label="custom_system_a"];
node_18 [label="custom_system_b"];
- node_19 [label="SystemSet AssetEvents"];
+ node_19 [label="SystemSet AssetEventSystems"];
node_20 [label="SystemSet GarbageCollection"];
node_21 [label="SystemSet ListeningPhase"];
node_22 [label="SystemSet MachineStartPhase"];
diff --git a/assets/tests/add_system/added_systems_run_in_parallel.rhai b/assets/tests/add_system/added_systems_run_in_parallel.rhai
index b87e5e75a9..c3d84302fe 100644
--- a/assets/tests/add_system/added_systems_run_in_parallel.rhai
+++ b/assets/tests/add_system/added_systems_run_in_parallel.rhai
@@ -40,7 +40,7 @@ digraph {
node_16 [label="on_test_post_update"];
node_17 [label="custom_system_a"];
node_18 [label="custom_system_b"];
- node_19 [label="SystemSet AssetEvents"];
+ node_19 [label="SystemSet AssetEventSystems"];
node_20 [label="SystemSet GarbageCollection"];
node_21 [label="SystemSet ListeningPhase"];
node_22 [label="SystemSet MachineStartPhase"];
diff --git a/codegen/Cargo.bootstrap.toml b/codegen/Cargo.bootstrap.toml
index 90374660ef..3ef934e8b1 100644
--- a/codegen/Cargo.bootstrap.toml
+++ b/codegen/Cargo.bootstrap.toml
@@ -5,13 +5,16 @@ version = "0.1.0"
edition = "2024"
[dependencies]
+
+# {{ANALYZED_CRATE}}
bevy_mod_scripting_bindings = { path = "{{BMS_BINDINGS_PATH}}" }
-bevy_reflect = { version = "0.16.0", features = [
- "smol_str",
- "glam",
- "petgraph",
- "smallvec",
- "uuid",
-] }
+
+# bevy_reflect = { version = "0.17", features = [
+# "smol_str",
+# "glam",
+# "petgraph",
+# "smallvec",
+# "uuid",
+# ] }
[workspace]
diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml
index f80a2dab8d..b55887d35d 100644
--- a/codegen/Cargo.toml
+++ b/codegen/Cargo.toml
@@ -62,6 +62,7 @@ syn = { version = "2", features = ["parsing"], default-features = false }
itertools = "0.12"
chrono = "0.4"
pretty_assertions = "1.3"
+regex = "1"
[dependencies]
crate_feature_graph = { workspace = true, features = ["dot_parser", "serde"] }
@@ -81,6 +82,7 @@ serde = { workspace = true, features = ["std"] }
prettyplease = { workspace = true }
convert_case = { workspace = true }
chrono = { workspace = true }
+regex = { workspace = true }
[build-dependencies]
toml = "0.8"
diff --git a/codegen/build.rs b/codegen/build.rs
index b6690b0ffd..cee5f6012f 100644
--- a/codegen/build.rs
+++ b/codegen/build.rs
@@ -1,8 +1,48 @@
-fn main() {
+use std::{
+ path::{Path, PathBuf},
+ process::Command,
+};
+
+fn rustc_path(channel: &str) -> PathBuf {
+ let output = Command::new("rustup")
+ .args(["which", "--toolchain", channel, "rustc"])
+ .output()
+ .expect("failed to run rustup which");
+
+ let rustc_path = String::from_utf8(output.stdout).unwrap();
+
+ PathBuf::from(rustc_path.trim())
+}
+
+fn target_libdir(rustc: &Path) -> PathBuf {
+ let output = Command::new(rustc)
+ .args(["--print", "target-libdir"])
+ .output()
+ .expect("failed to run rustc --print target-libdir");
+
+ let libdir = String::from_utf8(output.stdout).unwrap();
+
+ PathBuf::from(libdir.trim())
+}
+
+pub fn main() {
// Use to set RUSTC_CHANNEL so we can compute target dir from rustc_plugin
let toolchain_toml = include_str!("rust-toolchain.toml");
let toolchain_table = toolchain_toml.parse::