[workspace]
resolver = "2"
members = [
    "engine",
    "engine-derive",
    "physics",
    "script",
    "editor",
    "examples",
    "tests",
]

[workspace.package]
version = "0.1.0"
edition = "2021"
authors = ["Jaroslav Beneš"]
license = "MIT"
rust-version = "1.75"

[workspace.dependencies]
# Math
glam = { version = "0.28", features = ["serde"] }

# ECS
hecs = "0.10"

# Windowing & graphics
# Linux is the primary target on BOTH Wayland and Xorg (X11): keep both winit
# backends explicitly enabled so neither can be dropped by a default-feature
# change. (On by default today; listing them makes the contract explicit —
# see PLAN.md "Platform & Target Strategy".)
winit = { version = "0.30", features = ["x11", "wayland", "serde"] }
wgpu = "29"
pollster = "0.4"
# Plain-old-data casting for GPU vertex/uniform buffers.
bytemuck = { version = "1", features = ["derive"] }
# glTF import (static meshes). `utils` enables the attribute reader helpers.
gltf = { version = "1.4", features = ["utils"] }

# TrueType / OpenType font parsing + glyph outline rasterization for the
# Stage-8 in-game UI text system. Chosen over `fontdue` for its minimal
# scope (parsing + rasterization only) — the engine writes its own atlas,
# layout, wrapping, and alignment on top, which keeps the door open for
# richer text features in later pieces (editor caret, rich markup, SDF).
ab_glyph = "0.2"

# Editor UI (egui — integrated into oxide-editor only)
egui = "0.34"
egui-wgpu = "0.34"
egui-winit = "0.34"
egui_dock = "0.19"

# Logging
log = "0.4"
env_logger = "0.11"

# Error handling
anyhow = "1"
thiserror = "2"

# Serialization
serde = { version = "1", features = ["derive"] }
ron = "0.8"

# Proc-macro toolkit for `oxide-engine-derive` (the `#[derive(Reflect)]` macro
# behind the reflection-driven editor inspector — Stage 8.5).
syn = { version = "2", features = ["full"] }
quote = "1"
proc-macro2 = "1"

# Filesystem change events (Stage 6 file-watcher foundation; Stage 10 hot-reload).
notify = "8"

# Benchmarking
criterion = "0.5"

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
