Weltkarte: Render-Modell-Trennung, UI-Umbau und Kamera-Indikator
- WorldMapRenderModel: neues Record als Zwischenschicht zwischen I/O und Rendering - WorldMapRenderer: render() akzeptiert Modell direkt; rückwärtskompatible Wrapper-Signatur für MinimapState - WorldMapView: Layer-Auswahl als MenuButton mit Checkboxen; Vollbild-Modus (centerStack-Swap); Kamera-Indikator mit FOV-Kegel (120ms-Timer, unabhängig vom Karten-Rendering); Linksklick teleportiert JME3-Kamera unter Beibehaltung der Terrain-Höhendifferenz - EditorApp: CameraInfoSupplier, TeleportCallback und FullscreenCallbacks verdrahtet - MinimapState, Logback: Debug-Logging für Modell-Build und Render-Zyklen - Map-Daten: Zwischenstand Weltdaten Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5639,11 +5639,36 @@ public class EditorApp extends Application {
|
||||
});
|
||||
|
||||
worldMapView = new de.blight.editor.ui.WorldMapView(() -> primaryStage);
|
||||
Tab weltkartTab = new Tab("Weltkarte", worldMapView);
|
||||
worldMapView.setVoxelChunkSupplier(() -> {
|
||||
de.blight.editor.state.VoxelEditorState ves = jmeApp == null ? null
|
||||
: jmeApp.getStateManager().getState(de.blight.editor.state.VoxelEditorState.class);
|
||||
return ves != null ? ves.getChunksSnapshot() : de.blight.common.VoxelChunkIO.loadAll();
|
||||
});
|
||||
worldMapView.setCameraInfoSupplier(() ->
|
||||
new de.blight.editor.ui.WorldMapView.CameraInfo(
|
||||
input.camX, input.camY, input.camZ, input.camYaw));
|
||||
worldMapView.setTeleportCallback(pos -> {
|
||||
input.pendingGotoX = pos[0];
|
||||
input.pendingGotoY = pos[1];
|
||||
input.pendingGotoZ = pos[2];
|
||||
});
|
||||
|
||||
final Tab weltkartTab = new Tab("Weltkarte", worldMapView);
|
||||
weltkartTab.setClosable(false);
|
||||
weltkartTab.selectedProperty().addListener((obs, wasSelected, isSelected) -> {
|
||||
if (isSelected && !worldMapView.isLoaded()) worldMapView.loadAndRender();
|
||||
});
|
||||
worldMapView.setFullscreenCallbacks(
|
||||
() -> {
|
||||
// Erst aus Tab lösen, dann in centerStack einsetzen
|
||||
weltkartTab.setContent(new javafx.scene.control.Label(""));
|
||||
setCenterView(worldMapView);
|
||||
},
|
||||
() -> {
|
||||
// Erst aus centerStack lösen (worldViewport zurück), dann in Tab setzen
|
||||
setCenterView(worldViewport);
|
||||
weltkartTab.setContent(worldMapView);
|
||||
});
|
||||
|
||||
TabPane tabPane = new TabPane(assetsTab, karteTab, weltkartTab);
|
||||
tabPane.setStyle("-fx-background-color: #e8e8e8;");
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -17,6 +17,9 @@
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- Karten-Rendering: Modell-Build und PNG-Render auf DEBUG -->
|
||||
<logger name="de.blight.editor.ui.WorldMapView" level="DEBUG"/>
|
||||
|
||||
<!-- JME-interne JUL-Logs auf WARN reduzieren -->
|
||||
<logger name="com.jme3" level="WARN"/>
|
||||
<!-- GltfLoader meldet bei jeder Animation "only supports linear interpolation" – bekanntes JME-Verhalten, kein Fehler -->
|
||||
|
||||
Reference in New Issue
Block a user