- cinematics play: `SMSG_TRIGGER_CINEMATIC` resolves through `CinematicSequences.dbc` → `CinematicCamera.dbc` → a `Cameras\*.m2` whose camera record is an eye path, a look-at path and a roll — cubic tracks with the full step / linear / Bézier / Hermite dispatch the bone loops collapse to step-or-linear (every shipped fly-by is Bézier), planted at the row's origin and facing (`Rz(+facing)`, checked against vmangos's own waypoint table: 8.5 yd mean on the human path, 154 with the other sign); FOV is per shot (the Undead intro authors 90°, the rest 45°), roll is authored around whole turns, the flight ends at the sequence band's end, a trigger arriving before the loading cover lifts is latched and started when it does, ESC skips through `CinematicFrame`'s own `OnKeyDown` (`StopCinematic` has zero native callers), and every path acks — natural end, ESC, or an unresolvable trigger immediately, as before; `.debug play cinematic <id>` replays any of them - a cinematic hides the HUD — `UIParent:Hide()` reaches nothing here because the HUD frames are not its children, so the ALT-Z draw-level hide is used and the letterbox moves out of FrameXML onto Bevy UI nodes where that hide cannot reach it, recomputed per frame (bars only wider than 4:3, the picture cropped to 2:1) — and the restore only un-hides a UI this module hid - a lit particle's normal is world up, one constant per draw, not camera-facing: Onyxia's always-on floor haze read about four times brighter from a level camera than from above because the shader dotted a to-eye normal against a fixed light; the reference uploads row 2 of the view matrix — world +Z carried into eye space — on every vertex and carries the light into the same frame, so the rotation cancels; 400 lit emitters (the waterfalls, chimney and campfire smoke, Westfall dust, Dun Morogh snow) stop brightening and dimming as you turn - the `play` profile drops ThinLTO — rustc #86049 was intermittently poisoning the incremental link with `_anon.<hash>.llvm.<id>` symbols promoted by an earlier compile (48 unresolved across 7 codegen units; 1065 such symbols → 0 after) — and `benilla-formats` stops taking `image` with default features, which had been compiling a complete AV1 encoder into a crate that writes two PNGs: 499 → 466 workspace crates Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
2.0 KiB
TOML
42 lines
2.0 KiB
TOML
[package]
|
|
name = "benilla-formats"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "WoW 1.12.1 asset-format adapters (MPQ/BLP/DBC/ADT/WDT) and the benilla-extract CLI"
|
|
|
|
[features]
|
|
# The dev/player seam (0026, built by 1173/1174). Default-on, so every normal build keeps the
|
|
# instruments; `--no-default-features` is the player build. Here it gates exactly one thing:
|
|
# `install::candidates`' project-folder probe, which bakes THIS source tree's absolute path
|
|
# (decision 1175). EVERY dependent must take this crate with `default-features = false` and
|
|
# re-export `dev`, or feature unification puts `/Users/…` back into a player binary —
|
|
# `scripts/gates.sh`'s `--no-default-features` line is what catches getting that wrong.
|
|
default = ["dev"]
|
|
dev = []
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
clap.workspace = true
|
|
benilla-adt = { path = "../benilla-adt" }
|
|
benilla-bytes = { path = "../benilla-bytes" }
|
|
benilla-dbc = { path = "../benilla-dbc" }
|
|
benilla-m2 = { path = "../benilla-m2" }
|
|
benilla-mpq = { path = "../benilla-mpq" }
|
|
benilla-blp = { path = "../benilla-blp" }
|
|
# PNG only, matching every sibling crate. `image`'s DEFAULT features enable `avif`, which drags
|
|
# in ravif -> rav1e -> av-scenechange: a complete AV1 video ENCODER, monomorphized into this
|
|
# crate, for the two calls below that both write a PNG. Cutting it takes this crate's graph from
|
|
# 112 to 48 dependencies and the workspace's from 499 to 466.
|
|
#
|
|
# It is NOT why `cargo play` used to fail to link -- that was rustc #86049, fixed by `lto = "off"`
|
|
# in `[profile.play]` (decision 1698). The tempting story is that rav1e's monomorphized bulk is
|
|
# what tripped it; the evidence says otherwise, since 2 of the 7 poisoned codegen units held only
|
|
# our own DBC catalog loaders. Two independent wins, and this is the smaller one. Decision 1698.
|
|
image = { version = "0.25", default-features = false, features = ["png"] }
|
|
benilla-wdt = { path = "../benilla-wdt" }
|
|
benilla-wmo = { path = "../benilla-wmo" }
|
|
|
|
[dev-dependencies]
|
|
glam = "0.31"
|