[package]
edition = "2024"
rust-version = "1.90"
name = "nightshade"
version = "0.7.0"
authors = ["Matthew Berger <matthewjordanberger@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A cross-platform data-oriented game engine."
homepage = "https://github.com/matthewjberger/nightshade"
readme = "README.md"
keywords = [
"gamedev",
"engine",
"ecs",
"wgpu",
"webgpu",
]
categories = [
"game-engines",
"graphics",
"rendering::engine",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/matthewjberger/nightshade"
resolver = "2"
[package.metadata.cargo-machete]
ignored = [
"nalgebra",
"getrandom",
]
[features]
assets = [
"core",
"dep:gltf",
"dep:half",
"dep:image",
"dep:bincode",
"dep:serde_json",
"dep:lz4_flex",
]
async_runtime = [
"core",
"dep:tokio",
]
audio = ["dep:kira"]
behaviors = []
chrome = [
"tracing",
"dep:tracing-chrome",
]
claude = ["dep:serde_json"]
core = [
"dep:freecs",
"dep:bytemuck",
"dep:bitflags",
"dep:tracing",
"dep:tracing-subscriber",
"dep:thiserror",
"dep:nalgebra",
"dep:nalgebra-glm",
"dep:raw-window-handle",
"dep:web-time",
"dep:winit",
"dep:mint",
"dep:strum",
"dep:uuid",
"dep:getrandom",
"dep:console_error_panic_hook",
"dep:tracing-web",
"dep:pollster",
"dep:petgraph",
"dep:serde_json",
]
default = [
"engine",
"wgpu",
]
editor = [
"mosaic",
"picking",
"dep:syntect",
"dep:arboard",
]
egui = [
"dep:egui",
"dep:egui_extras",
"dep:egui-winit",
"dep:egui-wgpu",
"dep:egui_tiles",
]
engine = [
"runtime",
"assets",
"scene_graph",
"picking",
"file_dialog",
"async_runtime",
"terrain",
"screenshot",
"dep:rand",
"dep:rayon",
"dep:ehttp",
"dep:futures",
"dep:js-sys",
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"dep:web-sys",
]
fbx = [
"assets",
"dep:ufbx",
]
fft = ["dep:rustfft"]
file_dialog = [
"core",
"dep:rfd",
"dep:dirs",
]
full = [
"engine",
"wgpu",
"egui",
"shell",
"audio",
"physics",
"gamepad",
"navmesh",
"scripting",
"fbx",
"lattice",
"sdf_sculpt",
"mosaic",
"editor",
"plugins",
"claude",
"mcp",
]
gamepad = ["dep:gilrs"]
lattice = []
mcp = [
"async_runtime",
"behaviors",
"dep:axum",
"dep:rmcp",
"dep:schemars",
]
mosaic = [
"egui",
"dep:serde_json",
"dep:bincode",
"dep:indexmap",
]
navmesh = [
"dep:rerecast",
"dep:glam",
]
openxr = [
"dep:openxr",
"dep:ash",
"dep:wgpu-hal",
"dep:gpu-allocator",
"wgpu/vulkan",
]
physics = ["dep:rapier3d"]
picking = []
plugin_runtime = [
"assets",
"dep:wasmtime",
"dep:wasmtime-wasi",
"dep:anyhow",
]
plugins = []
runtime = [
"core",
"text",
"behaviors",
]
scene_graph = ["assets"]
screenshot = ["dep:image"]
scripting = ["dep:rhai"]
sdf_sculpt = []
shell = ["egui"]
steam = [
"dep:steamworks",
"dep:steamworks-sys",
]
terminal = [
"dep:crossterm",
"dep:rand",
"dep:freecs",
]
terrain = [
"core",
"dep:noise",
"dep:rand",
]
text = [
"core",
"dep:fontdue",
]
tracing = ["dep:tracing-appender"]
tracy = [
"tracing",
"dep:tracing-tracy",
]
tui = [
"runtime",
"text",
"dep:rand",
]
webview = [
"dep:wry",
"dep:tiny_http",
"dep:include_dir",
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"dep:js-sys",
"dep:web-sys",
]
wgpu = [
"dep:wgpu",
"wgpu/wgsl",
"wgpu/dx12",
"wgpu/metal",
"wgpu/vulkan",
"wgpu/webgpu",
]
windows-app-icon = [
"dep:winresource",
"dep:ico",
"dep:image",
]
[lib]
name = "nightshade"
path = "src/lib.rs"
[[example]]
name = "minimal"
path = "examples/minimal.rs"
[dependencies.base64]
version = "0.22"
[dependencies.bincode]
version = "1.3"
optional = true
[dependencies.bitflags]
version = "2.10.0"
features = ["serde"]
optional = true
[dependencies.bytemuck]
version = "1.24.0"
optional = true
[dependencies.crossterm]
version = "0.29"
optional = true
[dependencies.egui]
version = "0.33.3"
features = [
"bytemuck",
"default_fonts",
]
optional = true
default-features = false
[dependencies.egui-wgpu]
version = "0.33.3"
features = ["winit"]
optional = true
default-features = false
[dependencies.egui_extras]
version = "0.33.3"
features = ["all_loaders"]
optional = true
default-features = false
[dependencies.egui_tiles]
version = "0.14"
optional = true
[dependencies.ehttp]
version = "0.6"
optional = true
[dependencies.fontdue]
version = "0.9"
optional = true
[dependencies.freecs]
version = "1.6.0"
optional = true
[dependencies.getrandom]
version = "0.3"
features = ["wasm_js"]
optional = true
[dependencies.gilrs]
version = "0.11.0"
optional = true
[dependencies.glam]
version = "0.30"
optional = true
[dependencies.gltf]
version = "1.4.1"
features = [
"KHR_lights_punctual",
"KHR_materials_unlit",
"names",
"KHR_materials_pbrSpecularGlossiness",
"KHR_materials_transmission",
"KHR_materials_volume",
"KHR_materials_ior",
"KHR_materials_specular",
"KHR_materials_emissive_strength",
"import",
]
optional = true
[dependencies.half]
version = "2.7.1"
optional = true
[dependencies.indexmap]
version = "2.0"
optional = true
[dependencies.kira]
version = "0.11.0"
optional = true
[dependencies.lz4_flex]
version = "0.11"
optional = true
[dependencies.mint]
version = "0.5"
optional = true
[dependencies.nalgebra]
version = "0.34.1"
features = ["serde-serialize"]
optional = true
[dependencies.nalgebra-glm]
version = "0.20.0"
features = ["convert-bytemuck"]
optional = true
[dependencies.noise]
version = "0.9"
optional = true
[dependencies.petgraph]
version = "0.8"
features = ["serde-1"]
optional = true
[dependencies.pollster]
version = "0.4"
optional = true
[dependencies.postcard]
version = "1.1"
features = ["alloc"]
[dependencies.rand]
version = "0.9"
optional = true
[dependencies.rapier3d]
version = "0.30"
features = [
"debug-render",
"serde-serialize",
]
optional = true
[dependencies.raw-window-handle]
version = "0.6.2"
optional = true
[dependencies.rayon]
version = "1.10"
optional = true
[dependencies.rerecast]
version = "0.2"
features = ["std"]
optional = true
default-features = false
[dependencies.rustfft]
version = "6.2"
optional = true
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
optional = true
[dependencies.strum]
version = "0.27"
features = ["derive"]
optional = true
[dependencies.thiserror]
version = "2.0"
optional = true
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.uuid]
version = "1.0"
features = [
"v4",
"serde",
]
optional = true
[dependencies.web-time]
version = "1.1.0"
optional = true
[dependencies.wgpu]
version = "27.0.1"
optional = true
default-features = false
[dependencies.winit]
version = "0.30.12"
features = ["serde"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.anyhow]
version = "1.0"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.arboard]
version = "3.0"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.ash]
version = "0.38"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.axum]
version = "0.8"
features = ["macros"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.dirs]
version = "6.0"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.egui-winit]
version = "0.33.3"
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gpu-allocator]
version = "0.28"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.image]
version = "0.25"
features = [
"png",
"hdr",
]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.include_dir]
version = "0.7"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.openxr]
version = "0.21"
features = [
"static",
"loaded",
]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.rfd]
version = "0.17"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.rhai]
version = "1.23"
features = ["sync"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.rmcp]
version = "0.2"
features = [
"server",
"transport-sse-server",
"transport-streamable-http-server",
]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.schemars]
version = "0.8"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.steamworks]
version = "0.12"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.steamworks-sys]
version = "0.12"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.syntect]
version = "5.3"
features = ["default-fancy"]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tiny_http]
version = "0.12"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1.49.0"
features = [
"rt-multi-thread",
"signal",
"sync",
"time",
]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tracing-appender]
version = "0.2"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tracing-chrome]
version = "0.7"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tracing-tracy]
version = "0.11"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.ufbx]
version = "0.10"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.wasmtime]
version = "40.0"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.wasmtime-wasi]
version = "40.0"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.wgpu-hal]
version = "27.0.0"
features = ["vulkan"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.wry]
version = "0.54"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.console_error_panic_hook]
version = "0.1.7"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.egui-winit]
version = "0.33.3"
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.futures]
version = "0.3.31"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.image]
version = "0.25"
features = [
"png",
"hdr",
]
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.js-sys]
version = "0.3"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.rhai]
version = "1.23"
features = [
"sync",
"wasm-bindgen",
]
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.tracing-web]
version = "0.1"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.uuid]
version = "1.0"
features = [
"v4",
"js",
"serde",
]
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen]
version = "0.2"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen-futures]
version = "0.4.56"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.web-sys]
version = "0.3"
features = [
"Blob",
"BlobPropertyBag",
"DataTransfer",
"Document",
"DragEvent",
"Element",
"Event",
"EventTarget",
"File",
"FileList",
"FileReader",
"HtmlAnchorElement",
"HtmlInputElement",
"ProgressEvent",
"Url",
"Window",
]
optional = true
[target."cfg(windows)".dependencies.ico]
version = "0.5"
optional = true
[target."cfg(windows)".dependencies.winresource]
version = "0.1"
optional = true