diff --git a/dependencies/mapbox-sdk-cs b/dependencies/mapbox-sdk-cs
index d4850704d..4824dab71 160000
--- a/dependencies/mapbox-sdk-cs
+++ b/dependencies/mapbox-sdk-cs
@@ -1 +1 @@
-Subproject commit d4850704db12269df261ff61aea999fef542e3f6
+Subproject commit 4824dab71812725cf34859f77757f5786cb3b6b4
diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs
index 4f6ad271c..7a8b64bc7 100644
--- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs
+++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs
@@ -72,7 +72,7 @@ private void Run(UnityTile tile)
var rasterTile = parameters.MapId.StartsWith("mapbox://") ? new RasterTile() : new ClassicRasterTile();
rasterTile.Initialize(parameters, (Action)(() =>
{
- if (rasterTile.Error != null)
+ if (rasterTile.HasError)
{
tile.ImageDataState = TilePropertyState.Error;
return;
diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MeshFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MeshFactory.cs
index 31704b475..fae3d643e 100644
--- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MeshFactory.cs
+++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MeshFactory.cs
@@ -1,17 +1,18 @@
namespace Mapbox.Unity.MeshGeneration.Factories
{
- using System.Collections.Generic;
- using UnityEngine;
- using Mapbox.Unity.MeshGeneration.Enums;
- using Mapbox.Unity.MeshGeneration.Data;
- using Mapbox.Unity.MeshGeneration.Interfaces;
- using Mapbox.Platform;
+ using System.Collections.Generic;
+ using UnityEngine;
+ using Mapbox.Unity.MeshGeneration.Enums;
+ using Mapbox.Unity.MeshGeneration.Data;
+ using Mapbox.Unity.MeshGeneration.Interfaces;
+ using Mapbox.Platform;
+ using System.Linq;
- ///
- /// Uses vector tile api to visualize vector data.
- /// Fetches the vector data for given tile and passes layer data to layer visualizers.
- ///
- [CreateAssetMenu(menuName = "Mapbox/Factories/Mesh Factory")]
+ ///
+ /// Uses vector tile api to visualize vector data.
+ /// Fetches the vector data for given tile and passes layer data to layer visualizers.
+ ///
+ [CreateAssetMenu(menuName = "Mapbox/Factories/Mesh Factory")]
public class MeshFactory : Factory
{
[SerializeField]
@@ -107,9 +108,9 @@ private void CreateMeshes(UnityTile tile, object e)
var vectorTile = new Mapbox.Map.VectorTile();
vectorTile.Initialize(parameters, () =>
{
- if (vectorTile.Error != null)
+ if (vectorTile.HasError)
{
- Debug.Log(vectorTile.Error);
+ Debug.Log(string.Join(System.Environment.NewLine, vectorTile.Exceptions.Select(ex=>ex.Message).ToArray()));
return;
}
diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs
index a6dae00f0..6a4cd6e6c 100644
--- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs
+++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs
@@ -112,7 +112,7 @@ private void CreateTerrainHeight(UnityTile tile, float heightMultiplier = 1)
var pngRasterTile = new RawPngRasterTile();
pngRasterTile.Initialize(parameters, () =>
{
- if (pngRasterTile.Error != null)
+ if (pngRasterTile.HasError)
{
tile.HeightDataState = TilePropertyState.Error;
return;
diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Utilities/DispatcherEditor.cs b/sdkproject/Assets/Mapbox/Core/Unity/Utilities/DispatcherEditor.cs
new file mode 100644
index 000000000..55f57bc3e
--- /dev/null
+++ b/sdkproject/Assets/Mapbox/Core/Unity/Utilities/DispatcherEditor.cs
@@ -0,0 +1,51 @@
+namespace Mapbox.Unity {
+
+
+ using System;
+ using System.Collections.Generic;
+ using System.Threading;
+ using UnityEditor;
+
+
+ [InitializeOnLoad]
+ public static class DispatcherEditor {
+
+
+ static DispatcherEditor() {
+ _mainThread = Thread.CurrentThread;
+ EditorApplication.update += Update;
+ }
+
+
+ private static object _lock = new object();
+ private static readonly Queue _actions = new Queue();
+ private static Thread _mainThread;
+
+
+ private static bool isMainThread {
+ get { return Thread.CurrentThread == _mainThread; }
+ }
+
+
+ public static void Update() {
+ lock (_lock) {
+ while (_actions.Count > 0) {
+ _actions.Dequeue()();
+ }
+ }
+ }
+
+
+ public static void InvokeAsync(Action action) {
+ if (isMainThread) {
+ action();
+ }else {
+ lock (_lock) {
+ _actions.Enqueue(action);
+ }
+ }
+ }
+
+
+ }
+}
\ No newline at end of file
diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Utilities/HTTPRequest.cs b/sdkproject/Assets/Mapbox/Core/Unity/Utilities/HTTPRequest.cs
deleted file mode 100644
index 7ceb45546..000000000
--- a/sdkproject/Assets/Mapbox/Core/Unity/Utilities/HTTPRequest.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-//-----------------------------------------------------------------------
-//
-// Copyright (c) 2016 Mapbox. All rights reserved.
-//
-//-----------------------------------------------------------------------
-
-namespace Mapbox.Unity.Utilities
-{
- using System;
- using UnityEngine.Networking;
- using System.Collections;
- using Mapbox.Platform;
-
-#if UNITY_EDITOR
- using UnityEditor;
-#endif
-
- internal sealed class HTTPRequest : IAsyncRequest
- {
- private UnityWebRequest _request;
- private readonly Action _callback;
-
- public HTTPRequest(string url, Action callback)
- {
- _request = UnityWebRequest.Get(url);
- _callback = callback;
-
-#if UNITY_EDITOR
- if (!EditorApplication.isPlaying)
- {
- Runnable.EnableRunnableInEditor();
- }
-#endif
- Runnable.Run(DoRequest());
- }
-
- public void Cancel()
- {
- if (_request != null)
- {
- _request.Abort();
- }
- }
-
- private IEnumerator DoRequest()
- {
- _request.Send();
- while (!_request.isDone)
- {
- yield return 0;
- }
- var response = new Response();
- response.Error = this._request.error;
- response.Data = this._request.downloadHandler.data;
-
- _callback(response);
- _request.Dispose();
- _request = null;
- }
- }
-}
diff --git a/sdkproject/Assets/Mapbox/Examples/Playground/Scripts/RasterTileExample.cs b/sdkproject/Assets/Mapbox/Examples/Playground/Scripts/RasterTileExample.cs
index c08d5aa96..ddd13065d 100644
--- a/sdkproject/Assets/Mapbox/Examples/Playground/Scripts/RasterTileExample.cs
+++ b/sdkproject/Assets/Mapbox/Examples/Playground/Scripts/RasterTileExample.cs
@@ -118,7 +118,7 @@ void ToggleDropdownStyles(int target)
/// Tile.
public void OnNext(RasterTile tile)
{
- if (tile.CurrentState != Tile.State.Loaded || tile.Error != null)
+ if (tile.CurrentState != Tile.State.Loaded || tile.HasError)
{
return;
}
diff --git a/sdkproject/Assets/Mapbox/Examples/Playground/Scripts/VectorTileExample.cs b/sdkproject/Assets/Mapbox/Examples/Playground/Scripts/VectorTileExample.cs
index a69241de7..24da900ed 100644
--- a/sdkproject/Assets/Mapbox/Examples/Playground/Scripts/VectorTileExample.cs
+++ b/sdkproject/Assets/Mapbox/Examples/Playground/Scripts/VectorTileExample.cs
@@ -80,7 +80,7 @@ void Redraw()
/// Tile.
public void OnNext(VectorTile tile)
{
- if (tile.CurrentState != Tile.State.Loaded || tile.Error != null)
+ if (tile.CurrentState != Tile.State.Loaded || tile.HasError)
{
return;
}
diff --git a/sdkproject/Assets/Mapbox/Examples/Voxels/Scripts/VoxelTile.cs b/sdkproject/Assets/Mapbox/Examples/Voxels/Scripts/VoxelTile.cs
index 3ad580043..659c69ee8 100644
--- a/sdkproject/Assets/Mapbox/Examples/Voxels/Scripts/VoxelTile.cs
+++ b/sdkproject/Assets/Mapbox/Examples/Voxels/Scripts/VoxelTile.cs
@@ -116,7 +116,7 @@ void FetchWorldData(Vector2d coordinates)
public void OnNext(RasterTile tile)
{
- if (tile.CurrentState == Tile.State.Loaded && string.IsNullOrEmpty(tile.Error))
+ if (tile.CurrentState == Tile.State.Loaded && !tile.HasError)
{
_rasterTexture = new Texture2D(2, 2);
_rasterTexture.LoadImage(tile.Data);
@@ -131,7 +131,7 @@ public void OnNext(RasterTile tile)
public void OnNext(RawPngRasterTile tile)
{
- if (tile.CurrentState == Tile.State.Loaded && string.IsNullOrEmpty(tile.Error))
+ if (tile.CurrentState == Tile.State.Loaded && !tile.HasError)
{
_elevationTexture = new Texture2D(2, 2);
_elevationTexture.LoadImage(tile.Data);
diff --git a/sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher.meta b/sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher.meta
new file mode 100644
index 000000000..e898ff19b
--- /dev/null
+++ b/sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9b8e3a59ff0dc4000a4fda4d9fa6931d
+folderAsset: yes
+timeCreated: 1493311191
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher/Dispatcher.cs b/sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher/Dispatcher.cs
new file mode 100644
index 000000000..c76ef5f1c
--- /dev/null
+++ b/sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher/Dispatcher.cs
@@ -0,0 +1,114 @@
+using UnityEngine;
+using System;
+using System.Collections.Generic;
+using System.Threading;
+
+namespace UnityToolbag {
+ ///
+ /// A system for dispatching code to execute on the main thread.
+ ///
+ [AddComponentMenu("UnityToolbag/Dispatcher")]
+ public class Dispatcher : MonoBehaviour {
+ private static Dispatcher _instance;
+
+ // We can't use the behaviour reference from other threads, so we use a separate bool
+ // to track the instance so we can use that on the other threads.
+ // edit by BergWerkGIS: make public to see if dispatcher is attached
+ public static bool _instanceExists;
+
+ private static Thread _mainThread;
+ private static object _lockObject = new object();
+ private static readonly Queue _actions = new Queue();
+
+ ///
+ /// Gets a value indicating whether or not the current thread is the game's main thread.
+ ///
+ public static bool isMainThread {
+ get {
+ return Thread.CurrentThread == _mainThread;
+ }
+ }
+
+ ///
+ /// Queues an action to be invoked on the main game thread.
+ ///
+ /// The action to be queued.
+ public static void InvokeAsync(Action action) {
+
+ if (!_instanceExists) {
+ Debug.LogError("No Dispatcher exists in the scene. Actions will not be invoked!");
+ return;
+ }
+
+ if (isMainThread) {
+ // Don't bother queuing work on the main thread; just execute it.
+ action();
+ } else {
+ lock (_lockObject) {
+ _actions.Enqueue(action);
+ }
+ }
+ }
+
+ ///
+ /// Queues an action to be invoked on the main game thread and blocks the
+ /// current thread until the action has been executed.
+ ///
+ /// The action to be queued.
+ public static void Invoke(Action action) {
+
+ if (!_instanceExists) {
+ Debug.LogError("No Dispatcher exists in the scene. Actions will not be invoked!");
+ return;
+ }
+
+
+ bool hasRun = false;
+
+ InvokeAsync(() => {
+ action();
+ hasRun = true;
+ });
+
+ // Lock until the action has run
+ while (!hasRun) {
+#if !NETFX_CORE
+ Thread.Sleep(5);
+#else
+ System.Threading.Tasks.Task.Delay(5).Wait();
+#endif
+ }
+ }
+
+ void Awake() {
+ if (_instance) {
+ DestroyImmediate(this);
+ } else {
+ _instance = this;
+ _instanceExists = true;
+ _mainThread = Thread.CurrentThread;
+ }
+ }
+
+ void OnDestroy() {
+ if (_instance == this) {
+ _instance = null;
+ _instanceExists = false;
+ }
+ }
+
+ //int cnt = 0;
+ void Update() {
+ //cnt++;
+ //if (cnt < 100) { return; }
+ //cnt = 0;
+ ////if (_actions.Count > 0) UnityEngine.Debug.Log("-------------------- update -----------------" + DateTime.Now.Ticks);
+ lock (_lockObject) {
+ while (_actions.Count > 0) {
+ //UnityEngine.Debug.Log("QUEUE: " + _actions.Count + " " + DateTime.Now.Ticks);
+ _actions.Dequeue()();
+ }
+ }
+ }
+ }
+}
diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Utilities/HTTPRequest.cs.meta b/sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher/Dispatcher.cs.meta
similarity index 75%
rename from sdkproject/Assets/Mapbox/Core/Unity/Utilities/HTTPRequest.cs.meta
rename to sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher/Dispatcher.cs.meta
index 6379afd9e..99c6c3dc6 100644
--- a/sdkproject/Assets/Mapbox/Core/Unity/Utilities/HTTPRequest.cs.meta
+++ b/sdkproject/Assets/ThirdPartyAssets/UnityToolbagDispatcher/Dispatcher.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
-guid: 0af41ebc1f8e7485d93cb4b9070e9d1a
-timeCreated: 1482363481
+guid: dd2511162df91294fa0c4ea0b0d740ed
+timeCreated: 1493142390
licenseType: Pro
MonoImporter:
serializedVersion: 2
diff --git a/sdkproject/Assets/ThreadedSlippyTest.unity b/sdkproject/Assets/ThreadedSlippyTest.unity
new file mode 100644
index 000000000..5156731da
--- /dev/null
+++ b/sdkproject/Assets/ThreadedSlippyTest.unity
@@ -0,0 +1,591 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+SceneSettings:
+ m_ObjectHideFlags: 0
+ m_PVSData:
+ m_PVSObjectsArray: []
+ m_PVSPortalsArray: []
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 7
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.58823526, g: 0.58823526, b: 0.58823526, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 3
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 7
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_TemporalCoherenceThreshold: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 1
+ m_LightmapEditorSettings:
+ serializedVersion: 4
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_TextureWidth: 1024
+ m_TextureHeight: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_DirectLightInLightProbes: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_LightingDataAsset: {fileID: 0}
+ m_RuntimeCPUUsage: 25
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ accuratePlacement: 0
+ minRegionArea: 2
+ cellSize: 0.16666667
+ manualCellSize: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &743593631
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 743593633}
+ - 108: {fileID: 743593632}
+ 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 &743593632
+Light:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 743593631}
+ m_Enabled: 1
+ serializedVersion: 7
+ m_Type: 1
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 0.64
+ m_Range: 10
+ m_SpotAngle: 30
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_Lightmapping: 4
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &743593633
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 743593631}
+ 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_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+--- !u!1 &1281281112
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 1281281117}
+ - 20: {fileID: 1281281116}
+ - 92: {fileID: 1281281115}
+ - 124: {fileID: 1281281114}
+ - 81: {fileID: 1281281113}
+ - 114: {fileID: 1281281118}
+ 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 &1281281113
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1281281112}
+ m_Enabled: 1
+--- !u!124 &1281281114
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1281281112}
+ m_Enabled: 1
+--- !u!92 &1281281115
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1281281112}
+ m_Enabled: 1
+--- !u!20 &1281281116
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1281281112}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 5000
+ field of view: 33
+ orthographic: 0
+ orthographic size: 5
+ 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: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+ m_StereoMirrorMode: 0
+--- !u!4 &1281281117
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1281281112}
+ m_LocalRotation: {x: 0.53729963, y: 0, z: 0, w: 0.8433915}
+ m_LocalPosition: {x: 0, y: 2490, z: -1075}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 65, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+--- !u!114 &1281281118
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1281281112}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9527fd56bc6a0c549a1e550219f9b16e, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ Speed: 100
+--- !u!1 &1378964790
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 224: {fileID: 1378964791}
+ - 222: {fileID: 1378964793}
+ - 114: {fileID: 1378964792}
+ m_Layer: 5
+ m_Name: KeyboardControls
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1378964791
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1378964790}
+ 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 1380781977}
+ m_RootOrder: 1
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 300}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!114 &1378964792
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1378964790}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 69
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 119
+ m_Alignment: 0
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'Use W, A, S, D to pan the map.
+
+ New tiles will load in as needed.'
+--- !u!222 &1378964793
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1378964790}
+--- !u!1 &1380781973
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 224: {fileID: 1380781977}
+ - 223: {fileID: 1380781976}
+ - 114: {fileID: 1380781975}
+ - 114: {fileID: 1380781974}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1380781974
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380781973}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1380781975
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380781973}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 1
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 1920, y: 1080}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!223 &1380781976
+Canvas:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380781973}
+ m_Enabled: 1
+ serializedVersion: 2
+ 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_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1380781977
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1380781973}
+ 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children:
+ - {fileID: 1515605196}
+ - {fileID: 1378964791}
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ 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 &1461465686
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 1461465688}
+ - 114: {fileID: 1461465687}
+ - 114: {fileID: 1461465689}
+ - 114: {fileID: 1461465690}
+ m_Layer: 0
+ m_Name: MapController
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1461465687
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1461465686}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c57173fef834bb94098b65581fb4f0e4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ MapVisualization: {fileID: 11400000, guid: 7f949b7bf234f3049adb4259192eda3d, type: 2}
+ TileSize: 100
+ _snapYToZero: 1
+ LatLng: 69.5419324, 20.5512521
+ Zoom: 12
+ Range: {x: 10, y: 10, z: 10, w: 10}
+--- !u!4 &1461465688
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1461465686}
+ 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+--- !u!114 &1461465689
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1461465686}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dd2511162df91294fa0c4ea0b0d740ed, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1461465690
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1461465686}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ab322f3f81267624dbd388daa9e37945, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _range: 2
+--- !u!1 &1515605195
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 224: {fileID: 1515605196}
+ m_Layer: 5
+ m_Name: PoiContainer
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1515605196
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1515605195}
+ 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 1380781977}
+ m_RootOrder: 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 &1677468913
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 1677468916}
+ - 114: {fileID: 1677468915}
+ - 114: {fileID: 1677468914}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1677468914
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1677468913}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1677468915
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1677468913}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 5
+--- !u!4 &1677468916
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1677468913}
+ 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
diff --git a/sdkproject/Assets/ThreadedSlippyTest.unity.meta b/sdkproject/Assets/ThreadedSlippyTest.unity.meta
new file mode 100644
index 000000000..42543f9c7
--- /dev/null
+++ b/sdkproject/Assets/ThreadedSlippyTest.unity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fc656e4496ae0405d9151bf8fe400732
+timeCreated: 1493063572
+licenseType: Pro
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant: