[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_ecs/detailed_trace", "bevy_render?/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)
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",
]

# Percentage-closer soft shadows
experimental_pbr_pcss = ["bevy_pbr?/experimental_pbr_pcss"]

# 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"]
bevy_window = ["dep:bevy_window", "dep:bevy_a11y"]

# 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_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"]

# Provides a mesh picking backend
bevy_mesh_picking_backend = [
  "bevy_picking",
  "bevy_picking/bevy_mesh_picking_backend",
]

# Provides a sprite picking backend
bevy_sprite_picking_backend = [
  "bevy_picking",
  "bevy_sprite/bevy_sprite_picking_backend",
]

# Provides a UI picking backend
bevy_ui_picking_backend = ["bevy_picking", "bevy_ui/bevy_ui_picking_backend"]

# 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", optional = true }
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_input_focus = { path = "../bevy_input_focus", 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", optional = true }
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