diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/CacheItem.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/CacheItem.cs index b3be547f5..b6d87b66f 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/CacheItem.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/CacheItem.cs @@ -13,7 +13,7 @@ public class CacheItem public long AddedToCacheTicksUtc; /// ETag value of API response. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag public string ETag; - /// Can be 'null' as not all APIs populated this value. Last-Modified value of API response in GMT: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified - public DateTime? LastModified; + + public DateTime ExpirationDate; } } diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/CachingWebFileSource.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/CachingWebFileSource.cs index b881516ff..1ec5fa613 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/CachingWebFileSource.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/CachingWebFileSource.cs @@ -5,14 +5,10 @@ using System.Collections.Generic; using Mapbox.Unity.Utilities; using Mapbox.Map; - using System.Collections; - using System.Linq; public class CachingWebFileSource : IFileSource, IDisposable { - - #if MAPBOX_DEBUG_CACHE private string _className; #endif @@ -22,6 +18,8 @@ public class CachingWebFileSource : IFileSource, IDisposable private Func _getMapsSkuToken; private bool _autoRefreshCache; + private const string EtagHeaderName = "ETag"; + private const string CacheControlHeaderName = "Cache-Control"; public CachingWebFileSource(string accessToken, Func getMapsSkuToken, bool autoRefreshCache) { @@ -34,8 +32,7 @@ public CachingWebFileSource(string accessToken, Func getMapsSkuToken, bo } -#region idisposable - + #region idisposable ~CachingWebFileSource() { @@ -64,12 +61,12 @@ protected virtual void Dispose(bool disposeManagedResources) } } } + _disposed = true; } } - -#endregion + #endregion /// @@ -102,7 +99,8 @@ public void Clear() } - public void ReInit() { + public void ReInit() + { foreach (var cache in _caches) { cache.ReInit(); @@ -118,7 +116,6 @@ string uri , string tilesetId = null ) { - if (string.IsNullOrEmpty(tilesetId)) { throw new Exception("Cannot cache without a tileset id"); @@ -150,6 +147,7 @@ string uri uriBuilder.Query = accessTokenQuery + "&" + mapsSkuToken; } } + string finalUrl = uriBuilder.ToString(); #if MAPBOX_DEBUG_CACHE @@ -166,58 +164,49 @@ string uri callback(Response.FromCache(cachedItem.Data)); // check for updated tiles online if this is enabled in the settings - if (_autoRefreshCache) + if (cachedItem.ExpirationDate < DateTime.Now) { // check if tile on the web is newer than the one we already have locally IAsyncRequestFactory.CreateRequest( finalUrl, - (Response headerOnly) => + timeout, + "If-None-Match", cachedItem.ETag, + (Response response) => { // on error getting information from API just return. tile we have locally has already been returned above - if (headerOnly.HasError) + if (response.HasError || response.StatusCode == null) { return; } - // TODO: remove Debug.Log before PR - //UnityEngine.Debug.LogFormat( - // "{1}{0}cached:{2}{0}header:{3}" - // , Environment.NewLine - // , finalUrl - // , cachedItem.ETag - // , headerOnly.Headers["ETag"] - //); - // data from cache is the same as on the web: // * tile has already been returned above // * make sure all all other caches have it too, but don't force insert via cache.add(false) // additional ETag empty check: for backwards compability with old caches - if (!string.IsNullOrEmpty(cachedItem.ETag) && cachedItem.ETag.Equals(headerOnly.Headers["ETag"])) + if (response.StatusCode == 304) // 304 NOT MODIFIED { - foreach (var cache in _caches) - { - cache.Add(tilesetId, tileId, cachedItem, false); - } + cachedItem.ExpirationDate = response.GetExpirationDate(); + } + else if (response.StatusCode == 200) // 200 OK, it means etag&data has changed so need to update cache + { + string eTag = response.GetETag(); + + // not all APIs populate 'Last-Modified' header + // don't log error if it's missing + DateTime expirationDate = response.GetExpirationDate(); + + cachedItem.Data = response.Data; + cachedItem.ETag = eTag; + cachedItem.ExpirationDate = expirationDate; } - else + + foreach (var cache in _caches) { - // TODO: remove Debug.Log before PR - UnityEngine.Debug.LogWarningFormat( - "updating cached tile {1} tilesetId:{2}{0}cached etag:{3}{0}remote etag:{4}{0}{5}" - , Environment.NewLine - , tileId - , tilesetId - , cachedItem.ETag - , headerOnly.Headers["ETag"] - , finalUrl - ); - - // request updated tile and pass callback to return new data to subscribers - requestTileAndCache(finalUrl, tilesetId, tileId, timeout, callback); + cache.Add(tilesetId, tileId, cachedItem, true); } + + callback(Response.FromCache(cachedItem.Data)); } - , timeout - , HttpRequestType.Head ); } @@ -233,34 +222,18 @@ string uri } } - private IAsyncRequest requestTileAndCache(string url, string tilesetId, CanonicalTileId tileId, int timeout, Action callback) { return IAsyncRequestFactory.CreateRequest( url, - (Response r) => + (Response response) => { // if the request was successful add tile to all caches - if (!r.HasError && null != r.Data) + if (!response.HasError && null != response.Data) { - string eTag = string.Empty; - DateTime? lastModified = null; - - if (!r.Headers.ContainsKey("ETag")) - { - UnityEngine.Debug.LogWarningFormat("no 'ETag' header present in response for {0}", url); - } - else - { - eTag = r.Headers["ETag"]; - } + string eTag = response.GetETag(); - // not all APIs populate 'Last-Modified' header - // don't log error if it's missing - if (r.Headers.ContainsKey("Last-Modified")) - { - lastModified = DateTime.ParseExact(r.Headers["Last-Modified"], "r", null); - } + DateTime expirationDate = response.GetExpirationDate(); // propagate to all caches forcing update foreach (var cache in _caches) @@ -270,27 +243,25 @@ private IAsyncRequest requestTileAndCache(string url, string tilesetId, Canonica , tileId , new CacheItem() { - Data = r.Data, + Data = response.Data, ETag = eTag, - LastModified = lastModified + ExpirationDate = expirationDate } , true // force insert/update ); } } + if (null != callback) { - r.IsUpdate = true; - callback(r); + response.IsUpdate = true; + callback(response); } }, timeout); } - class MemoryCacheAsyncRequest : IAsyncRequest { - - public string RequestUrl { get; private set; } @@ -302,14 +273,14 @@ public MemoryCacheAsyncRequest(string requestUrl) public bool IsCompleted { - get - { - return true; - } + get { return true; } } - public HttpRequestType RequestType { get { return HttpRequestType.Get; } } + public HttpRequestType RequestType + { + get { return HttpRequestType.Get; } + } public void Cancel() @@ -318,4 +289,4 @@ public void Cancel() } } } -} +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/ResponseStatic.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/ResponseStatic.cs new file mode 100644 index 000000000..53e2ca6ed --- /dev/null +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/ResponseStatic.cs @@ -0,0 +1,48 @@ +using System; +using Mapbox.Platform; +using UnityEngine; + +public static class ResponseStatic +{ + private static string EtagHeaderName = "ETag"; + private static string CacheControlHeaderName = "Cache-Control"; + + public static DateTime GetExpirationDate(this Response response) + { + DateTime expirationDate = DateTime.Now; + if (response.Headers.ContainsKey(CacheControlHeaderName)) + { + var cacheEntries = response.Headers[CacheControlHeaderName].Split(','); + if (cacheEntries.Length > 0) + { + foreach (var entry in cacheEntries) + { + var value = entry.Split('='); + if (value[0] == "max-age") + { + expirationDate = expirationDate + TimeSpan.FromSeconds(int.Parse(value[1])); + return expirationDate; + } + } + } + } + + return expirationDate; + } + + public static string GetETag(this Response response) + { + string eTag = String.Empty; + if (!response.Headers.ContainsKey(EtagHeaderName)) + { + Debug.LogWarning("no 'ETag' header present in response"); + } + else + { + eTag = response.Headers[EtagHeaderName]; + } + + return eTag; + } + +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/ResponseStatic.cs.meta b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/ResponseStatic.cs.meta new file mode 100644 index 000000000..90a027a53 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/ResponseStatic.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4413348b85554bea88efd493b7dd4d4c +timeCreated: 1601304948 \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/SQLiteCache.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/SQLiteCache.cs index a221ce117..fd24d472b 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/SQLiteCache.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/SQLiteCache.cs @@ -1,6 +1,7 @@ -namespace Mapbox.Platform.Cache -{ +using UnityEngine.PlayerLoop; +namespace Mapbox.Platform.Cache +{ using Mapbox.Map; using Mapbox.Utils; using SQLite4Unity3d; @@ -12,18 +13,22 @@ public class SQLiteCache : ICache, IDisposable { - - /// /// maximum number tiles that get cached /// - public uint MaxCacheSize { get { return _maxTileCount; } } + public uint MaxCacheSize + { + get { return _maxTileCount; } + } /// /// Check cache size every n inserts /// - public uint PruneCacheDelta { get { return _pruneCacheDelta; } } + public uint PruneCacheDelta + { + get { return _pruneCacheDelta; } + } #if MAPBOX_DEBUG_CACHE @@ -34,10 +39,13 @@ public class SQLiteCache : ICache, IDisposable private string _dbPath; private SQLiteConnection _sqlite; private readonly uint _maxTileCount; + /// check cache size only every '_pruneCacheDelta' calls to 'Add()' to avoid being too chatty with the database private const int _pruneCacheDelta = 20; + /// counter to keep track of calls to `Add()` private int _pruneCacheCounter = 0; + private object _lock = new object(); @@ -48,10 +56,8 @@ public SQLiteCache(uint? maxTileCount = null, string dbName = "cache.db") init(); } - #region idisposable - ~SQLiteCache() { Dispose(false); @@ -77,104 +83,28 @@ protected virtual void Dispose(bool disposeManagedResources) _sqlite = null; } } + _disposed = true; } } - #endregion - private void init() { - #if MAPBOX_DEBUG_CACHE _className = this.GetType().Name; #endif - openOrCreateDb(_dbName); + OpenOrCreateDatabase(_dbName); //hrmpf: multiple PKs not supported by sqlite.net //https://github.com/praeclarum/sqlite-net/issues/282 //do it via plain SQL - List colInfoTileset = _sqlite.GetTableInfo(typeof(tilesets).Name); - if (0 == colInfoTileset.Count) - { - string cmdCreateTableTilesets = @"CREATE TABLE tilesets( -id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL UNIQUE, -name STRING NOT NULL -);"; - _sqlite.Execute(cmdCreateTableTilesets); - string cmdCreateIdxNames = @"CREATE UNIQUE INDEX idx_names ON tilesets (name ASC);"; - _sqlite.Execute(cmdCreateIdxNames); - } - - List colInfoTiles = _sqlite.GetTableInfo(typeof(tiles).Name); - if (0 == colInfoTiles.Count) - { - - string cmdCreateTableTiles = @"CREATE TABLE tiles( -tile_set INTEGER REFERENCES tilesets (id) ON DELETE CASCADE ON UPDATE CASCADE, -zoom_level INTEGER NOT NULL, -tile_column BIGINT NOT NULL, -tile_row BIGINT NOT NULL, -tile_data BLOB NOT NULL, -timestamp INTEGER NOT NULL, -etag TEXT, -lastmodified INTEGER, - PRIMARY KEY( - tile_set ASC, - zoom_level ASC, - tile_column ASC, - tile_row ASC - ) -);"; - _sqlite.Execute(cmdCreateTableTiles); - - string cmdIdxTileset = "CREATE INDEX idx_tileset ON tiles (tile_set ASC);"; - _sqlite.Execute(cmdIdxTileset); - string cmdIdxTimestamp = "CREATE INDEX idx_timestamp ON tiles (timestamp ASC);"; - _sqlite.Execute(cmdIdxTimestamp); - } - - - // some pragmas to speed things up a bit :-) - // inserting 1,000 tiles takes 1-2 sec as opposed to ~20 sec - string[] cmds = new string[] - { - "PRAGMA synchronous=OFF", - "PRAGMA count_changes=OFF", - "PRAGMA journal_mode=MEMORY", - "PRAGMA temp_store=MEMORY" - }; - foreach (var cmd in cmds) - { - try - { - _sqlite.Execute(cmd); - } - catch (SQLiteException ex) - { - // workaround for sqlite.net's exeception: - // https://stackoverflow.com/a/23839503 - if (ex.Result != SQLite3.Result.Row) - { - UnityEngine.Debug.LogErrorFormat("{0}: {1}", cmd, ex); - // TODO: when mapbox-sdk-cs gets backported to its own repo -> throw - //throw; // to throw or not to throw??? - } - } - } - } - - - private void openOrCreateDb(string dbName) - { - _dbPath = GetFullDbPath(dbName); - _sqlite = new SQLiteConnection(_dbPath, SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.Create); + CreateTables(); + PragmaCommands(); } - /// /// Reinitialize cache. /// This is needed after 'Clear()' to recreate the cache database. @@ -191,6 +121,11 @@ public void ReInit() init(); } + private void OpenOrCreateDatabase(string dbName) + { + _dbPath = GetFullDbPath(dbName); + _sqlite = new SQLiteConnection(_dbPath, SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.Create); + } public static string GetFullDbPath(string dbName) { @@ -198,17 +133,18 @@ public static string GetFullDbPath(string dbName) #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_WSA dbPath = Path.GetFullPath(dbPath); #endif - if (!Directory.Exists(dbPath)) { Directory.CreateDirectory(dbPath); } + if (!Directory.Exists(dbPath)) + { + Directory.CreateDirectory(dbPath); + } + dbPath = Path.Combine(dbPath, dbName); return dbPath; } - - public void Add(string tilesetName, CanonicalTileId tileId, CacheItem item, bool forceInsert = false) { - #if MAPBOX_DEBUG_CACHE string methodName = _className + "." + new System.Diagnostics.StackFrame().GetMethod().Name; UnityEngine.Debug.LogFormat("{0} {1} {2} forceInsert:{3}", methodName, tileset, tileId, forceInsert); @@ -224,15 +160,7 @@ public void Add(string tilesetName, CanonicalTileId tileId, CacheItem item, bool return; } - int? tilesetId = null; - lock (_lock) - { - tilesetId = getTilesetId(tilesetName); - if (!tilesetId.HasValue) - { - tilesetId = insertTileset(tilesetName); - } - } + int? tilesetId = GetOrCraeteTileset(tilesetName); if (tilesetId < 0) { @@ -240,17 +168,27 @@ public void Add(string tilesetName, CanonicalTileId tileId, CacheItem item, bool return; } - int rowsAffected = _sqlite.InsertOrReplace(new tiles + var newTile = new tiles { tile_set = tilesetId.Value, zoom_level = tileId.Z, tile_column = tileId.X, tile_row = tileId.Y, tile_data = item.Data, - timestamp = (int)UnixTimestampUtils.To(DateTime.Now), - etag = item.ETag - }); - if (1 != rowsAffected) + expirationdate = (int) UnixTimestampUtils.To(item.ExpirationDate), + etag = item.ETag, + accessed = (int) UnixTimestampUtils.To(DateTime.Now) + }; + int rowsAffected = UpdateTile(newTile); + if (rowsAffected == 0) + { + rowsAffected = (int) InsertTile(newTile); + if (rowsAffected > 0) + { + _pruneCacheCounter++; + } + } + if (rowsAffected < 1) { throw new Exception(string.Format("tile [{0} / {1}] was not inserted, rows affected:{2}", tilesetName, tileId, rowsAffected)); } @@ -260,49 +198,92 @@ public void Add(string tilesetName, CanonicalTileId tileId, CacheItem item, bool Debug.LogErrorFormat("Error inserting {0} {1} {2} ", tilesetName, tileId, ex); } - // update counter only when new tile gets inserted - if (!forceInsert) - { - _pruneCacheCounter++; - } if (0 == _pruneCacheCounter % _pruneCacheDelta) { _pruneCacheCounter = 0; - prune(); + //prune(); + pruneNonOfflineTiles(); } } - - private void prune() + private int? GetOrCraeteTileset(string tilesetName) { + int? tilesetId; + lock (_lock) + { + tilesetId = getTilesetId(tilesetName); + if (!tilesetId.HasValue) + { + tilesetId = insertTileset(tilesetName); + } + } - long tileCnt = _sqlite.ExecuteScalar("SELECT COUNT(zoom_level) FROM tiles"); - - if (tileCnt < _maxTileCount) { return; } - - long toDelete = tileCnt - _maxTileCount; + return tilesetId; + } -#if MAPBOX_DEBUG_CACHE - string methodName = _className + "." + new System.Diagnostics.StackFrame().GetMethod().Name; - Debug.LogFormat("{0} {1} about to prune()", methodName, _tileset); -#endif + private void pruneNonOfflineTiles() + { + long tileCnt = _sqlite.ExecuteScalar("SELECT COUNT(id) FROM (SELECT id FROM tiles LEFT JOIN tile2offline ON id = tileId WHERE tileId IS NULL)"); - try + if (tileCnt > MaxCacheSize) { - // no 'ORDER BY' or 'LIMIT' possible if sqlite hasn't been compiled with 'SQLITE_ENABLE_UPDATE_DELETE_LIMIT' - // https://sqlite.org/compile.html#enable_update_delete_limit - _sqlite.Execute("DELETE FROM tiles WHERE rowid IN ( SELECT rowid FROM tiles ORDER BY timestamp ASC LIMIT ? );", toDelete); + var query = "SELECT max(accessed) " + + "FROM ( " + + " SELECT accessed " + + " FROM tiles " + + " LEFT JOIN tile2offline " + + " ON tileId = tiles.id " + + " WHERE tileId IS NULL " + + " ORDER BY accessed ASC LIMIT ?1 " + + ") "; + + var command = _sqlite.CreateCommand(query, 5); + var accessed = command.ExecuteScalar(); + + var tileQuery = "DELETE FROM tiles " + + "WHERE id IN ( " + + " SELECT id FROM tiles " + + " LEFT JOIN tile2offline " + + " ON tileId = tiles.id " + + " WHERE tileId IS NULL " + + " AND accessed <= ?1 " + + ") "; + var tileCommand = _sqlite.CreateCommand(tileQuery, accessed); + var rowChanged = tileCommand.ExecuteNonQuery(); } - catch (Exception ex) - { - Debug.LogErrorFormat("error pruning: {0}", ex); - } - } +// +// +// long tileCnt = _sqlite.ExecuteScalar("SELECT COUNT(zoom_level) FROM tiles"); +// +// if (tileCnt < _maxTileCount) +// { +// return; +// } +// +// long toDelete = tileCnt - _maxTileCount; +// +// #if MAPBOX_DEBUG_CACHE +// string methodName = _className + "." + new System.Diagnostics.StackFrame().GetMethod().Name; +// Debug.LogFormat("{0} {1} about to prune()", methodName, _tileset); +// #endif +// +// try +// { +// // no 'ORDER BY' or 'LIMIT' possible if sqlite hasn't been compiled with 'SQLITE_ENABLE_UPDATE_DELETE_LIMIT' +// // https://sqlite.org/compile.html#enable_update_delete_limit +// _sqlite.Execute("DELETE FROM tiles WHERE rowid IN ( SELECT rowid FROM tiles ORDER BY timestamp ASC LIMIT ? );", toDelete); +// } +// catch (Exception ex) +// { +// Debug.LogErrorFormat("error pruning: {0}", ex); +// } + } /// /// Returns the tile data, otherwise null /// + /// Name of the tileset/style requested /// Canonical tile id to identify the tile /// tile data as byte[], if tile is not cached returns null public CacheItem Get(string tilesetName, CanonicalTileId tileId) @@ -328,7 +309,7 @@ public CacheItem Get(string tilesetName, CanonicalTileId tileId) && t.zoom_level == tileId.Z && t.tile_column == tileId.X && t.tile_row == tileId.Y - ) + ) .FirstOrDefault(); } catch (Exception ex) @@ -336,60 +317,220 @@ public CacheItem Get(string tilesetName, CanonicalTileId tileId) Debug.LogErrorFormat("error getting tile {1} {2} from cache{0}{3}", Environment.NewLine, tilesetName, tileId, ex); return null; } + if (null == tile) { return null; } - DateTime? lastModified = null; - if (tile.lastmodified.HasValue) { lastModified = UnixTimestampUtils.From((double)tile.lastmodified.Value); } - return new CacheItem() { Data = tile.tile_data, AddedToCacheTicksUtc = tile.timestamp, - ETag = tile.etag, - LastModified = lastModified + ETag = tile.etag }; } - /// /// Check if tile exists /// + /// Name of the tileset/style requested /// Canonical tile id /// True if tile exists public bool TileExists(string tilesetName, CanonicalTileId tileId) + { + var query = "SELECT length(tile_data) " + + "FROM tiles " + + "WHERE tile_set = ?1 " + + " AND zoom_level = ?2 " + + " AND tile_column = ?3 " + + " AND tile_row = ?4 " + + "LIMIT 1"; + var countCommand = _sqlite.CreateCommand(query, + tilesetName, + tileId.Z, + tileId.X, + tileId.Y); + var count = countCommand.ExecuteScalar(); + + return count > 0; + } + + /// + /// FOR INTERNAL DEBUGGING ONLY - DON'T RELY ON IN PRODUCTION + /// + /// + /// + public long TileCount(string tilesetName) { int? tilesetId = getTilesetId(tilesetName); if (!tilesetId.HasValue) { - return false; + return 0; } - return null != _sqlite + return _sqlite .Table() - .Where(t => - t.tile_set == tilesetId.Value - && t.zoom_level == tileId.Z - && t.tile_column == tileId.X - && t.tile_row == tileId.Y - ) - .FirstOrDefault(); + .Where(t => t.tile_set == tilesetId.Value) + .LongCount(); + } + + public int GetAmbientTileCount() + { + return _sqlite.ExecuteScalar("SELECT COUNT(id) FROM (SELECT id FROM tiles LEFT JOIN tile2offline ON id = tileId WHERE tileId IS NULL)"); } + public int GetOfflineTileCount() + { + return _sqlite.ExecuteScalar("SELECT COUNT(id) FROM (SELECT id FROM tiles LEFT JOIN tile2offline ON id = tileId WHERE tileId IS NOT NULL)"); + } + + public int GetOfflineTileCount(string offlineMapName) + { + var query = "SELECT COUNT(tileId) FROM tile2offline WHERE mapId = (SELECT id FROM offlinemaps WHERE name = ?1)"; + var command = _sqlite.CreateCommand(query, offlineMapName); + return command.ExecuteScalar(); + } + + public int GetOfflineDataSize(int offlineMapId) + { + var query = "SELECT SUM(LENGTH(tile_data)) " + + "FROM tile2offline, tiles " + + "WHERE mapId = ?1 " + + "AND tileId = tiles.id "; + var command = _sqlite.CreateCommand(query, offlineMapId); + return command.ExecuteScalar(); + } + + public int GetOfflineDataSize(string offlineMapName) + { + var query = "SELECT SUM(LENGTH(tile_data)) " + + "FROM tile2offline, tiles " + + "WHERE mapId = (SELECT id FROM offlinemaps WHERE name = ?1) " + + "AND tileId = tiles.id "; + var command = _sqlite.CreateCommand(query, offlineMapName); + return command.ExecuteScalar(); + } + + public void ClearAmbientCache() + { + var query = "DELETE FROM tiles WHERE id NOT IN ( SELECT tileId FROM tile2offline)"; + var clearAmbientCommand = _sqlite.CreateCommand(query); + clearAmbientCommand.ExecuteNonQuery(); + } + + public void Clear(string tilesetName) + { + + } + + /// + /// Delete the database file. + /// Call 'ReInit()' if you intend to continue using the cache after 'Clear()! + /// + public void Clear() + { + //already disposed + if (null == _sqlite) + { + return; + } + + _sqlite.Close(); + _sqlite.Dispose(); + _sqlite = null; + + Debug.LogFormat("deleting {0}", _dbPath); + + // try several times in case SQLite needs a bit more time to dispose + for (int i = 0; i < 5; i++) + { + try + { + File.Delete(_dbPath); + return; + } + catch + { +#if !WINDOWS_UWP + System.Threading.Thread.Sleep(100); +#else + System.Threading.Tasks.Task.Delay(100).Wait(); +#endif + } + } + + // if we got till here, throw on last try + File.Delete(_dbPath); + } + + public void MarkOffline(int offlineMapId, string tilesetName, CanonicalTileId tileId) + { + try + { + var query = "INSERT OR IGNORE INTO tile2offline (mapId, tileId)" + + "SELECT ?1, tiles.id " + + "FROM tiles " + + "WHERE tile_set = (SELECT id FROM tilesets WHERE name = ?2) " + + " AND zoom_level = ?3 " + + " AND tile_column = ?4 " + + " AND tile_row = ?5"; + var command = _sqlite.CreateCommand(query, + offlineMapId, + tilesetName, + tileId.Z, + tileId.X, + tileId.Y); + command.ExecuteNonQuery(); + } + catch (Exception ex) + { + Debug.LogErrorFormat("Error inserting {0} {1} {2} ", offlineMapId, tileId, ex); + } + } + + public void DeleteOfflineMap(int offlineMapId) + { + var query = "DELETE FROM offlinemaps WHERE id = ?"; + var command = _sqlite.CreateCommand(query, offlineMapId); + command.ExecuteNonQuery(); + } + + public void DeleteOfflineMap(string offlineMapName) + { + var query = "DELETE FROM offlinemaps WHERE name = ?"; + var command = _sqlite.CreateCommand(query, offlineMapName); + command.ExecuteNonQuery(); + } + + + + public Dictionary GetOfflineMapList() + { + var mapList = new Dictionary(); + + var maps = _sqlite.Table().ToList(); + + foreach (var offlineMap in maps) + { + mapList.Add(offlineMap.name, _sqlite.Table().Where(x => x.mapId == offlineMap.id).Count()); + } + + return mapList; + } private int insertTileset(string tilesetName) { try { _sqlite.BeginTransaction(true); - tilesets newTileset = new tilesets { name = tilesetName }; + tilesets newTileset = new tilesets {name = tilesetName}; int rowsAffected = _sqlite.Insert(newTileset); if (1 != rowsAffected) { throw new Exception(string.Format("tileset [{0}] was not inserted, rows affected:{1}", tilesetName, rowsAffected)); } + return newTileset.id; } catch (Exception ex) @@ -403,83 +544,201 @@ private int insertTileset(string tilesetName) } } - private int? getTilesetId(string tilesetName) { tilesets tileset = _sqlite .Table() .Where(ts => ts.name.Equals(tilesetName)) .FirstOrDefault(); - return null == tileset ? (int?)null : tileset.id; + return null == tileset ? (int?) null : tileset.id; } + private int insertOfflineMap(string offlineMapName) + { + try + { + _sqlite.BeginTransaction(true); + var newOfflineMap = new offlineMaps() {name = offlineMapName}; + int rowsAffected = _sqlite.Insert(newOfflineMap); + if (1 != rowsAffected) + { + throw new Exception(string.Format("tileset [{0}] was not inserted, rows affected:{1}", offlineMapName, rowsAffected)); + } - /// - /// FOR INTERNAL DEBUGGING ONLY - DON'T RELY ON IN PRODUCTION - /// - /// - /// - public long TileCount(string tilesetName) + return newOfflineMap.id; + } + catch (Exception ex) + { + Debug.LogErrorFormat("could not insert offlinemaps [{0}]: {1}", offlineMapName, ex); + return -1; + } + finally + { + _sqlite.Commit(); + } + } + + private int? getOfflineMapId(string offlineMapName) { - int? tilesetId = getTilesetId(tilesetName); - if (!tilesetId.HasValue) { return 0; } + var offlineMap = _sqlite + .Table() + .Where(ts => ts.name.Equals(offlineMapName)) + .FirstOrDefault(); + return null == offlineMap ? (int?) null : offlineMap.id; + } - return _sqlite - .Table() - .Where(t => t.tile_set == tilesetId.Value) - .LongCount(); + public int GetOrAddOfflineMapId(string offlineMapName) + { + int? offlineMapId; + offlineMapId = getOfflineMapId(offlineMapName); + if (!offlineMapId.HasValue) + { + offlineMapId = insertOfflineMap(offlineMapName); + } + + return offlineMapId.Value; } + public int UpdateTile(tiles newTile) + { + var query = "UPDATE tiles " + + "SET tile_data = ?1, timestamp = ?2, expirationdate = ?3, etag = ?4, accessed = ?5 " + + "WHERE tile_set = ?6 AND zoom_level = ?7 AND tile_column = ?8 AND tile_row = ?9 "; + var command = _sqlite.CreateCommand(query, + newTile.tile_data, + newTile.timestamp, + newTile.expirationdate, + newTile.etag, + newTile.accessed, + newTile.tile_set, + newTile.zoom_level, + newTile.tile_column, + newTile.tile_row); + return command.ExecuteNonQuery(); + } - /// - /// Clear cache for one tile set - /// - /// - public void Clear(string tilesetName) + public long InsertTile(tiles newTile) { - int? tilesetId = getTilesetId(tilesetName); - if (!tilesetId.HasValue) { return; } - //just delete on table 'tilesets', we've setup cascading which should take care of tabls 'tiles' - _sqlite.Delete(tilesetId.Value); + var query = "INSERT INTO tiles " + + "(tile_set, zoom_level, tile_column, tile_row, tile_data, timestamp, expirationdate, etag, accessed)" + + "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; + + var command = _sqlite.CreateCommand(query, + newTile.tile_set, + newTile.zoom_level, + newTile.tile_column, + newTile.tile_row, + newTile.tile_data, + newTile.timestamp, + newTile.expirationdate, + newTile.etag, + newTile.accessed); + var rowsChanged = command.ExecuteNonQuery(); + if (rowsChanged > 0) + { + newTile.id = (int) SQLite3.LastInsertRowid(_sqlite.Handle); + } + + return rowsChanged; } - /// - /// Delete the database file. - /// Call 'ReInit()' if you intend to continue using the cache after 'Clear()! - /// - public void Clear() + + private void CreateTables() { - //already disposed - if (null == _sqlite) { return; } + List colInfoTileset = _sqlite.GetTableInfo(typeof(tilesets).Name); + if (0 == colInfoTileset.Count) + { + string cmdCreateTableTilesets = @"CREATE TABLE tilesets( +id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL UNIQUE, +name STRING NOT NULL +);"; + _sqlite.Execute(cmdCreateTableTilesets); + string cmdCreateIdxNames = @"CREATE UNIQUE INDEX idx_names ON tilesets (name ASC);"; + _sqlite.Execute(cmdCreateIdxNames); + } - _sqlite.Close(); - _sqlite.Dispose(); - _sqlite = null; + List colInfoTiles = _sqlite.GetTableInfo(typeof(tiles).Name); + if (0 == colInfoTiles.Count) + { + string cmdCreateTableTiles = @"CREATE TABLE tiles( +id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL UNIQUE, +tile_set INTEGER REFERENCES tilesets (id) ON DELETE CASCADE ON UPDATE CASCADE, +zoom_level INTEGER NOT NULL, +tile_column BIGINT NOT NULL, +tile_row BIGINT NOT NULL, +tile_data BLOB NOT NULL, +timestamp INTEGER NOT NULL, +expirationdate INTEGER NOT NULL, +etag TEXT, +accessed INTEGER NOT NULL, +CONSTRAINT tileConstraint UNIQUE (tile_set, zoom_level, tile_column, tile_row) +);"; + _sqlite.Execute(cmdCreateTableTiles); - Debug.LogFormat("deleting {0}", _dbPath); + string cmdIdxTileset = "CREATE INDEX idx_tileset ON tiles (tile_set ASC);"; + _sqlite.Execute(cmdIdxTileset); + string cmdIdxTimestamp = "CREATE INDEX idx_timestamp ON tiles (timestamp ASC);"; + _sqlite.Execute(cmdIdxTimestamp); + } - // try several times in case SQLite needs a bit more time to dispose - for (int i = 0; i < 5; i++) + + List colInfoOfflineMaps = _sqlite.GetTableInfo(typeof(offlineMaps).Name); + if (0 == colInfoOfflineMaps.Count) + { + string cmdCreateTableOfflineMaps = @"CREATE TABLE offlinemaps( +id INTEGER PRIMARY KEY ASC AUTOINCREMENT NOT NULL UNIQUE, +name STRING NOT NULL +);"; + _sqlite.Execute(cmdCreateTableOfflineMaps); + string cmdCreateIdxOfflineMapNames = @"CREATE UNIQUE INDEX idx_offlineMapNames ON offlinemaps (name ASC);"; + _sqlite.Execute(cmdCreateIdxOfflineMapNames); + } + + List colInfoTileToOffline = _sqlite.GetTableInfo(typeof(tile2offline).Name); + if (0 == colInfoTileToOffline.Count) + { + string cmdCreateTableTile2Offline = @"CREATE TABLE tile2offline( +tileId INTEGER NOT NULL, +mapId INTEGER NOT NULL, +CONSTRAINT tileAssignmentConstraint UNIQUE (tileId, mapId) +);"; + _sqlite.Execute(cmdCreateTableTile2Offline); + string cmdCreateIdxOfflineMap2Tiles = @"CREATE UNIQUE INDEX idx_offlineMapToTiles ON tile2offline (tileId, mapId ASC);"; + _sqlite.Execute(cmdCreateIdxOfflineMap2Tiles); + } + } + + private void PragmaCommands() + { + // some pragmas to speed things up a bit :-) + // inserting 1,000 tiles takes 1-2 sec as opposed to ~20 sec + string[] cmds = new string[] + { + "PRAGMA synchronous=OFF", + "PRAGMA count_changes=OFF", + "PRAGMA journal_mode=MEMORY", + "PRAGMA temp_store=MEMORY" + }; + foreach (var cmd in cmds) { try { - File.Delete(_dbPath); - return; + _sqlite.Execute(cmd); } - catch + catch (SQLiteException ex) { -#if !WINDOWS_UWP - System.Threading.Thread.Sleep(100); -#else - System.Threading.Tasks.Task.Delay(100).Wait(); -#endif + // workaround for sqlite.net's exeception: + // https://stackoverflow.com/a/23839503 + if (ex.Result != SQLite3.Result.Row) + { + UnityEngine.Debug.LogErrorFormat("{0}: {1}", cmd, ex); + // TODO: when mapbox-sdk-cs gets backported to its own repo -> throw + //throw; // to throw or not to throw??? + } } } - - // if we got till here, throw on last try - File.Delete(_dbPath); } } -} +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/Tiles.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/Tiles.cs index 18629526b..30d50aa6f 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/Tiles.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/Tiles.cs @@ -1,4 +1,5 @@ -using System.Collections; +using System; +using System.Collections; using System.Collections.Generic; using UnityEngine; using SQLite4Unity3d; @@ -11,6 +12,8 @@ namespace Mapbox.Platform.Cache /// public class tiles { + [PrimaryKey, AutoIncrement] + public int id { get; set; } public int tile_set { get; set; } @@ -34,7 +37,23 @@ public class tiles /// ETag Header value of the reponse for auto updating cache public string etag { get; set; } - /// Last-Modified header value of API response. Not all APIs populate it, will be -1 in that case. - public int? lastmodified { get; set; } + /// Last time entry accessed + public int accessed { get; set; } + + /// datetime when tile forced to update + public int expirationdate { get; set; } + } + + public class offlineMaps + { + [PrimaryKey, AutoIncrement] + public int id { get; set; } + public string name { get; set; } + } + + public class tile2offline + { + public int tileId { get; set; } + public int mapId { get; set; } } } diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/Tilesets.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/Tilesets.cs index ebd47aa28..9c809b739 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/Tilesets.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Cache/SQLiteCache/Tilesets.cs @@ -20,4 +20,10 @@ public class tilesets public string name { get; set; } } + + public class sqlite_sequence + { + public string name { get; set; } + public int seq { get; set; } + } } diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/FileSource.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/FileSource.cs index 3225832c1..5070aac02 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/FileSource.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/FileSource.cs @@ -27,6 +27,7 @@ namespace Mapbox.Platform #endif #if UNITY_5_3_OR_NEWER using UnityEngine; + #endif /// @@ -40,7 +41,6 @@ namespace Mapbox.Platform /// public sealed class FileSource : IFileSource { - private Func _getMapsSkuToken; private readonly Dictionary _requests = new Dictionary(); private readonly string _accessToken; @@ -49,8 +49,10 @@ public sealed class FileSource : IFileSource /// Length of rate-limiting interval in seconds. https://www.mapbox.com/api-documentation/#rate-limit-headers #pragma warning disable 0414 private int? XRateLimitInterval; + /// Maximum number of requests you may make in the current interval before reaching the limit. https://www.mapbox.com/api-documentation/#rate-limit-headers private long? XRateLimitLimit; + /// Timestamp of when the current interval will end and the ratelimit counter is reset. https://www.mapbox.com/api-documentation/#rate-limit-headers private DateTime? XRateLimitReset; #pragma warning restore 0414 @@ -59,14 +61,7 @@ public sealed class FileSource : IFileSource public FileSource(Func getMapsSkuToken, string acessToken = null) { _getMapsSkuToken = getMapsSkuToken; - if (string.IsNullOrEmpty(acessToken)) - { - _accessToken = Environment.GetEnvironmentVariable("MAPBOX_ACCESS_TOKEN"); - } - else - { - _accessToken = acessToken; - } + _accessToken = acessToken; } /// Performs a request asynchronously. @@ -92,7 +87,8 @@ string url string skuToken = "sku=" + _getMapsSkuToken(); if (uriBuilder.Query != null && uriBuilder.Query.Length > 1) { - uriBuilder.Query = uriBuilder.Query.Substring(1) + "&" + accessTokenQuery + "&" + skuToken;; + uriBuilder.Query = uriBuilder.Query.Substring(1) + "&" + accessTokenQuery + "&" + skuToken; + ; } else { @@ -127,16 +123,27 @@ string url , string tilesetId ) { - // TODO: plugin caching somewhere around here var request = IAsyncRequestFactory.CreateRequest( url , (Response response) => { - if (response.XRateLimitInterval.HasValue) { XRateLimitInterval = response.XRateLimitInterval; } - if (response.XRateLimitLimit.HasValue) { XRateLimitLimit = response.XRateLimitLimit; } - if (response.XRateLimitReset.HasValue) { XRateLimitReset = response.XRateLimitReset; } + if (response.XRateLimitInterval.HasValue) + { + XRateLimitInterval = response.XRateLimitInterval; + } + + if (response.XRateLimitLimit.HasValue) + { + XRateLimitLimit = response.XRateLimitLimit; + } + + if (response.XRateLimitReset.HasValue) + { + XRateLimitReset = response.XRateLimitReset; + } + callback(response); lock (_lock) { @@ -161,6 +168,7 @@ string url _requests.Add(request, 0); } } + //yield return request; return request; } @@ -193,13 +201,13 @@ public IEnumerator WaitForAllRequests() } } } + yield return new WaitForSeconds(0.2f); } } #endif - #if !UNITY_5_3_OR_NEWER /// /// Block until all the requests are processed. @@ -252,4 +260,4 @@ public void WaitForAllRequests() } #endif } -} +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/IAsyncRequestFactory.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/IAsyncRequestFactory.cs index 195d1e428..01e6e72e2 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/IAsyncRequestFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/IAsyncRequestFactory.cs @@ -34,6 +34,22 @@ string url #endif } - + public static IAsyncRequest CreateRequest( + string url + , int timeout + , string headerName + , string headerValue + , Action callback + ) { +#if !UNITY + if (Environment.ProcessorCount > 2) { + return new HTTPRequestThreaded(url, callback, timeout); + } else { + return new HTTPRequestNonThreaded(url, callback, timeout); + } +#else + return new Mapbox.Unity.Utilities.HTTPRequest(url, callback, timeout, headerName, headerValue); +#endif + } } } \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Response.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Response.cs index 5735aa7ca..2c5ded836 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Response.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/Response.cs @@ -315,7 +315,7 @@ public static Response FromWebResponse(IAsyncRequest request, UnityWebRequest ap int statusCode = (int)apiResponse.responseCode; response.StatusCode = statusCode; - if (statusCode != 200) + if (statusCode != 200 && statusCode != 304) { response.AddException(new Exception(string.Format("Status Code {0}", apiResponse.responseCode))); } diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/SQLite/SQLite.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/SQLite/SQLite.cs index b28b443c4..008bae6ee 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/SQLite/SQLite.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Platform/SQLite/SQLite.cs @@ -31,7 +31,7 @@ using System.Linq; using System.Linq.Expressions; using System.Threading; - +using Mapbox.Platform.Cache; #if USE_CSHARP_SQLITE using Sqlite3 = Community.CsharpSqlite.Sqlite3; using Sqlite3DatabaseHandle = Community.CsharpSqlite.Sqlite3.sqlite3; @@ -281,12 +281,12 @@ public IEnumerable TableMappings /// /// /// The type whose mapping to the database is returned. - /// + /// /// /// Optional flags allowing implicit PK and indexes based on naming conventions - /// + /// /// - /// The mapping represents the schema of the columns of the database and contains + /// The mapping represents the schema of the columns of the database and contains /// methods to set and get properties of objects. /// public TableMapping GetMapping(Type type, CreateFlags createFlags = CreateFlags.None) @@ -308,7 +308,7 @@ public TableMapping GetMapping(Type type, CreateFlags createFlags = CreateFlags. /// Retrieves the mapping that is automatically generated for the given type. /// /// - /// The mapping represents the schema of the columns of the database and contains + /// The mapping represents the schema of the columns of the database and contains /// methods to set and get properties of objects. /// public TableMapping GetMapping() @@ -363,7 +363,7 @@ public int CreateTable(CreateFlags createFlags = CreateFlags.None) /// later access this schema by calling GetMapping. /// /// Type to reflect to a database table. - /// Optional flags allowing implicit PK and indexes based on naming conventions. + /// Optional flags allowing implicit PK and indexes based on naming conventions. /// /// The number of entries added to the database schema. /// @@ -805,7 +805,7 @@ public IEnumerable DeferredQuery(TableMapping map, string query, params /// /// Attempts to retrieve the first object that matches the predicate from the table - /// associated with the specified type. + /// associated with the specified type. /// /// /// A predicate for which object to find. @@ -859,7 +859,7 @@ public object Find(object pk, TableMapping map) /// /// Attempts to retrieve the first object that matches the predicate from the table - /// associated with the specified type. + /// associated with the specified type. /// /// /// A predicate for which object to find. @@ -887,9 +887,9 @@ public bool IsInTransaction /// Throws if a transaction has already begun. public void BeginTransaction(bool exclusive = false) { - // The BEGIN command only works if the transaction stack is empty, - // or in other words if there are no pending transactions. - // If the transaction stack is not empty when the BEGIN command is invoked, + // The BEGIN command only works if the transaction stack is empty, + // or in other words if there are no pending transactions. + // If the transaction stack is not empty when the BEGIN command is invoked, // then the command fails with an error. // Rather than crash with an error, we will just ignore calls to BeginTransaction // that would result in an error. @@ -911,7 +911,7 @@ public void BeginTransaction(bool exclusive = false) var sqlExp = ex as SQLiteException; if (sqlExp != null) { - // It is recommended that applications respond to the errors listed below + // It is recommended that applications respond to the errors listed below // by explicitly issuing a ROLLBACK command. // TODO: This rollback failsafe should be localized to all throw sites. switch (sqlExp.Result) @@ -927,7 +927,7 @@ public void BeginTransaction(bool exclusive = false) } else { - // Call decrement and not VolatileWrite in case we've already + // Call decrement and not VolatileWrite in case we've already // created a transaction point in SaveTransactionPoint since the catch. Interlocked.Decrement(ref _transactionDepth); } @@ -945,7 +945,7 @@ public void BeginTransaction(bool exclusive = false) /// /// Creates a savepoint in the database at the current point in the transaction timeline. /// Begins a new transaction if one is not in progress. - /// + /// /// Call to undo transactions since the returned savepoint. /// Call to commit transactions after the savepoint returned here. /// Call to end the transaction, committing all changes. @@ -965,7 +965,7 @@ public string SaveTransactionPoint() var sqlExp = ex as SQLiteException; if (sqlExp != null) { - // It is recommended that applications respond to the errors listed below + // It is recommended that applications respond to the errors listed below // by explicitly issuing a ROLLBACK command. // TODO: This rollback failsafe should be localized to all throw sites. switch (sqlExp.Result) @@ -1013,8 +1013,8 @@ public void RollbackTo(string savepoint) /// true to avoid throwing exceptions, false otherwise void RollbackTo(string savepoint, bool noThrow) { - // Rolling back without a TO clause rolls backs all transactions - // and leaves the transaction stack empty. + // Rolling back without a TO clause rolls backs all transactions + // and leaves the transaction stack empty. try { if (String.IsNullOrEmpty(savepoint)) @@ -1039,10 +1039,10 @@ void RollbackTo(string savepoint, bool noThrow) } /// - /// Releases a savepoint returned from . Releasing a savepoint + /// Releases a savepoint returned from . Releasing a savepoint /// makes changes since that savepoint permanent if the savepoint began the transaction, /// or otherwise the changes are permanent pending a call to . - /// + /// /// The RELEASE command is like a COMMIT for a SAVEPOINT. /// /// The name of the savepoint to release. The string should be the result of a call to @@ -1325,13 +1325,13 @@ public int Insert(object obj, string extra, Type objType) { var info = objType.GetTypeInfo(); prop = info.GetDeclaredProperty(map.PK.PropertyName); - if (prop != null) + if (prop != null) { if (prop.GetValue(obj, null).Equals(Guid.Empty)) { prop.SetValue(obj, Guid.NewGuid(), null); } - break; + break; } objType = info.BaseType; @@ -1594,6 +1594,8 @@ public void Close() } } } + + } /// diff --git a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Tests/UnitTests/Editor/MapboxUnitTests_SQLiteCache.cs b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Tests/UnitTests/Editor/MapboxUnitTests_SQLiteCache.cs index 60e7f5e8c..844af207a 100644 --- a/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Tests/UnitTests/Editor/MapboxUnitTests_SQLiteCache.cs +++ b/sdkproject/Assets/Mapbox/Core/mapbox-sdk-cs/Tests/UnitTests/Editor/MapboxUnitTests_SQLiteCache.cs @@ -253,8 +253,7 @@ private List simpleInsert(string tileSetName, bool forceInsert, HashSetWorldwide Dynamic Zoom & Panning Support\n\nThis example is + a starting point for creating a traditional web-based zoomable map. Go anywhere + in the world and check out Mapbox\u2019s high-quality satellite imagery. + It also uses the SpawnOnMap script to instantiate custom markers on the map + at specified locations." + objectReference: {fileID: 0} + - target: {fileID: 114699889412236512, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_BlockingMask.m_Bits + value: 261943 + objectReference: {fileID: 0} + - target: {fileID: 114731470950229392, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_Size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224315790701160254, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224835413515161394, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224835413515161394, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224835413515161394, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 116.5 + objectReference: {fileID: 0} + - target: {fileID: 224835413515161394, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -77.303246 + objectReference: {fileID: 0} + - target: {fileID: 224835413515161394, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_SizeDelta.x + value: 213 + objectReference: {fileID: 0} + - target: {fileID: 224835413515161394, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_SizeDelta.y + value: 134.60649 + objectReference: {fileID: 0} + - target: {fileID: 224857786874416376, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_SizeDelta.y + value: 154.60649 + objectReference: {fileID: 0} + - target: {fileID: 224857786874416376, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000015258789 + objectReference: {fileID: 0} + - target: {fileID: 224907856650798614, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224907856650798614, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224907856650798614, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 224907993215804030, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224907993215804030, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224907993215804030, guid: 98be219873e6d4dffb5949746f515a33, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 98be219873e6d4dffb5949746f515a33, type: 3} +--- !u!1 &255389120 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 255389121} + - component: {fileID: 255389124} + - component: {fileID: 255389123} + - component: {fileID: 255389122} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &255389121 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 255389120} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 730776033} + m_Father: {fileID: 471752046} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -35.350006} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &255389122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 255389120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 255389123} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &255389123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 255389120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &255389124 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 255389120} + m_CullTransparentMesh: 0 +--- !u!1 &327926548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 327926549} + - component: {fileID: 327926552} + - component: {fileID: 327926551} + - component: {fileID: 327926550} + m_Layer: 5 + m_Name: InputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &327926549 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 327926548} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1543928815} + - {fileID: 1551586478} + m_Father: {fileID: 1227154253} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 20, y: -482.35} + m_SizeDelta: {x: 360, y: 147.7} + m_Pivot: {x: 0, y: 0} +--- !u!114 &327926550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 327926548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 327926551} + m_TextComponent: {fileID: 1551586479} + m_Placeholder: {fileID: 1543928816} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 2 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 1 +--- !u!114 &327926551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 327926548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &327926552 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 327926548} + m_CullTransparentMesh: 0 +--- !u!1 &336238748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 336238749} + - component: {fileID: 336238751} + - component: {fileID: 336238750} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &336238749 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336238748} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1855580291} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &336238750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336238748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &336238751 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336238748} + m_CullTransparentMesh: 0 +--- !u!1 &344419399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 344419400} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &344419400 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 344419399} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 437905374} + m_Father: {fileID: 1355918473} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &390836297 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013044306136, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3adcee2515f8c49f4a7afb3bacf2c56e, type: 3} +--- !u!1 &398418928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 398418929} + - component: {fileID: 398418931} + - component: {fileID: 398418930} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &398418929 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398418928} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 616540061} + m_Father: {fileID: 1229435886} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: -1.1000061} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &398418930 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398418928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &398418931 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398418928} + m_CullTransparentMesh: 0 +--- !u!1 &419095224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 419095225} + - component: {fileID: 419095227} + - component: {fileID: 419095226} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &419095225 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 419095224} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1162584193} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &419095226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 419095224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &419095227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 419095224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_ChildAlignment: 0 + m_Spacing: 8 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1 &432292906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 432292907} + - component: {fileID: 432292909} + - component: {fileID: 432292908} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &432292907 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432292906} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1341460001} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &432292908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432292906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Map Name +--- !u!222 &432292909 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432292906} + m_CullTransparentMesh: 0 +--- !u!1 &437905373 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 437905374} + - component: {fileID: 437905376} + - component: {fileID: 437905375} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &437905374 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437905373} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 344419400} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &437905375 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437905373} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &437905376 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437905373} + m_CullTransparentMesh: 0 +--- !u!1 &470630862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 470630863} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &470630863 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 470630862} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 111371666} + m_Father: {fileID: 1785722563} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &471752045 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 471752046} + - component: {fileID: 471752048} + - component: {fileID: 471752047} + m_Layer: 5 + m_Name: ProgressPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &471752046 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471752045} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1785722563} + - {fileID: 255389121} + m_Father: {fileID: 1343370028} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -200, y: 0} + m_SizeDelta: {x: -400, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &471752047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471752045} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.7372549} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &471752048 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471752045} + m_CullTransparentMesh: 0 +--- !u!1 &535979530 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 535979531} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &535979531 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 535979530} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 544513384} + m_Father: {fileID: 630188711} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &544513383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 544513384} + - component: {fileID: 544513386} + - component: {fileID: 544513385} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &544513384 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 544513383} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 535979531} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &544513385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 544513383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &544513386 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 544513383} + m_CullTransparentMesh: 0 +--- !u!1 &555018382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 555018384} + - component: {fileID: 555018383} + - component: {fileID: 555018386} + m_Layer: 0 + m_Name: Map + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &555018383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 555018382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cd961b1c9541a4cee99686069ecce852, type: 3} + m_Name: + m_EditorClassIdentifier: + _options: + locationOptions: + latitudeLongitude: 37.7648, -122.463 + zoom: 10 + extentOptions: + extentType: 0 + defaultExtents: + cameraBoundsOptions: + camera: {fileID: 0} + visibleBuffer: 0 + disposeBuffer: 0 + rangeAroundCenterOptions: + west: 1 + north: 1 + east: 1 + south: 1 + rangeAroundTransformOptions: + targetTransform: {fileID: 0} + visibleBuffer: 0 + disposeBuffer: 0 + placementOptions: + placementType: 1 + snapMapToZero: 0 + scalingOptions: + scalingType: 1 + unityTileSize: 100 + loadingTexture: {fileID: 2800000, guid: e2896a92727704803a9c422b043eae89, type: 3} + tileMaterial: {fileID: 2100000, guid: b9f23e9bce724fa4daac57ecded470b8, type: 2} + _initializeOnStart: 1 + _imagery: + _layerProperty: + sourceType: 4 + sourceOptions: + isActive: 1 + layerSource: + Name: Streets + Id: mapbox.satellite + Modified: + UserName: + rasterOptions: + useRetina: 1 + useCompression: 0 + useMipMap: 1 + _terrain: + _layerProperty: + sourceType: 0 + sourceOptions: + isActive: 1 + layerSource: + Name: + Id: mapbox.terrain-rgb + Modified: + UserName: + elevationLayerType: 1 + requiredOptions: + exaggerationFactor: 1 + colliderOptions: + addCollider: 0 + modificationOptions: + sampleCount: 10 + useRelativeHeight: 0 + earthRadius: 1000 + unityLayerOptions: + addToLayer: 0 + layerId: 0 + sideWallOptions: + isActive: 0 + wallHeight: 10 + wallMaterial: {fileID: 0} + _vectorData: + _layerProperty: + tileJsonData: + tileJSONLoaded: 0 + LayerDisplayNames: + - admin + - aeroway + - airport_label + - barrier_line + - building + - country_label + - housenum_label + - landuse + - landuse_overlay + - marine_label + - motorway_junction + - mountain_peak_label + - place_label + - poi_label + - rail_station_label + - road + - road_label + - state_label + - water + - water_label + - waterway + - waterway_label + _sourceType: 1 + sourceOptions: + isActive: 1 + layerSource: + Name: Mapbox Streets + Id: mapbox.mapbox-streets-v7 + Modified: + UserName: + useOptimizedStyle: 0 + optimizedStyle: + Name: + Id: + Modified: + UserName: + performanceOptions: + isEnabled: 1 + entityPerCoroutine: 20 + vectorSubLayers: [] + locationPrefabList: [] + _tileProvider: {fileID: 0} + _previewOptions: + isPreviewEnabled: 0 +--- !u!4 &555018384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 555018382} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &555018386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 555018382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2c699b8e1864b4b248acb7a04ede9480, type: 3} + m_Name: + m_EditorClassIdentifier: + _panSpeed: 1 + _zoomSpeed: 0.25 + _referenceCamera: {fileID: 1787361574} + _mapManager: {fileID: 555018383} + _useDegreeMethod: 0 + _keyboardPanEnabled: 0 +--- !u!1 &588534990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 588534991} + - component: {fileID: 588534993} + - component: {fileID: 588534992} + m_Layer: 5 + m_Name: MaxLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &588534991 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 588534990} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 634468624} + m_Father: {fileID: 1227154253} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 86.92, y: -56.89} + m_SizeDelta: {x: 140.04, y: 19.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &588534992 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 588534990} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Maximum LatLng +--- !u!222 &588534993 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 588534990} + m_CullTransparentMesh: 0 +--- !u!1 &608539059 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 608539060} + - component: {fileID: 608539062} + - component: {fileID: 608539061} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &608539060 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608539059} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1212134311} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &608539061 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608539059} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &608539062 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608539059} + m_CullTransparentMesh: 0 +--- !u!1 &616540060 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 616540061} + - component: {fileID: 616540063} + - component: {fileID: 616540062} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &616540061 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616540060} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 398418929} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &616540062 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616540060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &616540063 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616540060} + m_CullTransparentMesh: 0 +--- !u!1 &630188710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 630188711} + - component: {fileID: 630188714} + - component: {fileID: 630188713} + - component: {fileID: 630188712} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &630188711 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 630188710} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 535979531} + m_Father: {fileID: 1053518601} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!114 &630188712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 630188710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 544513385} + m_HandleRect: {fileID: 544513384} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &630188713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 630188710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &630188714 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 630188710} + m_CullTransparentMesh: 0 +--- !u!1 &634468623 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 634468624} + - component: {fileID: 634468626} + - component: {fileID: 634468625} + m_Layer: 5 + m_Name: MaxValue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &634468624 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 634468623} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 588534991} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 76.92003, y: 0.000015258789} + m_SizeDelta: {x: 211.2, y: 19.5} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &634468625 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 634468623} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: LatLngValues +--- !u!222 &634468626 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 634468623} + m_CullTransparentMesh: 0 +--- !u!1 &671458728 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 671458729} + - component: {fileID: 671458732} + - component: {fileID: 671458731} + - component: {fileID: 671458730} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &671458729 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 671458728} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 141452306} + m_Father: {fileID: 1227154253} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 287.08008, y: -309} + m_SizeDelta: {x: 185.84, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &671458730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 671458728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 671458731} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &671458731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 671458728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &671458732 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 671458728} + m_CullTransparentMesh: 0 +--- !u!1 &715703584 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 715703585} + - component: {fileID: 715703587} + - component: {fileID: 715703586} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &715703585 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715703584} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1355918473} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &715703586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715703584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &715703587 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715703584} + m_CullTransparentMesh: 0 +--- !u!1 &730776032 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 730776033} + - component: {fileID: 730776035} + - component: {fileID: 730776034} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &730776033 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730776032} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 255389121} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &730776034 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730776032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Cancel +--- !u!222 &730776035 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730776032} + m_CullTransparentMesh: 0 +--- !u!1 &899659186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 899659187} + - component: {fileID: 899659189} + - component: {fileID: 899659188} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &899659187 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899659186} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1785722563} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &899659188 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899659186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &899659189 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899659186} + m_CullTransparentMesh: 0 +--- !u!1 &1003178113 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1003178114} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1003178114 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1003178113} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1177518469} + m_Father: {fileID: 1785722563} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0.00000333786, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1020319629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1020319630} + - component: {fileID: 1020319632} + - component: {fileID: 1020319631} + m_Layer: 5 + m_Name: MinValue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1020319630 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1020319629} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1338329427} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 76.92003, y: -0.000015258789} + m_SizeDelta: {x: 211.2, y: 19.5} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1020319631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1020319629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: LatLngValues +--- !u!222 &1020319632 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1020319629} + m_CullTransparentMesh: 0 +--- !u!1 &1045340545 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1045340546} + - component: {fileID: 1045340548} + - component: {fileID: 1045340547} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1045340546 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045340545} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1342691310} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 11.315, y: -0.5} + m_SizeDelta: {x: -32.629997, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1045340547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045340545} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Download Vector Data +--- !u!222 &1045340548 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045340545} + m_CullTransparentMesh: 0 +--- !u!1 &1053518600 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1053518601} + - component: {fileID: 1053518604} + - component: {fileID: 1053518603} + - component: {fileID: 1053518602} + m_Layer: 5 + m_Name: Scroll View + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1053518601 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053518600} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1162584193} + - {fileID: 630188711} + m_Father: {fileID: 1089536130} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 20, y: -308.95} + m_SizeDelta: {x: 360, y: 272.9} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1053518602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053518600} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 419095225} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 1162584193} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 630188712} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1053518603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053518600} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1053518604 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053518600} + m_CullTransparentMesh: 0 +--- !u!1 &1054007410 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1054007411} + - component: {fileID: 1054007413} + - component: {fileID: 1054007412} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1054007411 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054007410} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1341460001} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1054007412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054007410} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1054007413 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054007410} + m_CullTransparentMesh: 0 +--- !u!1 &1089536129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1089536130} + m_Layer: 5 + m_Name: InfoBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1089536130 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1089536129} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1686983909} + - {fileID: 1053518601} + m_Father: {fileID: 1416858049} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -250.64} + m_SizeDelta: {x: 400, y: 323.72} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1154553461 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1154553462} + - component: {fileID: 1154553464} + - component: {fileID: 1154553463} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1154553462 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154553461} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1365179948} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 11.315, y: -0.5} + m_SizeDelta: {x: -32.629997, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1154553463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154553461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Download Elevation +--- !u!222 &1154553464 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154553461} + m_CullTransparentMesh: 0 +--- !u!1 &1161839071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1161839072} + - component: {fileID: 1161839074} + - component: {fileID: 1161839073} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1161839072 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161839071} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1269982019} + m_Father: {fileID: 1365179948} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: -1.1000061} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1161839073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161839071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1161839074 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161839071} + m_CullTransparentMesh: 0 +--- !u!1 &1162584192 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1162584193} + - component: {fileID: 1162584196} + - component: {fileID: 1162584195} + - component: {fileID: 1162584194} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1162584193 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162584192} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 419095225} + m_Father: {fileID: 1053518601} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1162584194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162584192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!114 &1162584195 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162584192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1162584196 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162584192} + m_CullTransparentMesh: 0 +--- !u!1 &1177518468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1177518469} + - component: {fileID: 1177518471} + - component: {fileID: 1177518470} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1177518469 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177518468} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1003178114} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1177518470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177518468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.6096754, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1177518471 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177518468} + m_CullTransparentMesh: 0 +--- !u!1001 &1178802930 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1246307186655398, guid: 00f5bf1ff996842fc82384f8f686fda6, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114023684558016336, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_Value + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 114398042337336202, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_BlockingMask.m_Bits + value: 261943 + objectReference: {fileID: 0} + - target: {fileID: 224178813210018432, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224178813210018432, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224178813210018432, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 127.5 + objectReference: {fileID: 0} + - target: {fileID: 224178813210018432, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -18.5 + objectReference: {fileID: 0} + - target: {fileID: 224178813210018432, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_SizeDelta.x + value: 231 + objectReference: {fileID: 0} + - target: {fileID: 224178813210018432, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_SizeDelta.y + value: 23 + objectReference: {fileID: 0} + - target: {fileID: 224538534500426518, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224538534500426518, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224538534500426518, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 127.5 + objectReference: {fileID: 0} + - target: {fileID: 224538534500426518, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -45.5 + objectReference: {fileID: 0} + - target: {fileID: 224538534500426518, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_SizeDelta.x + value: 231 + objectReference: {fileID: 0} + - target: {fileID: 224538534500426518, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_SizeDelta.y + value: 23 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224709793726594912, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224722295744740158, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224722295744740158, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224722295744740158, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224771389989224222, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224771389989224222, guid: 00f5bf1ff996842fc82384f8f686fda6, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 00f5bf1ff996842fc82384f8f686fda6, type: 3} +--- !u!1 &1212134310 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1212134311} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1212134311 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1212134310} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 608539060} + m_Father: {fileID: 2110420537} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1227154252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1227154253} + - component: {fileID: 1227154254} + m_Layer: 5 + m_Name: OfflineMapControl + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1227154253 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227154252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1338329427} + - {fileID: 588534991} + - {fileID: 1698156339} + - {fileID: 1547991402} + - {fileID: 1365179948} + - {fileID: 1229435886} + - {fileID: 1342691310} + - {fileID: 190760380} + - {fileID: 1341460001} + - {fileID: 671458729} + - {fileID: 327926549} + m_Father: {fileID: 1416858049} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 161.86002} + m_SizeDelta: {x: 400, y: 501.28} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1227154254 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227154252} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f17faf3acbef1264aa97acaa78977db6, type: 3} + m_Name: + m_EditorClassIdentifier: + Map: {fileID: 555018383} + MinLatLngGo: {fileID: 1864103088} + MaxLatLngGo: {fileID: 1480791277} + OfflineMapListContainer: {fileID: 419095225} + OfflineMapListPrefab: {fileID: 3412926180062485390, guid: a8215d1a2d0370d4ba1340b7c01e7e8f, + type: 3} + MinLatLngText: {fileID: 1020319631} + MaxLatLngText: {fileID: 634468625} + TileCountText: {fileID: 190760381} + ReportField: {fileID: 327926550} + MapName: {fileID: 1341460002} + MinZoomSlider: {fileID: 1355918474} + MaxZoomSlider: {fileID: 2110420538} + ElevationToggle: {fileID: 1365179949} + ImageryToggle: {fileID: 1229435887} + VectorToggle: {fileID: 1342691311} + DownloadButton: {fileID: 671458730} + CancelButton: {fileID: 255389122} + ProgressPanel: {fileID: 471752045} + ProgressBar: {fileID: 1785722564} +--- !u!1 &1229435885 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1229435886} + - component: {fileID: 1229435887} + m_Layer: 5 + m_Name: Toggle (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1229435886 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1229435885} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 398418929} + - {fileID: 1414794723} + m_Father: {fileID: 1227154253} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 16.900024, y: -182.90002} + m_SizeDelta: {x: 358.76, y: 30.5} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1229435887 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1229435885} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 398418930} + toggleTransition: 1 + graphic: {fileID: 616540062} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &1269982018 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1269982019} + - component: {fileID: 1269982021} + - component: {fileID: 1269982020} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1269982019 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269982018} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1161839072} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1269982020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269982018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1269982021 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269982018} + m_CullTransparentMesh: 0 +--- !u!1 &1276875583 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1276875585} + - component: {fileID: 1276875584} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1276875584 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276875583} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 0.5 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1276875585 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276875583} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1278722488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1278722489} + - component: {fileID: 1278722491} + - component: {fileID: 1278722490} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1278722489 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278722488} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2066619736} + m_Father: {fileID: 1342691310} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: -1.1000061} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1278722490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278722488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1278722491 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278722488} + m_CullTransparentMesh: 0 +--- !u!1 &1338329426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1338329427} + - component: {fileID: 1338329429} + - component: {fileID: 1338329428} + m_Layer: 5 + m_Name: MinLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1338329427 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338329426} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1020319630} + m_Father: {fileID: 1227154253} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 86.92, y: -31.800003} + m_SizeDelta: {x: 140.04, y: 19.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1338329428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338329426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Minimum LatLng +--- !u!222 &1338329429 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338329426} + m_CullTransparentMesh: 0 +--- !u!1 &1341460000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1341460001} + - component: {fileID: 1341460004} + - component: {fileID: 1341460003} + - component: {fileID: 1341460002} + m_Layer: 5 + m_Name: InputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1341460001 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341460000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 432292907} + - {fileID: 1054007411} + m_Father: {fileID: 1227154253} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 20, y: -324} + m_SizeDelta: {x: 172.92, y: 30} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1341460002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341460000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1341460003} + m_TextComponent: {fileID: 1054007412} + m_Placeholder: {fileID: 432292908} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &1341460003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341460000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1341460004 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341460000} + m_CullTransparentMesh: 0 +--- !u!1 &1342691309 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1342691310} + - component: {fileID: 1342691311} + m_Layer: 5 + m_Name: Toggle (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1342691310 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1342691309} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1278722489} + - {fileID: 1045340546} + m_Father: {fileID: 1227154253} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 16.900024, y: -213.4} + m_SizeDelta: {x: 358.76, y: 30.5} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1342691311 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1342691309} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1278722490} + toggleTransition: 1 + graphic: {fileID: 2066619737} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &1343370024 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1343370028} + - component: {fileID: 1343370027} + - component: {fileID: 1343370026} + - component: {fileID: 1343370025} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1343370025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1343370024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 261943 +--- !u!114 &1343370026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1343370024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1343370027 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1343370024} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1343370028 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1343370024} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 75020823} + - {fileID: 1416858049} + - {fileID: 471752046} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1355918472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1355918473} + - component: {fileID: 1355918474} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1355918473 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1355918472} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 715703585} + - {fileID: 1855580291} + - {fileID: 344419400} + m_Father: {fileID: 1698156339} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 76.91995, y: -0.25} + m_SizeDelta: {x: 212.1, y: 20} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1355918474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1355918472} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 437905375} + m_FillRect: {fileID: 336238749} + m_HandleRect: {fileID: 437905374} + m_Direction: 0 + m_MinValue: 1 + m_MaxValue: 16 + m_WholeNumbers: 1 + m_Value: 7 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1365179947 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1365179948} + - component: {fileID: 1365179949} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1365179948 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1365179947} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1161839072} + - {fileID: 1154553462} + m_Father: {fileID: 1227154253} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 16.900024, y: -152.4} + m_SizeDelta: {x: 358.76, y: 30.5} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1365179949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1365179947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1161839073} + toggleTransition: 1 + graphic: {fileID: 1269982020} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &1414794722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1414794723} + - component: {fileID: 1414794725} + - component: {fileID: 1414794724} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1414794723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414794722} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1229435886} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 11.315, y: -0.5} + m_SizeDelta: {x: -32.629997, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1414794724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414794722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Download Imagery +--- !u!222 &1414794725 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414794722} + m_CullTransparentMesh: 0 +--- !u!1 &1416858048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1416858049} + - component: {fileID: 1416858051} + - component: {fileID: 1416858050} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1416858049 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416858048} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1227154253} + - {fileID: 1089536130} + m_Father: {fileID: 1343370028} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!114 &1416858050 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416858048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1416858051 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416858048} + m_CullTransparentMesh: 0 +--- !u!1 &1480791277 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1480791278} + m_Layer: 5 + m_Name: TopRightCorner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1480791278 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1480791277} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 75020823} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1543928814 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1543928815} + - component: {fileID: 1543928817} + - component: {fileID: 1543928816} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1543928815 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1543928814} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 327926549} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1543928816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1543928814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Report + +' +--- !u!222 &1543928817 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1543928814} + m_CullTransparentMesh: 0 +--- !u!1 &1547991401 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1547991402} + - component: {fileID: 1547991404} + - component: {fileID: 1547991403} + m_Layer: 5 + m_Name: MaxZoomLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1547991402 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1547991401} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2110420537} + m_Father: {fileID: 1227154253} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 86.92, y: -125.2} + m_SizeDelta: {x: 140.04, y: 19.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1547991403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1547991401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Minimum LatLng +--- !u!222 &1547991404 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1547991401} + m_CullTransparentMesh: 0 +--- !u!1 &1551586477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1551586478} + - component: {fileID: 1551586480} + - component: {fileID: 1551586479} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1551586478 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1551586477} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 327926549} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1551586479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1551586477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1551586480 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1551586477} + m_CullTransparentMesh: 0 +--- !u!1 &1686983908 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1686983909} + - component: {fileID: 1686983911} + - component: {fileID: 1686983910} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1686983909 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1686983908} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1089536130} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -4.3, y: -15} + m_SizeDelta: {x: -42.9, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1686983910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1686983908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 25 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Offline Maps +--- !u!222 &1686983911 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1686983908} + m_CullTransparentMesh: 0 +--- !u!1 &1698156338 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1698156339} + - component: {fileID: 1698156341} + - component: {fileID: 1698156340} + m_Layer: 5 + m_Name: MinZoomLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1698156339 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698156338} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1355918473} + m_Father: {fileID: 1227154253} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 86.92, y: -97.54996} + m_SizeDelta: {x: 140.04, y: 19.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1698156340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698156338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Minimum LatLng +--- !u!222 &1698156341 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698156338} + m_CullTransparentMesh: 0 +--- !u!1 &1785722562 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1785722563} + - component: {fileID: 1785722564} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1785722563 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1785722562} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 899659187} + - {fileID: 1003178114} + - {fileID: 470630863} + m_Father: {fileID: 471752046} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 499.61, y: 40.7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1785722564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1785722562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 111371667} + m_FillRect: {fileID: 1177518469} + m_HandleRect: {fileID: 111371666} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1787361570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1787361575} + - component: {fileID: 1787361574} + - component: {fileID: 1787361572} + - component: {fileID: 1787361571} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1787361571 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1787361570} + m_Enabled: 1 +--- !u!124 &1787361572 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1787361570} + m_Enabled: 1 +--- !u!20 &1787361574 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1787361570} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.13235295, g: 0.13235295, b: 0.13235295, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 256 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1787361575 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1787361570} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 200, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &1855580290 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1855580291} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1855580291 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1855580290} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 336238749} + m_Father: {fileID: 1355918473} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1864103088 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1864103089} + m_Layer: 5 + m_Name: BottomLeftCorner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1864103089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1864103088} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 75020823} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1905453348 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1905453349} + - component: {fileID: 1905453351} + - component: {fileID: 1905453350} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1905453349 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1905453348} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2110420537} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1905453350 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1905453348} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1905453351 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1905453348} + m_CullTransparentMesh: 0 +--- !u!1 &2066619735 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2066619736} + - component: {fileID: 2066619738} + - component: {fileID: 2066619737} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2066619736 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066619735} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1278722489} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2066619737 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066619735} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2066619738 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066619735} + m_CullTransparentMesh: 0 +--- !u!1 &2110420536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2110420537} + - component: {fileID: 2110420538} + m_Layer: 5 + m_Name: Slider (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2110420537 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110420536} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1905453349} + - {fileID: 2145212998} + - {fileID: 1212134311} + m_Father: {fileID: 1547991402} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 76.91997, y: 0.25} + m_SizeDelta: {x: 212.1, y: 20} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &2110420538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110420536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 608539061} + m_FillRect: {fileID: 71039466} + m_HandleRect: {fileID: 608539060} + m_Direction: 0 + m_MinValue: 1 + m_MaxValue: 16 + m_WholeNumbers: 1 + m_Value: 10 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2145212997 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2145212998} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2145212998 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2145212997} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 71039466} + m_Father: {fileID: 2110420537} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/OfflineMap.unity.meta b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/OfflineMap.unity.meta new file mode 100644 index 000000000..07a8af6ca --- /dev/null +++ b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/OfflineMap.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 36dca775a39eae7468cc6d22fcf183a2 +timeCreated: 1508277307 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Prefabs/OfflineMapListItem.prefab b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Prefabs/OfflineMapListItem.prefab new file mode 100644 index 000000000..c4c54739d --- /dev/null +++ b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Prefabs/OfflineMapListItem.prefab @@ -0,0 +1,349 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3412926180062485390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2609591246119082264} + - component: {fileID: 5173783291763119649} + - component: {fileID: 8053875865869968596} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2609591246119082264 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3412926180062485390} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8468642611497537590} + - {fileID: 2819123281856246963} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 333.72, y: 52.26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5173783291763119649 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3412926180062485390} + m_CullTransparentMesh: 0 +--- !u!114 &8053875865869968596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3412926180062485390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3602757577527251468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2819123281856246963} + - component: {fileID: 911623253570081966} + - component: {fileID: 4399616439315635817} + - component: {fileID: 6673011785032880452} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2819123281856246963 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3602757577527251468} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3076515846035928511} + m_Father: {fileID: 2609591246119082264} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 127.33, y: 0} + m_SizeDelta: {x: 65.345, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &911623253570081966 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3602757577527251468} + m_CullTransparentMesh: 0 +--- !u!114 &4399616439315635817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3602757577527251468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6673011785032880452 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3602757577527251468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4399616439315635817} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5600483579865511468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3076515846035928511} + - component: {fileID: 3330344628061076215} + - component: {fileID: 8248217199006578475} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3076515846035928511 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5600483579865511468} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2819123281856246963} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3330344628061076215 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5600483579865511468} + m_CullTransparentMesh: 0 +--- !u!114 &8248217199006578475 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5600483579865511468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: DELETE +--- !u!1 &7127619250007565523 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8468642611497537590} + - component: {fileID: 3298901767500905915} + - component: {fileID: 2361700593748630435} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8468642611497537590 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7127619250007565523} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2609591246119082264} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -32.25, y: 0} + m_SizeDelta: {x: 242.3, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3298901767500905915 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7127619250007565523} + m_CullTransparentMesh: 0 +--- !u!114 &2361700593748630435 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7127619250007565523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: New Text diff --git a/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Prefabs/OfflineMapListItem.prefab.meta b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Prefabs/OfflineMapListItem.prefab.meta new file mode 100644 index 000000000..2354a642a --- /dev/null +++ b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Prefabs/OfflineMapListItem.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a8215d1a2d0370d4ba1340b7c01e7e8f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots.meta b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots.meta new file mode 100644 index 000000000..052fa4ce6 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7e7e49e0789dec747a7688f99fc3363a +folderAsset: yes +timeCreated: 1512562508 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots/OfflineMap.png b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots/OfflineMap.png new file mode 100644 index 000000000..2c7283298 Binary files /dev/null and b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots/OfflineMap.png differ diff --git a/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots/OfflineMap.png.meta b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots/OfflineMap.png.meta new file mode 100644 index 000000000..33e251f38 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Screenshots/OfflineMap.png.meta @@ -0,0 +1,139 @@ +fileFormatVersion: 2 +guid: 26cfb396b786f2d45b81be1caa21496c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: -1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Scripts.meta b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Scripts.meta new file mode 100644 index 000000000..50b481ec7 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 00f75931268d20040aa7eb2e5a95421b +folderAsset: yes +timeCreated: 1512232891 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Scripts/OfflineMapDemoController.cs b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Scripts/OfflineMapDemoController.cs new file mode 100644 index 000000000..9b1e2babf --- /dev/null +++ b/sdkproject/Assets/Mapbox/Examples/9_OfflineMap/Scripts/OfflineMapDemoController.cs @@ -0,0 +1,189 @@ +using System.Collections; +using System.Collections.Generic; +using System.Security.Cryptography; +using Mapbox.Unity; +using Mapbox.Unity.Map; +using Mapbox.Utils; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.UI; +using Environment = System.Environment; + +public class OfflineMapDemoController : MonoBehaviour +{ + public AbstractMap Map; + + public GameObject MinLatLngGo; + public GameObject MaxLatLngGo; + + public Transform OfflineMapListContainer; + public GameObject OfflineMapListPrefab; + + public Text MinLatLngText; + public Text MaxLatLngText; + public Text TileCountText; + public InputField ReportField; + + public InputField MapName; + + public Slider MinZoomSlider; + public Slider MaxZoomSlider; + + public Toggle ElevationToggle; + public Toggle ImageryToggle; + public Toggle VectorToggle; + + public Button DownloadButton; + public Button CancelButton; + + public GameObject ProgressPanel; + public Slider ProgressBar; + + private bool _isDownloading = false; + private Camera _camera; + private Plane _plane; + private Vector2d _minLatLng; + private Vector2d _maxLatLng; + private int _minZoom; + private int _maxZoom; + + void Start() + { + _camera = Camera.main; + _plane = new Plane(Vector3.up, Vector3.zero); + + DownloadButton.onClick.AddListener(DownloadMap); + CancelButton.onClick.AddListener(CancelDownload); + MapboxAccess.Instance.OfflineManager.ProgressUpdated += DownloadProgressChanged; + MapboxAccess.Instance.OfflineManager.DownloadFinished += DownloadFinished; + + UpdateMapList(); + } + + void Update() + { + if (Map != null) + { + Ray ray = _camera.ScreenPointToRay(MinLatLngGo.transform.position); + var distance = 0f; + if (_plane.Raycast(ray, out distance)) + { + _minLatLng = Map.WorldToGeoPosition(ray.GetPoint(distance)); + MinLatLngText.text = _minLatLng.ToString(); + } + + ray = _camera.ScreenPointToRay(MaxLatLngGo.transform.position); + if (_plane.Raycast(ray, out distance)) + { + _maxLatLng = Map.WorldToGeoPosition(ray.GetPoint(distance)); + MaxLatLngText.text = _maxLatLng.ToString(); + } + } + + _minZoom = (int) MinZoomSlider.value; + _maxZoom = Mathf.Max(_minZoom, (int) MaxZoomSlider.value); + _minZoom = Mathf.Min(_minZoom, _maxZoom); + MinZoomSlider.value = _minZoom; + MaxZoomSlider.value = _maxZoom; + + var tileCountInRegion = MapboxAccess.Instance.OfflineManager.EstimatedTileCount(_minLatLng, _maxLatLng, (int) MinZoomSlider.value, (int) MaxZoomSlider.value); + + var tilesetCount = 0; + if (ElevationToggle.isOn) tilesetCount++; + if (ImageryToggle.isOn) tilesetCount++; + if (VectorToggle.isOn) tilesetCount++; + + TileCountText.text = string.Format("Total of {0} tiles", tileCountInRegion * tilesetCount); + + ProgressPanel.SetActive(_isDownloading); + DownloadButton.interactable = !_isDownloading; + } + + private void UpdateMapList() + { + foreach (Transform button in OfflineMapListContainer.transform) + { + Destroy(button.gameObject); + } + + var maps = MapboxAccess.Instance.OfflineManager.GetOfflineMapList(); + foreach (var map in maps) + { + var go = Instantiate(OfflineMapListPrefab, OfflineMapListContainer); + go.GetComponentInChildren().text = string.Format("{0} ({1} tiles)", map.Key, map.Value); + go.GetComponentInChildren public class MapboxAccess : IFileSource { + public OfflineManager OfflineManager; ITelemetryLibrary _telemetryLibrary; CachingWebFileSource _fileSource; @@ -167,10 +168,14 @@ private void LoadAccessToken() void ConfigureFileSource() { + var sqliteCache = new SQLiteCache(_configuration.FileCacheSize); + OfflineManager = new OfflineManager(_configuration.AccessToken, _configuration.GetMapsSkuToken); + OfflineManager.SetOfflineCache(sqliteCache); + _fileSource = new CachingWebFileSource(_configuration.AccessToken, _configuration.GetMapsSkuToken, _configuration.AutoRefreshCache) .AddCache(new MemoryCache(_configuration.MemoryCacheSize)) #if !UNITY_WEBGL - .AddCache(new SQLiteCache(_configuration.FileCacheSize)) + .AddCache(sqliteCache) #endif ; } @@ -234,7 +239,6 @@ string url return _fileSource.Request(url, callback, _configuration.DefaultTimeout, tileId, tilesetId); } - Geocoder _geocoder; /// /// Lazy geocoder. diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineManager.cs b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineManager.cs new file mode 100644 index 000000000..4f49d3542 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineManager.cs @@ -0,0 +1,384 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics.Contracts; +using System.Linq; +using Mapbox.Map; +using Mapbox.Platform; +using Mapbox.Platform.Cache; +using Mapbox.Unity; +using Mapbox.Unity.Utilities; +using Mapbox.Utils; +using UnityEngine; +using Constants = Mapbox.Utils.Constants; + +public class OfflineManager +{ + private string _accessToken; + private Func _getMapsSkuToken; + private SQLiteCache _offlineCache; + + public Action ProgressUpdated = (progress) => { }; + public Action DownloadFinished = (tileCount) => { }; + public float Progress = 0; + public OfflineMapDownloadInfo CurrentMapDownloadInfo; + + private int _currentCoroutine; + + //public List EstimatedTileList = new List(); + private int _currentlyDownloadedFileCount; + private int _currentlyRequestedFileCount; + private int _totalTileCount; + private bool _isDownloading; + private readonly int OfflineTileLimit = 6000; + + //INITIALIZE + public OfflineManager(string configurationAccessToken, Func getMapsSkuToken) + { + _accessToken = configurationAccessToken; + _getMapsSkuToken = getMapsSkuToken; + } + + public void SetOfflineCache(SQLiteCache sqliteCache) + { + _offlineCache = sqliteCache; + } + + //QUERY + public int GetAmbientTileCount() + { + return _offlineCache.GetAmbientTileCount(); + } + + public int GetOfflineTileCount() + { + return _offlineCache.GetOfflineTileCount(); + } + + public int GetOfflineTileCount(string offlineMapName) + { + return _offlineCache.GetOfflineTileCount(offlineMapName); + } + + public int GetOfflineDataSize(string mapName) + { + return _offlineCache.GetOfflineDataSize(mapName); + } + + public Dictionary GetOfflineMapList() + { + return _offlineCache.GetOfflineMapList(); + } + + //Information of TMS tiles in given region and zoom range + //This Info includes tile coordinates and tilesetid + public List EstimatedTileList(OfflineRegion region) + { + var estimatedTileList = new List(); + try + { + estimatedTileList.Clear(); + for (int currentZoom = region.MinZoom; currentZoom <= region.MaxZoom; currentZoom++) + { + foreach (var tileId in GetWithWebMerc(region.MinLatLng, region.MaxLatLng, currentZoom)) + { + if (!string.IsNullOrWhiteSpace(region.ElevationTilesetId)) + { + estimatedTileList.Add(new OfflineTileInfo(tileId, OfflineTileType.Elevation, region.ElevationTilesetId)); + } + + if (!string.IsNullOrWhiteSpace(region.ImageTilesetId)) + { + estimatedTileList.Add(new OfflineTileInfo(tileId, OfflineTileType.Imagery, region.ImageTilesetId)); + } + + if (!string.IsNullOrWhiteSpace(region.VectorTilesetId)) + { + estimatedTileList.Add(new OfflineTileInfo(tileId, OfflineTileType.Vector, region.VectorTilesetId)); + } + } + } + + return estimatedTileList; + } + catch (Exception e) + { + // ignored + return null; + } + } + + //Number of TMS tiles in given region and zoom range + public int EstimatedTileCount(OfflineRegion region) + { + return EstimatedTileCount(region.MinLatLng, region.MaxLatLng, region.MinZoom, region.MaxZoom); + } + + //Number of TMS tiles in given region and zoom range + public int EstimatedTileCount(string minLatlng, string maxLatlng, int minZoom, int maxZoom) + { + if (string.IsNullOrEmpty(minLatlng) || string.IsNullOrEmpty(maxLatlng)) + return 0; + + return EstimatedTileCount(Conversions.StringToLatLon(minLatlng), Conversions.StringToLatLon(maxLatlng), minZoom, maxZoom); + } + + //Number of TMS tiles in given region and zoom range + public int EstimatedTileCount(Vector2d minLatlng, Vector2d maxLatlng, int minZoom, int maxZoom) + { + var tileCount = 0; + try + { + for (int currentZoom = minZoom; currentZoom <= maxZoom; currentZoom++) + { + tileCount += GetWithWebMerc(minLatlng, maxLatlng, currentZoom).Count(); + } + } + catch (Exception e) + { + // ignored + return 0; + } + + return tileCount; + } + + //OPERATIONS + //This is the main method for creating offline maps. + //It takes a region and zoom level range, then marks all tiles in there using the name you passed. + //Tiles are stored in Sqlite tiles table as regular ambient cache tiles + //Offline map name is stored in another table and this entry linked to tiles in a third connection table + //So offline tiles are just regular tiles marked/flagged as offline by given name + public OfflineMapResponse CreateOfflineMap(string cacheName, OfflineRegion region) + { + var tiles = EstimatedTileList(region); + if (tiles.Count <= 0) + { + return new OfflineMapResponse() + { + HasErrors = true, + ErrorMessage = "Region doesn't contain any tiles." + }; + } + else if (tiles.Count > OfflineTileLimit) //offline maps supports up to OfflineTileLimit-6000 tiles + { + return new OfflineMapResponse() + { + HasErrors = true, + ErrorMessage = "You cannot store more than 6000 offline tiles." + }; + } + + var currentOfflineTileCount = _offlineCache.GetOfflineTileCount(); + var capacityLeft = OfflineTileLimit - currentOfflineTileCount; + if (capacityLeft <= 0) + { + return new OfflineMapResponse() + { + HasErrors = true, + ErrorMessage = "Offline cache capacity is full." + }; + } + + if (capacityLeft < tiles.Count) + { + //if requested region doesn't fit the capacity left, we do not download anything at all + return new OfflineMapResponse() + { + HasErrors = true, + ErrorMessage = string.Format("Not enough capacity to download whole region. Capacity left: {0} tiles )", capacityLeft) + }; + } + else + { + CurrentMapDownloadInfo = new OfflineMapDownloadInfo(cacheName, tiles.Count); + _currentCoroutine = Runnable.Run(DownloadTileListCoroutine(cacheName, tiles)); + return new OfflineMapResponse() + { + HasErrors = false, + ErrorMessage = "Downloading " + tiles.Count + " tiles." + }; + } + } + + //Clears all data marked by given name in the sqlite database. + //It's not possible to delete elevation, imagery, vector separately at the moment. + public void DeleteOfflineMap(string offlineMapName) + { + _offlineCache.DeleteOfflineMap(offlineMapName); + } + + //Stops running download process and clears downloaded data afterwards. + public void Stop() + { + Runnable.Stop(_currentCoroutine); + if (CurrentMapDownloadInfo != null) + { + var cancelledName = CurrentMapDownloadInfo.MapName; + DeleteOfflineMap(cancelledName); + } + } + + //PRIVATE + private void RequestTile(OfflineTileType type, CanonicalTileId tileId, string tilesetId, int offlineMapId, Action callback) + { + var requestUrl = CreateTileRequestUrl(type, tileId, tilesetId); + + IAsyncRequestFactory.CreateRequest( + requestUrl, + (Response r) => + { + // if the request was successful add tile to all caches + if (!r.HasError && null != r.Data) + { + string eTag = r.GetETag(); + DateTime expirationDate = r.GetExpirationDate(); + + CurrentMapDownloadInfo.SuccesfulTileDownloads++; + _offlineCache.Add( + tilesetId + , tileId + , new CacheItem() + { + Data = r.Data, + ETag = eTag, + ExpirationDate =expirationDate + } + , true + ); + _offlineCache.MarkOffline(offlineMapId, tilesetId, tileId); + } + else + { + CurrentMapDownloadInfo.FailedTileDownloads++; + CurrentMapDownloadInfo.FailedDownloadLogs.Add(string.Format("Download Failed. TileId: {0}, Tileset:{1}, Error:{2}", + tileId, + tilesetId, + r.ExceptionsAsString)); + } + + if (null != callback) + { + r.IsUpdate = true; + callback(r); + } + }, 10); + } + + private IEnumerator DownloadTileListCoroutine(string cacheName, List tiles) + { + _currentlyDownloadedFileCount = 0; + _currentlyRequestedFileCount = 0; + _totalTileCount = tiles.Count; + + _isDownloading = true; + + var batchSize = 5; + var currentBatchSize = 0; + + var offlineMapId = _offlineCache.GetOrAddOfflineMapId(cacheName); + + while (_currentlyRequestedFileCount < _totalTileCount) + { + foreach (var tile in tiles) + { + if (!_offlineCache.TileExists(tile.TilesetId, tile.CanonicalTileId)) + { + RequestTile(tile.Type, tile.CanonicalTileId, tile.TilesetId, offlineMapId, HandleOfflineRequestResponse); + } + else + { + _offlineCache.MarkOffline(offlineMapId, tile.TilesetId, tile.CanonicalTileId); + } + + _currentlyRequestedFileCount++; + currentBatchSize++; + + if (currentBatchSize > batchSize) + { + currentBatchSize = 0; + yield return new WaitForSeconds(1f); + } + } + } + } + + private string CreateTileRequestUrl(OfflineTileType type, CanonicalTileId tileId, string tilesetId) + { + var uri = GetUriForDataType(type, tileId, tilesetId); + if (string.IsNullOrEmpty(tilesetId)) + { + throw new Exception("Cannot cache without a tileset id"); + } + + var uriBuilder = new UriBuilder(uri); + if (!string.IsNullOrEmpty(_accessToken)) + { + string accessTokenQuery = "access_token=" + _accessToken; + string mapsSkuToken = "sku=" + _getMapsSkuToken(); + string offlineRequest = "events=true"; + if (uriBuilder.Query.Length > 1) + { + uriBuilder.Query = uriBuilder.Query.Substring(1) + "&" + accessTokenQuery + "&" + mapsSkuToken + "&" + offlineRequest; + } + else + { + uriBuilder.Query = accessTokenQuery + "&" + mapsSkuToken + "&" + offlineRequest; + } + } + + string url = uriBuilder.ToString(); + return url; + } + + private string GetUriForDataType(OfflineTileType type, CanonicalTileId tileId, string tilesetId) + { + switch (type) + { + case OfflineTileType.Imagery when tilesetId.StartsWith("mapbox://", StringComparison.Ordinal): + return string.Format("{0}/{1}", MapUtils.NormalizeStaticStyleURL(tilesetId), tileId); + case OfflineTileType.Imagery: + return string.Format("{0}/{1}.png", MapUtils.TilesetIdToUrl(tilesetId), tileId); + case OfflineTileType.RetinaImagery when tilesetId.StartsWith("mapbox://", StringComparison.Ordinal): + return string.Format("{0}/{1}@2x", MapUtils.NormalizeStaticStyleURL(tilesetId), tileId); + case OfflineTileType.RetinaImagery: + return string.Format("{0}/{1}@2x.png", MapUtils.TilesetIdToUrl(tilesetId), tileId); + case OfflineTileType.Elevation: + return string.Format("{0}/{1}.pngraw", MapUtils.TilesetIdToUrl(tilesetId), tileId); + case OfflineTileType.Vector: + return string.Format("{0}/{1}.vector.pbf", MapUtils.TilesetIdToUrl(tilesetId), tileId); + default: + return ""; + } + } + + private void HandleOfflineRequestResponse(Response obj) + { + _currentlyDownloadedFileCount++; + Progress = (float) _currentlyDownloadedFileCount / _totalTileCount; + ProgressUpdated(Progress); + + if (_currentlyDownloadedFileCount >= _totalTileCount) + { + _isDownloading = false; + DownloadFinished(CurrentMapDownloadInfo); + } + } + + private IEnumerable GetWithWebMerc(Vector2d min, Vector2d max, int zoom) + { + var swWebMerc = new Vector2d(Math.Max(min.x, -Constants.WebMercMax), Math.Max(min.y, -Constants.WebMercMax)); + var neWebMerc = new Vector2d(Math.Min(max.x, Constants.WebMercMax), Math.Min(max.y, Constants.WebMercMax)); + + var swTile = Conversions.LatitudeLongitudeToTileId(swWebMerc.x, swWebMerc.y, zoom); + var neTile = Conversions.LatitudeLongitudeToTileId(neWebMerc.x, neWebMerc.y, zoom); + + for (int x = swTile.X; x <= neTile.X; x++) + { + for (int y = neTile.Y; y <= swTile.Y; y++) + { + yield return new UnwrappedTileId(zoom, x, y); + } + } + } +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapDownloadInfo.cs b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapDownloadInfo.cs new file mode 100644 index 000000000..15bb9d756 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapDownloadInfo.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +public class OfflineMapDownloadInfo +{ + public string MapName; + public int InitializedTileCount; + public int SuccesfulTileDownloads = 0; + public int FailedTileDownloads = 0; + public List FailedDownloadLogs; + + public OfflineMapDownloadInfo(string name, int tilesCount) + { + MapName = name; + InitializedTileCount = tilesCount; + FailedDownloadLogs = new List(); + } +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapDownloadInfo.cs.meta b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapDownloadInfo.cs.meta new file mode 100644 index 000000000..161a8b931 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapDownloadInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0bb8125643724776b46b30e69382311a +timeCreated: 1598018537 \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapResponse.cs b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapResponse.cs new file mode 100644 index 000000000..ffe5a70da --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapResponse.cs @@ -0,0 +1,5 @@ +public class OfflineMapResponse +{ + public bool HasErrors = false; + public string ErrorMessage; +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapResponse.cs.meta b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapResponse.cs.meta new file mode 100644 index 000000000..7f073e33e --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineMapResponse.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d475c0b584ee46a8a6f1891c68c4f6d5 +timeCreated: 1598018519 \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineRegion.cs b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineRegion.cs new file mode 100644 index 000000000..37cd365ce --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineRegion.cs @@ -0,0 +1,37 @@ +using System; +using Mapbox.Utils; +using UnityEngine; + +[Serializable] +public class OfflineRegion +{ + public string Name; + + public Vector2d MinLatLng; + public Vector2d MaxLatLng; + + [Range(0, 16)] public int MinZoom; + [Range(0, 16)] public int MaxZoom; + + public string ElevationTilesetId; + public string ImageTilesetId; + public string VectorTilesetId; + + public OfflineRegion() + { + + } + + public OfflineRegion(string mapName, Vector2d minLatLng, Vector2d maxLatLng, int minZoom, int maxZoom, string elevationTileset = "", string imageryTileset = "", string vectorTileset = "") + { + MinLatLng = minLatLng; + MaxLatLng = maxLatLng; + MinZoom = minZoom; + MaxZoom = maxZoom; + ElevationTilesetId = elevationTileset; + ImageTilesetId = imageryTileset; + VectorTilesetId = vectorTileset; + Name = mapName; + } + +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineRegion.cs.meta b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineRegion.cs.meta new file mode 100644 index 000000000..69bd27c46 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineRegion.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0eda4d665eba4e7682d21a2709b3c8a2 +timeCreated: 1598018893 \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileInfo.cs b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileInfo.cs new file mode 100644 index 000000000..684a7685a --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileInfo.cs @@ -0,0 +1,15 @@ +using Mapbox.Map; + +public class OfflineTileInfo +{ + public CanonicalTileId CanonicalTileId; + public OfflineTileType Type; + public string TilesetId; + + public OfflineTileInfo(UnwrappedTileId tileId, OfflineTileType type, string tilesetId) + { + CanonicalTileId = tileId.Canonical; + Type = type; + TilesetId = tilesetId; + } +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileInfo.cs.meta b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileInfo.cs.meta new file mode 100644 index 000000000..dfb03e48b --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9dd65fcd8f4c483399c93688245d2a63 +timeCreated: 1598018526 \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileType.cs b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileType.cs new file mode 100644 index 000000000..9d3e7f067 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileType.cs @@ -0,0 +1,7 @@ +public enum OfflineTileType +{ + Elevation, + Imagery, + RetinaImagery, + Vector +} \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileType.cs.meta b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileType.cs.meta new file mode 100644 index 000000000..e58b8a277 --- /dev/null +++ b/sdkproject/Assets/Mapbox/Unity/OfflineMaps/OfflineTileType.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 462eaea513da488ea9f63ddd5855d31b +timeCreated: 1598018510 \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Unity/Utilities/HTTPRequest.cs b/sdkproject/Assets/Mapbox/Unity/Utilities/HTTPRequest.cs index 12ad5936c..26282fd82 100644 --- a/sdkproject/Assets/Mapbox/Unity/Utilities/HTTPRequest.cs +++ b/sdkproject/Assets/Mapbox/Unity/Utilities/HTTPRequest.cs @@ -59,6 +59,25 @@ public HTTPRequest(string url, Action callback, int timeout, HttpReque _request.timeout = timeout; _callback = callback; +#if UNITY_EDITOR + if (!EditorApplication.isPlaying) + { + Runnable.EnableRunnableInEditor(); + } +#endif + Runnable.Run(DoRequest()); + } + + public HTTPRequest(string url, Action callback, int timeout, string headerName, string headerValue) + { + IsCompleted = false; + _requestType = HttpRequestType.Get; + _request = UnityWebRequest.Get(url); + _request.SetRequestHeader(headerName, headerValue); + + _request.timeout = timeout; + _callback = callback; + #if UNITY_EDITOR if (!EditorApplication.isPlaying) {