From d9818f6476ccd1617be3a4ed6d6a338377f402f7 Mon Sep 17 00:00:00 2001 From: David Rhodes Date: Tue, 9 May 2017 14:34:02 -0600 Subject: [PATCH] =?UTF-8?q?removed=20texture=20format=20and=20replaced=20w?= =?UTF-8?q?ith=20simpler=20=E2=80=98bool=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Unity/Editor/MapImageFactoryEditor.cs | 14 +- .../Factories/MapImageFactory.cs | 180 ++++++++++-------- 2 files changed, 106 insertions(+), 88 deletions(-) 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; + } + } + } }