WorldWind Kotlin v2.0.5 #163
EMaksymenko
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
WorldWind Kotlin 2.0.5
This release adds three new local data formats (ArcGIS SLPK/I3S scene layers, Cesium 3D Tiles archives, and LAS/LAZ point clouds), extends offline bulk caching to vector layers, and delivers a round of performance and stability fixes for tiled vector rendering — alongside a large internal consolidation pass that removes ~1,900 lines of duplicated code with no behavior change.
✨ New format support
.slpk, with no extraction or copy. Reuses the existing 3D Tiles streaming, traversal, cache, and GPU pipeline through a byte-source seam. Seam-free across tiles, textured, withaltitudeOffsetsupport. Validated on real Esri IntegratedMesh v1.8 datasets. (JVM + Android).3tz/.3dtiles) — open a local 3D Tiles archive directly on the globe withopenArchived3dTilesLayer(file). Magic-byte sniffing picks the reader:.3tz(ZIP) or.3dtiles(SQLitemediatable). No decoder or layer subclass needed — the archive holds ordinary 3D Tiles content. (JVM + Android)PointCloudLayerloads a standalone.las/.lazfile onto the globe, reusing the.pntsGPU path. Pure-Kotlin LAS reader (point formats 0–3, 6–8) and LASzip decoder (chunked formats 0–3), verified byte-identical against thelaz-rsreference. Auto-georeferences WGS84/NAD83/ETRS89 UTM and geographic CRS, geoid-aware altitude so orthometric LiDAR rests on terrain, livealtitudeOffset, and progressive off-thread loading that keeps single-threaded targets (JS/wasm) interactive.📦 Offline bulk caching for vector layers
tileCount()on MVT and OSM Buildings layers, mirroringLevelSet.tileCount, so a download can be sized before committing to it.clone()promoted to theVectorLayercontract, implemented by all four vector layers — each builds a fresh instance from config only, never sharing live scopes, semaphores, or caches.🚀 Performance & stability
mmap.TiledFeatureLayerdefaults to a 96 MB budget.GL.draw492 → 201 ms.WfsLayernow caches the GetCapabilities document and reuses a single HTTP client across refreshes, so an auto-refreshing viewport no longer re-downloads capabilities or rebuilds an HTTP client on every pan. The fetch loop is also split from renderable decode, dropping a per-page renderable graph that was built and immediately discarded.🐞 Fixes
serviceTypeToDataTypewas missing "WCS 2.0.1", registering WCS coverages as tiles on JS/wasm.FileSystemElevationBackend.writeTilenever deleted the ancillary sidecar on default packing, mis-decoding a re-packed tile.ContentManager.findEntryhard-codedlastModified = nullwhilelistEntriespopulated it.🧹 Internal / maintainability
A behavior-preserving consolidation pass across independent subsystems (verified compiling on JVM/JS/wasmJs/iOS, with
jvmTestpassing):SlippyTilessource of truth (tile conversions,MercatorSectordelegation, fractional unprojection).Tutorials
Full changelog:
v2.0.4...v2.0.5This discussion was created from the release WorldWind Kotlin v2.0.5.
Beta Was this translation helpful? Give feedback.
All reactions