[package]
name = "roxlap-scene"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
rust-version.workspace = true
readme.workspace = true
description = "Scene-graph layer for the roxlap voxel engine: many independent chunked voxel grids, each with f64 world position and Quat rotation."
documentation = "https://docs.rs/roxlap-scene"
keywords = ["voxlap", "voxel", "scene-graph", "chunk", "engine"]
categories = ["game-development", "graphics"]

[dependencies]
glam = { workspace = true }
roxlap-cavegen = { path = "../roxlap-cavegen", version = "0.24" }
roxlap-core = { path = "../roxlap-core", version = "0.24" }
roxlap-formats = { path = "../roxlap-formats", version = "0.24" }
serde = { workspace = true }
# QE.5b — the versioned snapshot wire format
# (`Scene::save_snapshot` / `load_snapshot`: magic + u32 version +
# bincode payload) makes the payload codec concrete, so bincode
# graduates from dev-dependency to dependency. Hosts wanting another
# payload codec still serialise `Scene::to_snapshot`'s serde value
# themselves. Pinned to 1.x for wire stability.
bincode = "1"

# rayon everywhere, mirroring roxlap-core: the bake waves (chunks.rs)
# and the scissor row-bands (render.rs) par_iter unconditionally.
# rayon compiles on plain wasm32 (single-threaded until the host's
# wasm-bindgen-rayon adapter spins up Workers — R10.X.2).
rayon = { workspace = true }

# S7.3: background chunk-generation pool's result channel — native
# only; on wasm32 the streaming pump short-circuits to the
# synchronous path.
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
crossbeam-channel = { workspace = true }

[lints]
workspace = true
