diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Editor/MapImageFactoryEditor.cs b/sdkproject/Assets/Mapbox/Core/Unity/Editor/MapImageFactoryEditor.cs
index a48cdecde..3f2a29d1a 100644
--- a/sdkproject/Assets/Mapbox/Core/Unity/Editor/MapImageFactoryEditor.cs
+++ b/sdkproject/Assets/Mapbox/Core/Unity/Editor/MapImageFactoryEditor.cs
@@ -1,5 +1,4 @@
using UnityEngine;
-using System.Collections;
using UnityEditor;
using Mapbox.Unity.MeshGeneration.Factories;
@@ -13,7 +12,7 @@ public SerializedProperty
basicMaps_Prop,
customMapId_Prop,
useMipMap_Prop,
- textureFormat_Prop,
+ useCompression_Prop,
useRetina_Prop,
mapId_Prop;
private MonoScript script;
@@ -43,7 +42,7 @@ void OnEnable()
mapId_Prop = serializedObject.FindProperty("_mapId");
material_Prop = serializedObject.FindProperty("_baseMaterial");
useMipMap_Prop = serializedObject.FindProperty("_useMipMap");
- textureFormat_Prop = serializedObject.FindProperty("_textureFormat");
+ useCompression_Prop = serializedObject.FindProperty("_useCompression");
useRetina_Prop = serializedObject.FindProperty("_useRetina");
script = MonoScript.FromScriptableObject((MapImageFactory)target);
for (int i = 0; i < _basicMapIds.Length; i++)
@@ -99,15 +98,14 @@ public override void OnInspectorGUI()
EditorGUILayout.LabelField("Raster Tile Texture Settings");
EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(textureFormat_Prop, new GUIContent("Texture Format"));
- var textureFormat = (TextureFormat)textureFormat_Prop.intValue;
- if (textureFormat == TextureFormat.DXT1 || textureFormat == TextureFormat.DXT5)
+ EditorGUILayout.PropertyField(useCompression_Prop, new GUIContent("Use Compression"));
+ if (useCompression_Prop.boolValue)
{
EditorGUILayout.HelpBox("Texture will be compressed. This will reduce image quality and lead to longer initialization times but save memory.", MessageType.Info);
}
else
{
- EditorGUILayout.HelpBox("Use DXT format to save memory.", MessageType.Warning);
+ EditorGUILayout.HelpBox("Use compression to save memory.", MessageType.Warning);
}
EditorGUILayout.PropertyField(useMipMap_Prop, new GUIContent("Create Mip Maps"));
@@ -118,7 +116,7 @@ public override void OnInspectorGUI()
EditorGUILayout.PropertyField(useRetina_Prop, new GUIContent("Request Retina-resolution"));
if (useRetina_Prop.boolValue)
{
- EditorGUILayout.HelpBox("Retina will consume additional memory but greatly improves visual quality.", MessageType.Warning);
+ EditorGUILayout.HelpBox("Retina will consume additional memory but can greatly improve visual quality.", MessageType.Warning);
}
EditorGUI.indentLevel--;
diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs
index 3f61ed56a..accabd0f3 100644
--- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs
+++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs
@@ -1,102 +1,122 @@
-using Mapbox.Unity.Utilities;
-namespace Mapbox.Unity.MeshGeneration.Factories {
- using System;
- using System.Collections.Generic;
- using Mapbox.Map;
- using UnityEngine;
- using Mapbox.Unity.MeshGeneration.Enums;
- using Mapbox.Unity.MeshGeneration.Data;
- using Mapbox.Platform;
+namespace Mapbox.Unity.MeshGeneration.Factories
+{
+ using System;
+ using System.Collections.Generic;
+ using Mapbox.Map;
+ using UnityEngine;
+ using Mapbox.Unity.MeshGeneration.Enums;
+ using Mapbox.Unity.MeshGeneration.Data;
+ using Mapbox.Platform;
- public enum MapImageType {
- BasicMapboxStyle,
- Custom,
- None
- }
+ public enum MapImageType
+ {
+ BasicMapboxStyle,
+ Custom,
+ None
+ }
- ///
- /// Uses raster image services to create materials & textures for terrain
- ///
- [CreateAssetMenu(menuName = "Mapbox/Factories/Map Image Factory")]
- public class MapImageFactory : Factory {
- [SerializeField]
- private MapImageType _mapIdType;
- [SerializeField]
- private string _customMapId = "";
- [SerializeField]
- private string _mapId = "";
- [SerializeField]
- public Material _baseMaterial;
+ ///
+ /// Uses raster image services to create materials & textures for terrain
+ ///
+ [CreateAssetMenu(menuName = "Mapbox/Factories/Map Image Factory")]
+ public class MapImageFactory : Factory
+ {
+ [SerializeField]
+ private MapImageType _mapIdType;
+ [SerializeField]
+ private string _customMapId = "";
+ [SerializeField]
+ private string _mapId = "";
+ [SerializeField]
+ public Material _baseMaterial;
- [SerializeField]
- TextureFormat _textureFormat = TextureFormat.DXT1;
+ [SerializeField]
+ bool _useCompression = true;
- [SerializeField]
- bool _useMipMap = false;
+ [SerializeField]
+ bool _useMipMap = false;
- [SerializeField]
- bool _useRetina;
+ [SerializeField]
+ bool _useRetina;
- private Dictionary _tiles;
+ private Dictionary _tiles;
- public override void Initialize(IFileSource fs) {
- base.Initialize(fs);
- _tiles = new Dictionary();
- }
+ public override void Initialize(IFileSource fs)
+ {
+ base.Initialize(fs);
+ _tiles = new Dictionary();
+ }
- public override void Register(UnityTile tile) {
- base.Register(tile);
- _tiles.Add(tile.TileCoordinate, tile);
- Run(tile);
- }
+ public override void Register(UnityTile tile)
+ {
+ base.Register(tile);
+ _tiles.Add(tile.TileCoordinate, tile);
+ Run(tile);
+ }
- public override void Update() {
- base.Update();
- foreach (var tile in _tiles.Values) {
- Run(tile);
- }
- }
+ public override void Update()
+ {
+ base.Update();
+ foreach (var tile in _tiles.Values)
+ {
+ Run(tile);
+ }
+ }
- ///
- /// Fetches the image and applies it to tile material.
- /// MapImage factory currently supports both new (RasterTile) and classic (ClassicRasterTile) Mapbox styles.
- ///
- ///
- private void Run(UnityTile tile) {
- if (!string.IsNullOrEmpty(_mapId)) {
- var parameters = new Tile.Parameters();
- parameters.Fs = this.FileSource;
- parameters.Id = new CanonicalTileId(tile.Zoom, (int)tile.TileCoordinate.x, (int)tile.TileCoordinate.y);
- parameters.MapId = _mapId;
+ ///
+ /// Fetches the image and applies it to tile material.
+ /// MapImage factory currently supports both new (RasterTile) and classic (ClassicRasterTile) Mapbox styles.
+ ///
+ ///
+ private void Run(UnityTile tile)
+ {
+ if (!string.IsNullOrEmpty(_mapId))
+ {
+ var parameters = new Tile.Parameters();
+ parameters.Fs = this.FileSource;
+ parameters.Id = new CanonicalTileId(tile.Zoom, (int)tile.TileCoordinate.x, (int)tile.TileCoordinate.y);
+ parameters.MapId = _mapId;
- tile.ImageDataState = TilePropertyState.Loading;
+ tile.ImageDataState = TilePropertyState.Loading;
- RasterTile rasterTile;
- if (parameters.MapId.StartsWith("mapbox://", StringComparison.Ordinal)) {
- rasterTile = _useRetina ? new RetinaRasterTile() : new RasterTile();
- } else {
- rasterTile = _useRetina ? new ClassicRetinaRasterTile() : new ClassicRasterTile();
- }
+ RasterTile rasterTile;
+ if (parameters.MapId.StartsWith("mapbox://", StringComparison.Ordinal))
+ {
+ rasterTile = _useRetina ? new RetinaRasterTile() : new RasterTile();
+ }
+ else
+ {
+ rasterTile = _useRetina ? new ClassicRetinaRasterTile() : new ClassicRasterTile();
+ }
- rasterTile.Initialize(parameters, (Action)(() => {
- if (rasterTile.HasError) {
- tile.ImageDataState = TilePropertyState.Error;
- return;
- }
+ rasterTile.Initialize(parameters, (Action)(() =>
+ {
+ if (rasterTile.HasError)
+ {
+ tile.ImageDataState = TilePropertyState.Error;
+ return;
+ }
var rend = tile.GetComponent();
rend.material = _baseMaterial;
- tile.ImageData = new Texture2D(0, 0, _textureFormat, _useMipMap);
+ tile.ImageData = new Texture2D(0, 0, TextureFormat.RGB24, _useMipMap);
tile.ImageData.wrapMode = TextureWrapMode.Clamp;
tile.ImageData.LoadImage(rasterTile.Data);
+ if (_useCompression)
+ {
+ // High quality = true seems to decrease image quality?
+ tile.ImageData.Compress(false);
+ }
rend.material.mainTexture = tile.ImageData;
tile.ImageDataState = TilePropertyState.Loaded;
- }));
- } else {
- var rend = tile.GetComponent();
- rend.material = _baseMaterial;
- }
- }
- }
+ }));
+ }
+ else
+ {
+ var rend = tile.GetComponent();
+ rend.material = _baseMaterial;
+ }
+ }
+ }
}