feat: live settings panel (≈45 Werte, Live/Reload, Persistenz, AO live)
- panel.js: Drawer-Panel (P / ⚙), schema-getrieben, ●live/⟳reload-Badges - Werte direkt im Panel einstellbar statt in config.js grabben - Live-Apply über mutateNested (nur Plain-Objekte, nie Modul-Namespace) + registerApply-Callbacks für Three.js-Objekte (FOV, Belichtung, Fog, Licht, Schatten-Frustum, Bloom) - PLAYER.*/CONTROLS.* live (player.js liest jeden Frame neu) - AO jetzt live: debounced world.markAllDirty() remesht alle Chunks ohne F5 - Reload-Pflichtige Werte persistiert + blinkender Neu-Starten-Button (Seed, Meereshöhe, Spawn, MSAA, Tone-Mapping, Schatten an/Größe, AO-Level) - Persistenz: localStorage (debounced), config.js lädt beim Start - HUD/Overlay ausgeblendet, solange das Panel offen ist (Welt frei sichtbar) - Buttons: Neu starten, Auf Standard zurücksetzen, Werte kopieren (JSON) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
1 parent
d6f6774815
commit
6e8e207afa
7 files changed
+775
-78
No files matched your search
@@ -97,6 +97,13 @@ export class World {
|
||||
if (c) c.dirty = true;
|
||||
}
|
||||
|
||||
// Alle geladenen Chunks für einen Neubau markieren – z.B. wenn ein global
|
||||
// mesh-relevanter Wert (AO_LEVEL) live geändert wird. updateStreaming baut
|
||||
// sie dann über mehrere Frames (maxOpsPerFrame) verteilt neu.
|
||||
markAllDirty() {
|
||||
for (const c of this.chunks.values()) c.dirty = true;
|
||||
}
|
||||
|
||||
// --- Meshing ---
|
||||
getBlockWorld = (wx, wy, wz) => this.getBlock(wx, wy, wz);
|
||||
|
||||
|
||||
Reference in new issue
Block a user