mirror of
https://github.com/bevyengine/bevy
synced 2024-11-25 14:10:19 +00:00
1a41c736b3
# Objective #15349 added an `impl_reflect!` for `glam::EulerRot`. This was done by copying and pasting the enum definition from `glam` into `bevy_reflect` so that the macro could interpret the variants. However, as mentioned in the description for that PR, this would need to be updated for `glam` 0.29, as it had not been updated yet. #15249 came and updated `glam` to 0.29, but did not change these impls. This is understandable as failing to do so doesn't cause any compile errors. This PR updates the definition and aims to make this silent breakage a little less silent. ## Solution Firstly, I updated the definition for `EulerRot` to match the one from `glam`. Secondly, I added the `assert_type_match` crate, which I created specifically to solve this problem. By using this crate, we'll get a compile time error if `glam` ever decides to change `EulerRot` again. In the future we can consider using it for other types with this problem, including in other crates (I'm pretty sure `bevy_window` and/or `bevy_winit` also copy+paste some types). I made sure to use as few dependencies as possible so everything should already be in-tree (it's just `quote`, `proc-macro2`, and `syn` with default features). ## Testing No tests added. CI should pass. --- ## Migration Guide The reflection implementation for `EulerRot` has been updated to align with `glam` 0.29. Please update any reflection-based usages accordingly.
70 lines
2.1 KiB
TOML
70 lines
2.1 KiB
TOML
[package]
|
|
name = "bevy_reflect"
|
|
version = "0.15.0-dev"
|
|
edition = "2021"
|
|
description = "Dynamically interact with rust types"
|
|
homepage = "https://bevyengine.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["bevy"]
|
|
rust-version = "1.76.0"
|
|
|
|
[features]
|
|
default = ["smallvec", "debug", "alloc"]
|
|
# When enabled, provides Bevy-related reflection implementations
|
|
bevy = ["smallvec", "smol_str"]
|
|
glam = ["dep:glam"]
|
|
petgraph = ["dep:petgraph"]
|
|
smallvec = ["dep:smallvec"]
|
|
uuid = ["dep:uuid"]
|
|
wgpu-types = ["dep:wgpu-types"]
|
|
# Enables features useful for debugging reflection
|
|
debug = ["debug_stack"]
|
|
# When enabled, keeps track of the current serialization/deserialization context for better error messages
|
|
debug_stack = []
|
|
# When enabled, allows documentation comments to be accessed via reflection
|
|
documentation = ["bevy_reflect_derive/documentation"]
|
|
# Enables function reflection
|
|
functions = ["bevy_reflect_derive/functions"]
|
|
alloc = []
|
|
|
|
[dependencies]
|
|
# bevy
|
|
bevy_reflect_derive = { path = "derive", version = "0.15.0-dev" }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.15.0-dev" }
|
|
bevy_ptr = { path = "../bevy_ptr", version = "0.15.0-dev" }
|
|
|
|
# other
|
|
erased-serde = "0.4"
|
|
disqualified = "1.0"
|
|
downcast-rs = "1.2"
|
|
thiserror = "1.0"
|
|
serde = "1"
|
|
smallvec = { version = "1.11", optional = true }
|
|
assert_type_match = "0.1.1"
|
|
|
|
glam = { version = "0.29", features = ["serde"], optional = true }
|
|
petgraph = { version = "0.6", features = ["serde-1"], optional = true }
|
|
smol_str = { version = "0.2.0", features = ["serde"], optional = true }
|
|
uuid = { version = "1.0", optional = true, features = ["v4", "serde"] }
|
|
wgpu-types = { version = "22", features = ["serde"], optional = true }
|
|
|
|
[dev-dependencies]
|
|
ron = "0.8.0"
|
|
rmp-serde = "1.1"
|
|
bincode = "1.3"
|
|
serde_json = "1.0"
|
|
serde = { version = "1", features = ["derive"] }
|
|
static_assertions = "1.1.0"
|
|
|
|
[[example]]
|
|
name = "reflect_docs"
|
|
path = "examples/reflect_docs.rs"
|
|
required-features = ["documentation"]
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"]
|
|
all-features = true
|