model::Model: Doku als Loader/Konsumenten-Vertrag, nicht Format-Abstraktion

Nach dem Rauswurf der OBJ- und Map-Loader-Pfade (glTF ist der einzige
3D-Pfad) verkaufte die model.rs-Doku eine Format-Neutralität, die es nicht
mehr gibt. Der Typ bleibt — er ist die legitime Entkopplungsgrenze
zwischen dem einen Produzenten (gltf) und seinen Konsumenten (collision,
trigger, audio, render::props, session::load_props), die alle auf einer
geparsten Struktur arbeiten statt selbst glTF zu lesen. Nur die
Formulierung wird ehrlich.

Reine Kommentaränderung in model.rs, gltf.rs, engine/mod.rs, render/props.rs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0196AM4UyAJEXVtPvp5DdKr8
This commit is contained in:
irrlicht
2026-09-01 23:04:31 +02:00
co-authored by Claude Sonnet 5
parent 236a643d04
commit 6e84fe9b1b
4 changed files with 15 additions and 11 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
//! glTF-Binary-Loader (.glb, Blender-Export) → neutrales [`Model`].
//! glTF-Binary-Loader (.glb, Blender-Export) → geparstes [`Model`].
//!
//! Die tragenden Kanäle: **Custom Properties** (in Blender beim Export
//! „Include → Custom Properties" anhaken → landen in `node.extras`) und
+5 -4
View File
@@ -15,10 +15,11 @@
//! rufen.
//!
//! `gltf`, `tga` und `wav` sind reine Decoder (Bytes → owned Daten); `gltf`
//! ist DER 3D-Pfad und produziert das neutrale `model::Model`. `audio` ist
//! die Emitter-Logik zum Frontend-Treiber render::audio, `player` die
//! First-Person-Physik auf der Welt aus `collision`. Post-Effekte kennt der
//! Kern nur als `game::Action::SetPost` — die Kette lebt in render::post.
//! ist DER 3D-Pfad und produziert das `model::Model`, den Vertrag zwischen
//! Loader und seinen Konsumenten (collision, trigger, audio, render::props).
//! `audio` ist die Emitter-Logik zum Frontend-Treiber render::audio, `player`
//! die First-Person-Physik auf der Welt aus `collision`. Post-Effekte kennt
//! der Kern nur als `game::Action::SetPost` — die Kette lebt in render::post.
pub mod assets;
pub mod audio;
+8 -5
View File
@@ -1,7 +1,10 @@
//! Neutrales 3D-Modell — das gemeinsame Ergebnis des Blender-Loaders
//! (engine::gltf). Konsumenten (render::props, collision, trigger) kennen
//! nur diese Struktur; welcher Parser sie erzeugt hat, ist ihnen egal — so
//! bleibt ein Format-Wechsel ein lokaler Loader-Tausch.
//! Das geparste Blender-Modell: Ergebnis des Loaders (engine::gltf) und der
//! Vertrag, auf den sich seine Konsumenten stützen — collision, trigger,
//! audio, render::props und session::load_props arbeiten alle auf dieser
//! einen Struktur, statt selbst glTF zu lesen. Eine Entkopplungsgrenze
//! zwischen dem einen Loader und seinen Konsumenten, keine Format-Abstraktion:
//! glTF ist der einzige 3D-Pfad (die OBJ- und Map-Loader-Pfade sind
//! Geschichte), `gltf` der einzige Produzent.
//!
//! Was ein Objekt *ist*, steuern seine Blender-Custom-Properties (keine
//! Namens-Präfixe — Namen bleiben frei für die Autorin), siehe
@@ -15,7 +18,7 @@
//!
//! Objektnamen sind zugleich die Interact-Keys: Blender-Suffixe
//! (`Thing.001`) strippt `signals::signal_key` beim Dispatch, nicht hier —
//! die Loader bleiben frei von Signal-Wissen.
//! der Loader bleibt frei von Signal-Wissen.
use std::collections::HashMap;
+1 -1
View File
@@ -1,6 +1,6 @@
//! Blender-Modell → Render-Geometrie.
//!
//! Nimmt das neutrale [`Model`] aus engine::gltf und baut daraus ein
//! Nimmt das geparste [`Model`] aus engine::gltf und baut daraus ein
//! [`Mesh`] (Vertices + nach Textur gruppierte Index-Batches); mehrere
//! Modelle verschmelzen über `Mesh::append` zu einem Buffer.
//!