All notable changes to the SDK NuGet package and it's supporting scripts will be documented in this file.
The format is based on Keep a Changelog and the SDK NuGet package adheres to Semantic Versioning.
Refer to the Getting Started documentation for instructions about how to import and upgrade the SDK.
- Meta files used for native plugins are now compatible with Unity 2018.4+. #52
- Fixed bug that caused raycast to fail in some conditions.
- Reduced overhead of clipping distance render pass.
- Native plugin that improves the efficiency of decoding map data and signifcantly reduces GC usage. Supported platforms: Android/iOS/Windows.
- Compressed texture formats for model data on Android/iOS, reducing memory usage on these platforms.
- Elevation scale API that can be used to exaggerate or flatten terrain. #50
- Removed support for the deprecated UWP .NET scripting backend.
- Removed 257x257 dimension restriction of
ElevationTiles
.
- Threading issue causing map data to not load. (#40)
- Further reduced large temporary GC allocations on background threads.
UnityWebRequestAwaiterExtensionMethods
to enable UnityWebRequests to be used with async/await.
ElevationTileLayer
to enable rendering custom elevation data sources.
- More reduction of GC allocations. There are no longer allocations when the map is idle.
- Copyright text not being culled and showing through map.
- Copyright text misaligned in certain rotations.
TextureTile.FromUrl
API to simplify requesting images (JPEG/PNG) from the web. Custom implementations ofTextureTileLayer
will no longer need to interact with UnityWebRequest or HttpClient to request imagery.UnityTaskFactory
provides some utility APIs to run async tasks on Unity's main thread.
TextureTileLayer
API return type has been changed to aNullable<TextureTile>
. This is a breaking change if you have implemented a customTextureTileLayer
.
- Empty textures on iOS caused by DXT1 texture format. Any DXT1 texture will now be transcoded to RGB24 (on iOS only).
- Large reduction in overall size and frequency of GC allocations caused by the MapRenderer.
HttpTextureTileLayer
updated to leverageTextureTile.FromUrl
API.
- Circular
MapShape
option.
- New approach for rendering side walls of map. Does not rely on geometry shaders.
- The maximum cache size used for storing map data is now configurable. See the Quality Settings section of the MapRenderer's editor. (#35)
- The default MapRenderer cache size has been lowered. Currently the cache size uses 1/3 of system memory, but can be no larger than 2GB. The maximum size is now configurable. (#35)
- Intermittent exception message related to TextureTileLayers. (#35)
- The MapRenderer now respects layer setting of the GameObject. MapPins and MapLabels automatically use same layer as parent MapRenderer. (#32)
- The
DefaultTextureTileLayer
now supports Bing Maps symbolic imagery as well as aerial imagery with road and label overlays. Previously aerial imagery (without road overlays or labels) was the only imagery type supported.
HttpTextureTileLayer
component that makes it easy to stream texture tiles by specifying a formatted URL.- More Editor UI improvements around
TextureTileLayer
. Right-clicking a tile layer in list now brings up option to edit the underlying script.
MapRendererTransformExtension
APIs renamed to more closely follow Unity's transformation-related methods.
TextureTileLayer
class that can be extended to customize imagery used by theMapRenderer
. Implementations can request data from other Web Mercator tile services, load texture data from disk, or generate textures on the fly. MultipleTextureTileLayers
can be used and layered together, e.g. to overlay partially transparent textures like weather data.DefaultTextureTileLayer
is added automatically to theMapRenderer
. Pulls sattelite aerial imagery from Bing Maps.- Option to enable MRTK hoverlight functionality on the
MapRenderer
terrain.
- Spammy error logging when key is invalid.
- Inaccurate results when raycasting elevation data.
- Inaccurate rendering of elevation data.
MapContourLineLayer
renders lines of constant elevation. Line interval and color can be changed dynamically.- Various editor scripts for modifying
TextureTileLayers
.
- Ability to increase or decrease the terrain quality of the
MapRenderer
. - Ability to disable high-res 3D terrain models, i.e. only use height-map based elevation.
- Ability to render only a flat map surface by disabling aforementioned 3D terrain sources.
- In-editor mouse controls to drag the center of the
MapRenderer
and adjust it's zoom level. Similar mouse controls added forMapPins
to allow for adjusting a pin's position relative to the map. MapPinLayer
now supports serialization of it's children items, soMapPins
can be added to the layer in the editor rather than strictly at runtime.
- Copyright settings for
MapRenderer
now managed by separate component,MapCopyrightLayer
. This component is auto-added toGameObjects
with aMapRenderer
component.
- Handle case when developer key isn't present more gracefully. Less console spam and
MapPins
will continue to position correctly.
- Initial Bing Maps service API. Currently supports geocoding and reverse geocoding via the
LocationFinder
. - Editor scripts for various components have been moved out of the DLL and are now available in the supporting scripts.
- Editor UI refresh for MapRenderer. Among other visual improvements, the developer key field acts as a password field and the value is now hidden by asterisks.
MapScene
animation-related logic has been modularized and is now customizable. Default implementation moved to supporting scripts.- Refreshed editor UI for the
MapRenderer
.
- Clamp boundary values for various
MapRenderer
properties like center and zoom level.
- Method to calculate scale ratio between the map and Unity's world space.
DefaultAnimationController
implementation used for animatingMapScenes
. This implementation improves the animation speed to account for the logarithmic scaling of zoom level.
- Additional max distance parameter for the raycast API.
- Provide normal and distance in the raycast result.
- Extension class to
MapRenderer
for transforming points between Unity's world and local coordinate spaces to the map's geographic coordinate system (latitude, longitude, and altitude).
- Rolled back elevation fallback logic which was based on BC1 texture support of the device. Unity is decoding BC1 to RGB automatically.
- Raycast API on
MapRenderer
to return hit point and corresponding LatLonAlt of a ray intersection with the map.
- Perf improvement for rendering. Reduces number of vertices required in certain views.
- Map edge no longer disappears when the map surface is above the viewport.
- Android/iOS compatibility improvements: High-res meshes would render incorrectly on devices that do not support the BC1 texture format. If the device lacks BC1 texture support, fall back to elevation-only rendering instead, which uses the widely supported RGB texture format.
- Networking performance improvements.
- Copyright text is now positioned correctly when the map layout is not using the default dimensions.
- Cleaned up the
ClusterMapPin
editor UI to remove unnecessary properties.
- Regression in
MapPin
size when using real-world scale.
- Altitude can now be specified on MapPins.
- Maps SDK-related components will now have their help icons direct out to the relevant wiki doc page.
- Custom Maps SDK component icons for the editor are now working again.
MapPins
childed toMapRenderer
are positioned correctly in editor after script reloading.
- Elevation terrain tiles will now fall back to lower LODs correctly.
- Seams between tiles should now be much less visible.
MapRenderer
component that handles streaming and rendering of 3D terrain data.MapPinLayer
that allows for positioningGameObjects
on theMapRenderer
at a specified LatLon.- Ability to cluster
MapPins
perMapPinLayer
. This allows for efficiently rendering large data sets. - Ability to animate the position and zoom level of the map via the
SetMapScene
API. MapLabelLayer
for displaying city labels.- Support for shadow casting and receiving of the map.
- Option to use a custom material for terrain.
- Shader for rendering terrain with support for shadows, heightmap offsets, and clipping to the
MapRenderer
's dimensions. - Shader for rendering side of map. Dynamically generates appropriate triangles by the geometry shader. Supports shadows.
- Script with helper functions to navigate the MapRenderer, e.g. panning and zooming.
- Script for animating map to the specified location and zoom level.