fix(showroom): Funde der Schlussdurchsicht auf der Testseite behoben

Die Spielfigur wirft jetzt einen Schatten (player.init durchlief applyCharacter
nie); drei stille Fehlerpfade meckern jetzt statt roh abzubrechen (fehlender
Clip fuer die Fingerhaltung, Waffe ohne Griff, mit neuem Test); die
Waffenauswahl im Panel zeigt Beschriftungen statt IDs; der Waffen-Umbau prueft
jetzt die Meshzahl je Datei; stageTransform ist aus main.js nach lineup.js
gezogen und mit dem im Browser gemessenen Fall getestet; slotPosition nimmt
DUMMIES als Argument statt es aus dem Modul zu lesen; dazu Kommentar- und
Entwurfskorrekturen (Docstring, Beckenspur-Test, Frustum-Culling, Port/Kamera/
VIEW_DISTANCE im Entwurf).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5 committed 2026-09-18 03:19:42 +02:00
1 parent c8f1832eae
commit a0cd95cceb
9 files changed
+97 -18

No files matched your search

+20
View File
@@ -58,9 +58,17 @@ describe("createDummy", () => {
right.name = "hand_r";
const left = new Bone();
left.name = "hand_l";
// Ziele der Fingerspuren aus `fingers` unten (index_01_r, thumb_03_l) — ohne sie meldet three.js beim
// Binden für jeden Testlauf "No target node found for track".
const indexR = new Bone();
indexR.name = "index_01_r";
const thumbL = new Bone();
thumbL.name = "thumb_03_l";
root.add(pelvis);
pelvis.add(right);
pelvis.add(left);
right.add(indexR);
left.add(thumbL);
return root;
}
const clip = new AnimationClip("take", 1, [
@@ -94,8 +102,20 @@ describe("createDummy", () => {
const root = new Group();
const pelvis = new Bone();
pelvis.name = "pelvis";
const indexR = new Bone();
indexR.name = "index_01_r";
const thumbL = new Bone();
thumbL.name = "thumb_03_l";
root.add(pelvis);
pelvis.add(indexR);
pelvis.add(thumbL);
expect(() => createDummy({ template: root, clip, fingers, weapon, hand: "r", grip: WEAPON_GRIP }))
.toThrow(/Dummy ohne Knochen hand_r/);
});
// Bruch: Waffe ohne Griff — applyGrip bekäme kein Objekt und bräche mit einem rohen TypeError ab.
it("meldet eine Waffe ohne Griff", () => {
expect(() => createDummy({ template: template(), clip, fingers, weapon, hand: "r", grip: null }))
.toThrow(/Waffe ohne Griff/);
});
});