Files
benilla-octo/crates/benilla-formats/Cargo.toml
T
SamandClaude Fable 5 c827813351 cinematics play, and a lit particle stops brightening as you turn
- 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>
2026-08-29 17:24:50 +07:00

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"