Files
wds/src/engine/mod.rs
T
irrlicht 56d92cdb46 Map-Loader entfernt: glTF ist das einzige 3D-Format
engine/map.rs + render/brush.rs raus, Welt kommt komplett aus .glb.
Spawn via Empty mit role=spawn statt info_player_start; testscene.glb
(Boden, Wände, Spawn) ersetzt test.map.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:37:18 +02:00

41 lines
1.5 KiB
Rust

//! Headless-Kern: alles, was läuft, ohne dass ein Frontend existiert.
//!
//! Schicht-Regel: `engine` kennt keine Frontends. Nach außen kommuniziert
//! der Kern nur über Rückgabewerte (`StoryState`, Tags) und die
//! [`game::Action`]-Queue — niemals über Aufrufe in Frontend-Module.
//! Frontends (CLI-REPL jetzt, Renderer später) sind Geschwister-Module,
//! die `engine` konsumieren; die Richtung kehrt sich nie um.
//!
//! Interner Abhängigkeitsgraph (azyklisch, Pfeil = „benutzt"):
//!
//! kv ← ink ← game ← story_ctrl ← signals
//! ↑ ↑
//! kv assets
//!
//! Bitte azyklisch halten: neue Querverbindungen lieber über Rückgabewerte
//! an den Aufrufer lösen (so wie story_ctrl Tags zurückgibt, statt selbst
//! signals::dispatch zu rufen).
//!
//! `gltf` und `tga` sind reine Decoder (Bytes → owned Daten, hängen an
//! nichts) — die geteilte Heimat für Format-Dekodierung, die jedes
//! Frontend per Pull konsumiert. `gltf` ist DER 3D-Pfad (Blender-first:
//! Sichtgeometrie, Collider/Trigger via Custom Properties, Empties aus
//! einem Export) und produziert das neutrale `model::Model`.
//!
//! `player` ist die First-Person-Physik, aus der der Renderer seine View
//! ableitet; `collision` (hängt an `model`) liefert ihr die Welt für den
//! Swept-AABB-Trace in `player::step`. Beide bleiben headless.
pub mod assets;
pub mod collision;
pub mod game;
pub mod gltf;
pub mod ink;
pub mod kv;
pub mod model;
pub mod player;
pub mod signals;
pub mod story_ctrl;
pub mod tga;
pub mod trigger;