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:
@@ -533,6 +533,8 @@ public class MinimapState extends BaseAppState {
|
||||
Files.createDirectories(dir);
|
||||
Path png = dir.resolve("minimap_world.png");
|
||||
|
||||
log.debug("[Minimap] Lade Weltdaten für Render-Modell…");
|
||||
long t0 = System.currentTimeMillis();
|
||||
MapData mapData = MapIO.load();
|
||||
List<PlacedArea> areas = AreaIO.load();
|
||||
List<PlacedLocationZone> zones = LocationZoneIO.load();
|
||||
@@ -541,6 +543,8 @@ public class MinimapState extends BaseAppState {
|
||||
List<PlacedModel> models = PlacedModelIO.load();
|
||||
int[] slotColors = computeSlotColors(mapData, root);
|
||||
renderInput = new RenderInput(mapData, areas, zones, locs, waters, models, slotColors);
|
||||
log.debug("[Minimap] Render-Modell bereit – {} Areas, {} Orte, {} Wasser ({} ms)",
|
||||
areas.size(), locs.size(), waters.size(), System.currentTimeMillis() - t0);
|
||||
|
||||
boolean needsRender = !Files.exists(png);
|
||||
if (!needsRender) {
|
||||
@@ -553,9 +557,11 @@ public class MinimapState extends BaseAppState {
|
||||
}
|
||||
if (needsRender) {
|
||||
log.info("[Minimap] Rendere Weltkarte {}×{}…", TEXTURE_SIZE, TEXTURE_SIZE);
|
||||
long t1 = System.currentTimeMillis();
|
||||
BufferedImage bi = WorldMapRenderer.render(renderInput, TEXTURE_SIZE, RenderOptions.all());
|
||||
ImageIO.write(bi, "PNG", png.toFile());
|
||||
log.info("[Minimap] Weltkarte gespeichert: {}", png);
|
||||
log.debug("[Minimap] Weltkarte gerendert und gespeichert ({} ms): {}",
|
||||
System.currentTimeMillis() - t1, png);
|
||||
} else {
|
||||
log.info("[Minimap] Gecachte Weltkarte: {}", png);
|
||||
}
|
||||
@@ -645,8 +651,12 @@ public class MinimapState extends BaseAppState {
|
||||
final float capHU = vr / WORLD_SIZE;
|
||||
|
||||
Thread t = new Thread(() -> {
|
||||
log.debug("[Minimap] Vektor-Layer neu rendern – Zentrum ({}/{}), Radius {}",
|
||||
Math.round(wx), Math.round(wz), Math.round(vr));
|
||||
long t0 = System.currentTimeMillis();
|
||||
RenderOptions opts = new RenderOptions(false, false, true, true, true, true, true);
|
||||
BufferedImage bi = WorldMapRenderer.renderRegion(renderInput, VEC_TEX_SIZE, opts, wx, wz, vr);
|
||||
log.debug("[Minimap] Vektor-Layer fertig ({} ms)", System.currentTimeMillis() - t0);
|
||||
app.enqueue(() -> {
|
||||
updateVectorTexture(bi);
|
||||
vecRenderU = capU;
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
<!-- LOD-Slot-Wechsel auf DEBUG aktivieren -->
|
||||
<logger name="de.blight.game.state.ModelLodControl" level="DEBUG"/>
|
||||
<!-- Minimap: Modell-Build und Render-Zyklen auf DEBUG -->
|
||||
<logger name="de.blight.game.state.MinimapState" level="DEBUG"/>
|
||||
|
||||
<!-- JME-interne JUL-Logs auf WARN reduzieren -->
|
||||
<logger name="com.jme3" level="WARN"/>
|
||||
|
||||
Reference in New Issue
Block a user