mirror of
https://github.com/bevyengine/bevy
synced 2024-11-25 14:10:19 +00:00
76744bf58c
# Objective As discussed in #15341, ghost nodes are a contentious and experimental feature. In the interest of enabling ecosystem experimentation, we've decided to keep them in Bevy 0.15. That said, we don't use them internally, and don't expect third-party crates to support them. If the experimentation returns a negative result (they aren't very useful, an alternative design is preferred etc) they will be removed. We should clearly communicate this status to users, and make sure that users don't use ghost nodes in their projects without a very clear understanding of what they're getting themselves into. ## Solution To make life easy for users (and Bevy), `GhostNode` and all associated helpers remain public and are always available. However, actually constructing these requires enabling a feature flag that's clearly marked as experimental. To do so, I've added a meaningless private field. When the feature flag is enabled, our constructs (`new` and `default`) can be used. I've added a `new` constructor, which should be preferred over `Default::default` as that can be readily deprecated, allowing us to prompt users to swap over to the much nicer `GhostNode` syntax once this is a unit struct again. Full credit: this was mostly @cart's design: I'm just implementing it! ## Testing I've run the ghost_nodes example and it fails to compile without the feature flag. With the feature flag, it works fine :) --------- Co-authored-by: Zachary Harrold <zac@harrold.com.au>
295 lines
10 KiB
TOML
295 lines
10 KiB
TOML
[package]
|
|
name = "bevy_internal"
|
|
version = "0.15.0-dev"
|
|
edition = "2021"
|
|
description = "An internal Bevy crate used to facilitate optional dynamic linking via the 'dynamic_linking' feature"
|
|
homepage = "https://bevyengine.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["game", "engine", "gamedev", "graphics", "bevy"]
|
|
categories = ["game-engines", "graphics", "gui", "rendering"]
|
|
|
|
[features]
|
|
trace = [
|
|
"bevy_app/trace",
|
|
"bevy_asset?/trace",
|
|
"bevy_core_pipeline?/trace",
|
|
"bevy_ecs/trace",
|
|
"bevy_log/trace",
|
|
"bevy_pbr?/trace",
|
|
"bevy_render?/trace",
|
|
"bevy_hierarchy/trace",
|
|
"bevy_winit?/trace",
|
|
]
|
|
trace_chrome = ["bevy_log/tracing-chrome"]
|
|
trace_tracy = ["bevy_render?/tracing-tracy", "bevy_log/tracing-tracy"]
|
|
trace_tracy_memory = ["bevy_log/trace_tracy_memory"]
|
|
detailed_trace = ["bevy_utils/detailed_trace"]
|
|
|
|
sysinfo_plugin = ["bevy_diagnostic/sysinfo_plugin"]
|
|
|
|
# Texture formats that have specific rendering support (HDR enabled by default)
|
|
basis-universal = ["bevy_image/basis-universal", "bevy_render/basis-universal"]
|
|
dds = [
|
|
"bevy_image/dds",
|
|
"bevy_render/dds",
|
|
"bevy_core_pipeline/dds",
|
|
"bevy_gltf/dds",
|
|
]
|
|
exr = ["bevy_image/exr", "bevy_render/exr"]
|
|
hdr = ["bevy_image/hdr", "bevy_render/hdr"]
|
|
ktx2 = ["bevy_image/ktx2", "bevy_render/ktx2"]
|
|
|
|
# For ktx2 supercompression
|
|
zlib = ["bevy_image/zlib"]
|
|
zstd = ["bevy_image/zstd"]
|
|
|
|
# Image format support (PNG enabled by default)
|
|
avif = ["bevy_image/avif"]
|
|
bmp = ["bevy_image/bmp"]
|
|
ff = ["bevy_image/ff"]
|
|
gif = ["bevy_image/gif"]
|
|
ico = ["bevy_image/ico"]
|
|
jpeg = ["bevy_image/jpeg"]
|
|
png = ["bevy_image/png"]
|
|
pnm = ["bevy_image/pnm"]
|
|
qoi = ["bevy_image/qoi"]
|
|
tga = ["bevy_image/tga"]
|
|
tiff = ["bevy_image/tiff"]
|
|
webp = ["bevy_image/webp"]
|
|
|
|
# Enable SPIR-V passthrough
|
|
spirv_shader_passthrough = ["bevy_render/spirv_shader_passthrough"]
|
|
|
|
# Include tonemapping LUT KTX2 files.
|
|
tonemapping_luts = ["bevy_core_pipeline/tonemapping_luts"]
|
|
|
|
# Include SMAA LUT KTX2 Files
|
|
smaa_luts = ["bevy_core_pipeline/smaa_luts"]
|
|
|
|
# Audio format support (vorbis is enabled by default)
|
|
flac = ["bevy_audio/flac"]
|
|
mp3 = ["bevy_audio/mp3"]
|
|
vorbis = ["bevy_audio/vorbis"]
|
|
wav = ["bevy_audio/wav"]
|
|
minimp3 = ["bevy_audio/minimp3"]
|
|
symphonia-aac = ["bevy_audio/symphonia-aac"]
|
|
symphonia-all = ["bevy_audio/symphonia-all"]
|
|
symphonia-flac = ["bevy_audio/symphonia-flac"]
|
|
symphonia-isomp4 = ["bevy_audio/symphonia-isomp4"]
|
|
symphonia-vorbis = ["bevy_audio/symphonia-vorbis"]
|
|
symphonia-wav = ["bevy_audio/symphonia-wav"]
|
|
|
|
# Shader formats
|
|
shader_format_glsl = [
|
|
"bevy_render/shader_format_glsl",
|
|
"bevy_pbr?/shader_format_glsl",
|
|
]
|
|
shader_format_spirv = ["bevy_render/shader_format_spirv"]
|
|
|
|
serialize = [
|
|
"bevy_color?/serialize",
|
|
"bevy_core/serialize",
|
|
"bevy_ecs/serialize",
|
|
"bevy_input/serialize",
|
|
"bevy_math/serialize",
|
|
"bevy_scene?/serialize",
|
|
"bevy_sprite?/serialize",
|
|
"bevy_time/serialize",
|
|
"bevy_transform/serialize",
|
|
"bevy_ui?/serialize",
|
|
"bevy_window/serialize",
|
|
"bevy_winit?/serialize",
|
|
]
|
|
multi_threaded = [
|
|
"bevy_asset?/multi_threaded",
|
|
"bevy_ecs/multi_threaded",
|
|
"bevy_render?/multi_threaded",
|
|
"bevy_tasks/multi_threaded",
|
|
]
|
|
async-io = ["bevy_tasks/async-io"]
|
|
|
|
# Display server protocol support (X11 is enabled by default)
|
|
wayland = ["bevy_winit/wayland"]
|
|
x11 = ["bevy_winit/x11"]
|
|
|
|
# Android activity support (choose one)
|
|
android-native-activity = ["bevy_winit/android-native-activity"]
|
|
android-game-activity = ["bevy_winit/android-game-activity"]
|
|
|
|
# Transmission textures in `StandardMaterial`:
|
|
pbr_transmission_textures = [
|
|
"bevy_pbr?/pbr_transmission_textures",
|
|
"bevy_gltf?/pbr_transmission_textures",
|
|
]
|
|
|
|
# Multi-layer material textures in `StandardMaterial`:
|
|
pbr_multi_layer_material_textures = [
|
|
"bevy_pbr?/pbr_multi_layer_material_textures",
|
|
"bevy_gltf?/pbr_multi_layer_material_textures",
|
|
]
|
|
|
|
# Anisotropy texture in `StandardMaterial`:
|
|
pbr_anisotropy_texture = [
|
|
"bevy_pbr?/pbr_anisotropy_texture",
|
|
"bevy_gltf?/pbr_anisotropy_texture",
|
|
]
|
|
|
|
# Optimise for WebGL2
|
|
webgl = [
|
|
"bevy_core_pipeline?/webgl",
|
|
"bevy_pbr?/webgl",
|
|
"bevy_render?/webgl",
|
|
"bevy_gizmos?/webgl",
|
|
"bevy_sprite?/webgl",
|
|
]
|
|
|
|
webgpu = [
|
|
"bevy_core_pipeline?/webgpu",
|
|
"bevy_pbr?/webgpu",
|
|
"bevy_render?/webgpu",
|
|
"bevy_gizmos?/webgpu",
|
|
"bevy_sprite?/webgpu",
|
|
]
|
|
|
|
# enable systems that allow for automated testing on CI
|
|
bevy_ci_testing = ["bevy_dev_tools/bevy_ci_testing", "bevy_render?/ci_limits"]
|
|
|
|
# Enable animation support, and glTF animation loading
|
|
animation = ["bevy_animation", "bevy_gltf?/bevy_animation"]
|
|
|
|
bevy_sprite = ["dep:bevy_sprite", "bevy_gizmos?/bevy_sprite"]
|
|
bevy_pbr = ["dep:bevy_pbr", "bevy_gizmos?/bevy_pbr"]
|
|
|
|
# Used to disable code that is unsupported when Bevy is dynamically linked
|
|
dynamic_linking = ["bevy_diagnostic/dynamic_linking"]
|
|
|
|
# Enable using a shared stdlib for cxx on Android.
|
|
android_shared_stdcxx = ["bevy_audio/android_shared_stdcxx"]
|
|
|
|
# Enable AccessKit on Unix backends (currently only works with experimental
|
|
# screen readers and forks.)
|
|
accesskit_unix = ["bevy_winit/accesskit_unix"]
|
|
|
|
bevy_text = ["dep:bevy_text", "bevy_ui?/bevy_text"]
|
|
|
|
bevy_render = [
|
|
"dep:bevy_render",
|
|
"bevy_scene?/bevy_render",
|
|
"bevy_gizmos?/bevy_render",
|
|
]
|
|
|
|
# Enable assertions to check the validity of parameters passed to glam
|
|
glam_assert = ["bevy_math/glam_assert"]
|
|
|
|
# Enable assertions in debug builds to check the validity of parameters passed to glam
|
|
debug_glam_assert = ["bevy_math/debug_glam_assert"]
|
|
|
|
default_font = ["bevy_text?/default_font"]
|
|
|
|
# Enables the built-in asset processor for processed assets.
|
|
asset_processor = ["bevy_asset?/asset_processor"]
|
|
|
|
# Enables watching the filesystem for Bevy Asset hot-reloading
|
|
file_watcher = ["bevy_asset?/file_watcher"]
|
|
|
|
# Enables watching embedded files for Bevy Asset hot-reloading
|
|
embedded_watcher = ["bevy_asset?/embedded_watcher"]
|
|
|
|
# Enable system stepping support
|
|
bevy_debug_stepping = [
|
|
"bevy_ecs/bevy_debug_stepping",
|
|
"bevy_app/bevy_debug_stepping",
|
|
]
|
|
|
|
# Enables the meshlet renderer for dense high-poly scenes (experimental)
|
|
meshlet = ["bevy_pbr?/meshlet"]
|
|
|
|
# Enables processing meshes into meshlet meshes for bevy_pbr
|
|
meshlet_processor = ["bevy_pbr?/meshlet_processor"]
|
|
|
|
# Provides a collection of developer tools
|
|
bevy_dev_tools = ["dep:bevy_dev_tools"]
|
|
|
|
# Enable support for the Bevy Remote Protocol
|
|
bevy_remote = ["dep:bevy_remote"]
|
|
|
|
# Provides picking functionality
|
|
bevy_picking = [
|
|
"dep:bevy_picking",
|
|
"bevy_picking/bevy_mesh",
|
|
"bevy_ui?/bevy_picking",
|
|
"bevy_sprite?/bevy_picking",
|
|
]
|
|
|
|
# Enable support for the ios_simulator by downgrading some rendering capabilities
|
|
ios_simulator = ["bevy_pbr?/ios_simulator", "bevy_render?/ios_simulator"]
|
|
|
|
# Enable built in global state machines
|
|
bevy_state = ["dep:bevy_state"]
|
|
|
|
# Enables source location tracking for change detection, which can assist with debugging
|
|
track_change_detection = ["bevy_ecs/track_change_detection"]
|
|
|
|
# Enable function reflection
|
|
reflect_functions = [
|
|
"bevy_reflect/functions",
|
|
"bevy_app/reflect_functions",
|
|
"bevy_ecs/reflect_functions",
|
|
]
|
|
|
|
# Enable winit custom cursor support
|
|
custom_cursor = ["bevy_winit/custom_cursor"]
|
|
|
|
# Experimental support for nodes that are ignored for UI layouting
|
|
ghost_nodes = ["bevy_ui/ghost_nodes"]
|
|
|
|
[dependencies]
|
|
# bevy
|
|
bevy_a11y = { path = "../bevy_a11y", version = "0.15.0-dev" }
|
|
bevy_app = { path = "../bevy_app", version = "0.15.0-dev" }
|
|
bevy_core = { path = "../bevy_core", version = "0.15.0-dev" }
|
|
bevy_derive = { path = "../bevy_derive", version = "0.15.0-dev" }
|
|
bevy_diagnostic = { path = "../bevy_diagnostic", version = "0.15.0-dev" }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.15.0-dev" }
|
|
bevy_state = { path = "../bevy_state", optional = true, version = "0.15.0-dev" }
|
|
bevy_hierarchy = { path = "../bevy_hierarchy", version = "0.15.0-dev" }
|
|
bevy_input = { path = "../bevy_input", version = "0.15.0-dev" }
|
|
bevy_log = { path = "../bevy_log", version = "0.15.0-dev" }
|
|
bevy_math = { path = "../bevy_math", version = "0.15.0-dev" }
|
|
bevy_ptr = { path = "../bevy_ptr", version = "0.15.0-dev" }
|
|
bevy_reflect = { path = "../bevy_reflect", version = "0.15.0-dev", features = [
|
|
"bevy",
|
|
] }
|
|
bevy_time = { path = "../bevy_time", version = "0.15.0-dev" }
|
|
bevy_transform = { path = "../bevy_transform", version = "0.15.0-dev" }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.15.0-dev" }
|
|
bevy_window = { path = "../bevy_window", version = "0.15.0-dev" }
|
|
bevy_tasks = { path = "../bevy_tasks", version = "0.15.0-dev" }
|
|
# bevy (optional)
|
|
bevy_animation = { path = "../bevy_animation", optional = true, version = "0.15.0-dev" }
|
|
bevy_asset = { path = "../bevy_asset", optional = true, version = "0.15.0-dev" }
|
|
bevy_audio = { path = "../bevy_audio", optional = true, version = "0.15.0-dev" }
|
|
bevy_color = { path = "../bevy_color", optional = true, version = "0.15.0-dev" }
|
|
bevy_core_pipeline = { path = "../bevy_core_pipeline", optional = true, version = "0.15.0-dev" }
|
|
bevy_dev_tools = { path = "../bevy_dev_tools", optional = true, version = "0.15.0-dev" }
|
|
bevy_gilrs = { path = "../bevy_gilrs", optional = true, version = "0.15.0-dev" }
|
|
bevy_gizmos = { path = "../bevy_gizmos", optional = true, version = "0.15.0-dev", default-features = false }
|
|
bevy_gltf = { path = "../bevy_gltf", optional = true, version = "0.15.0-dev" }
|
|
bevy_image = { path = "../bevy_image", optional = true, version = "0.15.0-dev" }
|
|
bevy_pbr = { path = "../bevy_pbr", optional = true, version = "0.15.0-dev" }
|
|
bevy_picking = { path = "../bevy_picking", optional = true, version = "0.15.0-dev" }
|
|
bevy_remote = { path = "../bevy_remote", optional = true, version = "0.15.0-dev" }
|
|
bevy_render = { path = "../bevy_render", optional = true, version = "0.15.0-dev" }
|
|
bevy_scene = { path = "../bevy_scene", optional = true, version = "0.15.0-dev" }
|
|
bevy_sprite = { path = "../bevy_sprite", optional = true, version = "0.15.0-dev" }
|
|
bevy_text = { path = "../bevy_text", optional = true, version = "0.15.0-dev" }
|
|
bevy_ui = { path = "../bevy_ui", optional = true, version = "0.15.0-dev" }
|
|
bevy_winit = { path = "../bevy_winit", optional = true, version = "0.15.0-dev" }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"]
|
|
all-features = true
|