[workspace]
members = [
    "crates/blacksite_surface",
    "crates/content_pipeline",
    "crates/editor_ui",
    "crates/game",
    "crates/game_hot",
    "crates/material_schema",
    "crates/shared",
    "crates/editor",
    "crates/ui_gallery",
    "crates/protocol",
    "crates/sim",
    "crates/settings",
    "crates/scene",
    "xtask",
]
resolver = "2"

[workspace.package]
version = "0.1.0"
edition = "2021"
license = "MIT OR Apache-2.0"

[workspace.dependencies]
avian3d = { version = "0.7", default-features = false, features = [
    "3d",
    "f32",
    "parry-f32",
    "bevy_scene",
    "collider-from-mesh",
    "serialize",
] }
bevy = { version = "0.19", features = [
    "serialize",
    "basis-universal",
    "ktx2",
    "jpeg",
    "vorbis",
    "wav",
    "mp3",
    "flac",
] }
bevy_core_pipeline = "0.19"
bevy_solari = "0.19"
blacksite_surface = { path = "crates/blacksite_surface" }
content_pipeline = { path = "crates/content_pipeline" }
bevy_ufbx = "0.18.1-rc.1"
bevy_egui = "0.40"
egui = "0.34.3"
eframe = { version = "0.34.1", default-features = false, features = ["default_fonts", "glow", "wayland", "x11"] }
bevy-inspector-egui = "0.37"
egui_dock = { version = "0.19.1", features = ["serde"] }
egui_phosphor_icons = { version = "0.3.1", default-features = false, features = ["bold"] }
editor_ui = { path = "crates/editor_ui" }
material_schema = { path = "crates/material_schema" }
transform-gizmo-bevy = "0.9"
serde = { version = "1", features = ["derive"] }
nav_glam = { package = "glam", version = "=0.30.10", features = ["serde"] }
polyanya = { version = "=0.16.1", default-features = false, features = ["recast", "serde"] }
rerecast = { version = "=0.3.2", default-features = false, features = ["std", "serialize"] }
shared = { path = "crates/shared" }
game = { path = "crates/game" }
game_hot = { path = "crates/game_hot" }
protocol = { path = "crates/protocol" }
sim = { path = "crates/sim" }
settings = { path = "crates/settings" }
scene = { path = "crates/scene" }

[patch.crates-io]
# Blacksite Surface ABI and deformation-safety integration for Solari.
bevy_solari = { path = "third_party/bevy_solari" }
# Local Bevy 0.19 compatibility patch until upstream publishes a matching FBX loader.
bevy_ufbx = { path = "third_party/bevy_ufbx" }
# Lossless RON editing fixes used by transactional prefab source edits.
ron-edit = { path = "third_party/ron-edit" }
# Atmosphere-aware mesh view bind groups (WYSIWYG editor + transform gizmos).
transform-gizmo-bevy = { path = "third_party/transform-gizmo-bevy" }

# Compile our own crate with light optimizations, but fully optimize dependencies
# (the bevy/wgpu stack) so debug builds are not unbearably slow.
[profile.dev]
opt-level = 1
rpath = true

[profile.dev.package."*"]
opt-level = 3

# Tests keep source line information without retaining full multi-gigabyte Bevy
# debug images or incremental caches. The dev profile remains fully debuggable.
[profile.test]
opt-level = 1
debug = "line-tables-only"
incremental = false

[profile.test.package."*"]
opt-level = 3

# A snappy release profile for shipping builds.
[profile.release]
lto = "thin"
codegen-units = 1
strip = "symbols"

# Export profiles keep runtime optimization and compact binaries without forcing
# release LTO into normal editor iteration.
[profile.package-dev]
inherits = "release"
lto = false
codegen-units = 16
strip = "symbols"

[profile.package-qa]
inherits = "release"
lto = false
codegen-units = 8
debug = "line-tables-only"
strip = "none"
