**/config/ hat fälschlicherweise auch de.blight.game.config (9 Java-Dateien)
ignoriert. Ersetze durch explizite Regeln nur für Laufzeit-Konfigurationen
(root/config/, blight-editor/config/, blight-game/config/).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TextBundleIO von JSON auf Java-Properties-Format umgestellt (messages_*.properties).
Reihenfolge der Keys bleibt beim Laden erhalten. EditorApp zeigt jetzt auf
blight-lang/src/main/resources/lang/ statt blight-assets/localization/.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
EzTreeState: addWindWeights() setzt VertexBuffer.Color (R = Wind-Gewicht)
nach der Mesh-Erzeugung. Blätter bekommen 1.0 (volle Animation), Äste
werden per Y-Position normiert. Tree.vert liest windW aus inColor.r —
ohne diesen Buffer blieb windW=0 und kein Schwingen sichtbar.
PalmMeshBuilder/PalmGeneratorState: stemLeft immer true (Stiel entlang U),
leafTextureAspect immer h/w. Behebt die 90°-Drehung von palm.png.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
saveImpostor() in TreeGeneratorState, PalmGeneratorState und EzTreeState
schreibt keine PNG-Dateien mehr ins .impostors-Verzeichnis. Die Texture2D
wird direkt aus dem In-Memory-ByteBuffer erstellt und via BinaryExporter
in der .j3o-Datei eingebettet. Bestehende .impostors-Dateien entfernt.
deleteJ3oSideFiles() und populateAssetTree() ohne Impostor-Logik.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Zwei AudioNodes pro Sound (L + R) fest auf ±90° der Kamera positioniert;
Lautstärkeverhältnis (constant-power) bestimmt die wahrgenommene Richtung.
Behebt HRTF-0°-Stille wenn Kamera aufs Wasser zeigt. Außerdem weitere
Soundsystem- und Editor-Korrekturen aus dieser Session.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- clearKfOffset() erst nach get_up-Animation (Callback) statt sofort beim Start
→ kein Slide des Visuals während der Aufsteh-Animation
- Approach-Distanz zur Bank um 17.5cm verkürzt (läuft näher ran, sitzt tiefer)
- blockingAnimRemaining um 1 Frame (1/60s) gekürzt → verhindert Extra-Keyframe-Hold
am Animationsende (noch zu beobachten)
- Diverses aus vorheriger Session: AnimSet-Editor, Navigation, Assets
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CharacterNavigator: universelle Pfad-Navigation für Spieler und NPCs
(PathFinder + Terrain-Slope-Check + Stuck-Erkennung, Walk/Run)
- PlayerInputControl: navigateTo/stopNavigation-API, Navigator hat Vorrang
vor WASD; setNavigationSources für PathFinder + TerrainChunkState
- WorldInteractableState: Bank-Setzen komplett neu (< 5m, E-Taste),
Navigator läuft zum Sitzpunkt, dreht Rücken zur Bank, spielt
sit_down_bench / sitting / get_up_sitting; Bett weiterhin mit Rücklauf
- AnimSet-Editor: Kamera startet mit -45° Pitch; AnimKeyframe-Offset-Editor
- WorldScene: PathFinder + ObstacleRoot an PlayerInputControl übergeben
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Editor (AnimPreviewState):
- __tpose__ AnimClip mit Einzel-Frame-Track für Root-Joints (behebt NPE in
ClipAction.doInterpolate; leerer Clip hatte null-tracks-Array)
- Beim Laden: eingebettete Clips automatisch strippt und in src+bin speichern;
danach __tpose__ abspielen → Charakter steht in Bind-Pose
- stopAll(): zurück zur T-Pose statt SkinningControl deaktivieren
- Achsen-Indikator immer fest auf (0,0,0) statt bounding-box-Mitte
Spiel (WorldScene):
- CullHint.Always beim Laden, Inherit nach Animation-Setup (kein liegender Charakter)
- stripEmbeddedClips: speichert jetzt in src + bin + build (alle bekannten Pfade);
besseres Logging bei fehlendem Pfad
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- WorldScene: Charakter wird beim Laden mit CullHint.Always versteckt, erst nach
setupAnimationContext (idle läuft) wieder sichtbar
- WorldScene: stripEmbeddedClips nutzt jetzt AnimationLibrary.findAssetRoot() statt
hartkodierter Pfad-Liste; besseres Logging wenn Datei nicht gefunden
- AnimPreviewState: Modell beim Laden versteckt (CullHint.Always), erst bei playClip
sichtbar; stopAll versteckt Modell wieder
- PlayerInputControl: tryPlay setzt Action VOR SkinningControl-Aktivierung
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
In diesen Mixamo-Exporten ist Local-Y die Vorwärts-Richtung (nicht Höhe),
Local-Z die Höhe. Bisheriger Code fror Z=0 ein → Charakter 1m zu tief.
Und Y war frei → Lauf-Drift blieb.
Neue Logik:
X → 0 (kein Seiten-Drift)
Y → 0 für Lauf-Clips (running/walking/sprinting/running_jump), normalisiert sonst
Z → vollständig frei (Höhe und Setz/Aufsteh-Bewegung erhalten)
Nur der flachste Bone (Hips) wird modifiziert, alle anderen unberührt.
Clips vollständig neu importiert mit korrektem Snap.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>