From 6e84fe9b1b8a2554495232c947fa5b1b5f9ea910 Mon Sep 17 00:00:00 2001 From: irrlicht Date: Tue, 1 Sep 2026 23:04:31 +0200 Subject: [PATCH] model::Model: Doku als Loader/Konsumenten-Vertrag, nicht Format-Abstraktion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_0196AM4UyAJEXVtPvp5DdKr8 --- src/engine/gltf.rs | 2 +- src/engine/mod.rs | 9 +++++---- src/engine/model.rs | 13 ++++++++----- src/render/props.rs | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/engine/gltf.rs b/src/engine/gltf.rs index 5af7784..f6bcd7f 100644 --- a/src/engine/gltf.rs +++ b/src/engine/gltf.rs @@ -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 diff --git a/src/engine/mod.rs b/src/engine/mod.rs index 1f4897b..d1e36bf 100644 --- a/src/engine/mod.rs +++ b/src/engine/mod.rs @@ -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; diff --git a/src/engine/model.rs b/src/engine/model.rs index 405d1ec..b1ec5d6 100644 --- a/src/engine/model.rs +++ b/src/engine/model.rs @@ -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; diff --git a/src/render/props.rs b/src/render/props.rs index 7c89c5f..383aa8a 100644 --- a/src/render/props.rs +++ b/src/render/props.rs @@ -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. //!