diff --git a/dependencies/Mapbox.Json/Net35/Mapbox.Json.dll.meta b/dependencies/Mapbox.Json/Net35/Mapbox.Json.dll.meta index acdf34b33..80f949772 100644 --- a/dependencies/Mapbox.Json/Net35/Mapbox.Json.dll.meta +++ b/dependencies/Mapbox.Json/Net35/Mapbox.Json.dll.meta @@ -48,10 +48,6 @@ PluginImporter: enabled: 1 settings: CPU: AnyCPU - Android: - enabled: 1 - settings: - CPU: AnyCPU Win64: enabled: 1 settings: diff --git a/dependencies/mapbox-sdk-cs b/dependencies/mapbox-sdk-cs index a41e0a5d1..558cb770a 160000 --- a/dependencies/mapbox-sdk-cs +++ b/dependencies/mapbox-sdk-cs @@ -1 +1 @@ -Subproject commit a41e0a5d16030d022d1d407c535854ac47f84747 +Subproject commit 558cb770ade50ff737bf4d6001b88af6e68578ba diff --git a/sdkproject/Assets/Mapbox/Core/Unity/Location/TransformLocationProvider.cs b/sdkproject/Assets/Mapbox/Core/Unity/Location/TransformLocationProvider.cs index 3a8b6e2d5..58d889f8d 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/Location/TransformLocationProvider.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/Location/TransformLocationProvider.cs @@ -14,6 +14,9 @@ namespace Mapbox.Unity.Location /// public class TransformLocationProvider : MonoBehaviour, ILocationProvider { + [SerializeField] + private MapController _mapController; + /// /// The transform that will be queried for location and heading data. /// @@ -70,11 +73,11 @@ void Update() Vector2d GetLocation() { - if (MapController.ReferenceTileRect == null) + if (_mapController.WorldParameters.ReferenceTileRect == null) { return LocationProviderFactory.Instance.DefaultLocationProvider.Location; } - return _targetTransform.GetGeoPosition(MapController.ReferenceTileRect.Center, MapController.WorldScaleFactor); + return _targetTransform.GetGeoPosition(_mapController.WorldParameters.ReferenceTileRect.Center, _mapController.WorldParameters.WorldScaleFactor); } } } diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/DirectionsFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/DirectionsFactory.cs index cfa365d9f..f99f2fbb5 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/DirectionsFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/DirectionsFactory.cs @@ -18,15 +18,20 @@ public class DirectionsFactory : Factory private Directions _directions; public List MeshModifiers; - public override void Initialize(IFileSource fileSource) + public override void Initialize(IFileSource fileSource, WorldParameters parameters) { - base.Initialize(fileSource); + base.Initialize(fileSource, parameters); _directions = MapboxAccess.Instance.Directions; } - public void Query(List waypoints) + public void Query(List waypoints) { - var _directionResource = new DirectionResource(waypoints.ToArray(), RoutingProfile.Driving); + var wp = new Vector2d[waypoints.Count]; + for (int i = 0; i < waypoints.Count; i++) + { + wp[i] = waypoints[i].GetGeoPosition(Parameters.ReferenceTileRect.Center, Parameters.WorldScaleFactor); + } + var _directionResource = new DirectionResource(wp, RoutingProfile.Driving); _directionResource.Steps = true; _directions.Query(_directionResource, HandleDirectionsResponse); } @@ -39,7 +44,7 @@ void HandleDirectionsResponse(DirectionsResponse response) { foreach (var point in response.Routes[0].Geometry) { - meshData.Vertices.Add(Conversions.GeoToWorldPosition(point.x, point.y, MapController.ReferenceTileRect.Center, MapController.WorldScaleFactor).ToVector3xz()); + meshData.Vertices.Add(Conversions.GeoToWorldPosition(point.x, point.y, Parameters.ReferenceTileRect.Center, Parameters.WorldScaleFactor).ToVector3xz()); } } diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/Factory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/Factory.cs index b473599ab..ee69bb76c 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/Factory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/Factory.cs @@ -9,11 +9,15 @@ namespace Mapbox.Unity.MeshGeneration.Factories /// public class Factory : ScriptableObject { + //private IWorldParameter MapVisualization; protected IFileSource FileSource; + protected WorldParameters Parameters; - public virtual void Initialize(IFileSource fileSource) + public virtual void Initialize(IFileSource fileSource, WorldParameters parameters) { + //MapVisualization = vis; FileSource = fileSource; + Parameters = parameters; } public virtual void Register(UnityTile tile) diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs index accabd0f3..821077a20 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MapImageFactory.cs @@ -41,9 +41,9 @@ public class MapImageFactory : Factory private Dictionary _tiles; - public override void Initialize(IFileSource fs) + public override void Initialize(IFileSource fs, WorldParameters parameters) { - base.Initialize(fs); + base.Initialize(fs, parameters); _tiles = new Dictionary(); } diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MeshFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MeshFactory.cs index 9665bb367..cd7611a38 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MeshFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/MeshFactory.cs @@ -1,108 +1,130 @@ -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; +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; - /// - /// 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] - private string _mapId = ""; - public List Visualizers; + /// + /// 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] + private string _mapId = ""; + public List Visualizers; - private Dictionary _tiles; - private Dictionary> _layerBuilder; + private Dictionary _tiles; + private Dictionary> _layerBuilder; - public void OnEnable() { - if (Visualizers == null) - Visualizers = new List(); - } + public void OnEnable() + { + if (Visualizers == null) + Visualizers = new List(); + } - /// - /// Sets up the Mesh Factory - /// - /// - public override void Initialize(IFileSource fs) { - base.Initialize(fs); - _tiles = new Dictionary(); - _layerBuilder = new Dictionary>(); - foreach (LayerVisualizerBase factory in Visualizers) { - if (_layerBuilder.ContainsKey(factory.Key)) { - _layerBuilder[factory.Key].Add(factory); - } else { - _layerBuilder.Add(factory.Key, new List() { factory }); - } - } - } + /// + /// Sets up the Mesh Factory + /// + /// + public override void Initialize(IFileSource fs, WorldParameters parameters) + { + base.Initialize(fs, parameters); + _tiles = new Dictionary(); + _layerBuilder = new Dictionary>(); + foreach (LayerVisualizerBase factory in Visualizers) + { + if (_layerBuilder.ContainsKey(factory.Key)) + { + _layerBuilder[factory.Key].Add(factory); + } + else + { + _layerBuilder.Add(factory.Key, new List() { factory }); + } + } + } - public override void Register(UnityTile tile) { - base.Register(tile); - _tiles.Add(tile.TileCoordinate, tile); - Run(tile); - } + public override void Register(UnityTile tile) + { + base.Register(tile); + _tiles.Add(tile.TileCoordinate, tile); + Run(tile); + } - /// - /// Mesh Factory waits for both Height and Image data to be processed if they are requested - /// - /// - private void Run(UnityTile tile) { - if (tile.HeightDataState == TilePropertyState.Loading || - tile.ImageDataState == TilePropertyState.Loading) { - tile.HeightDataChanged += HeightDataChangedHandler; - tile.ImageDataChanged += ImageDataChangedHandler; - } else { - CreateMeshes(tile, null); - } - } + /// + /// Mesh Factory waits for both Height and Image data to be processed if they are requested + /// + /// + private void Run(UnityTile tile) + { + if (tile.HeightDataState == TilePropertyState.Loading || + tile.ImageDataState == TilePropertyState.Loading) + { + tile.HeightDataChanged += HeightDataChangedHandler; + tile.ImageDataChanged += ImageDataChangedHandler; + } + else + { + CreateMeshes(tile, null); + } + } - private void HeightDataChangedHandler(UnityTile t, object e) { - if (t.ImageDataState != TilePropertyState.Loading) - CreateMeshes(t, e); - } + private void HeightDataChangedHandler(UnityTile t, object e) + { + if (t.ImageDataState != TilePropertyState.Loading) + CreateMeshes(t, e); + } - private void ImageDataChangedHandler(UnityTile t, object e) { - if (t.HeightDataState != TilePropertyState.Loading) - CreateMeshes(t, e); - } + private void ImageDataChangedHandler(UnityTile t, object e) + { + if (t.HeightDataState != TilePropertyState.Loading) + CreateMeshes(t, e); + } - /// - /// Fetches the vector data and passes each layer to relevant layer visualizers - /// - /// - /// - private void CreateMeshes(UnityTile tile, object e) { - tile.HeightDataChanged -= HeightDataChangedHandler; - tile.ImageDataChanged -= ImageDataChangedHandler; + /// + /// Fetches the vector data and passes each layer to relevant layer visualizers + /// + /// + /// + private void CreateMeshes(UnityTile tile, object e) + { + tile.HeightDataChanged -= HeightDataChangedHandler; + tile.ImageDataChanged -= ImageDataChangedHandler; - var parameters = new Mapbox.Map.Tile.Parameters { - Fs = this.FileSource, - Id = new Mapbox.Map.CanonicalTileId(tile.Zoom, (int)tile.TileCoordinate.x, (int)tile.TileCoordinate.y), - MapId = _mapId - }; + var parameters = new Mapbox.Map.Tile.Parameters + { + Fs = this.FileSource, + Id = new Mapbox.Map.CanonicalTileId(tile.Zoom, (int)tile.TileCoordinate.x, (int)tile.TileCoordinate.y), + MapId = _mapId + }; - var vectorTile = new Mapbox.Map.VectorTile(); - vectorTile.Initialize(parameters, () => { - if (vectorTile.HasError) { - Debug.Log(vectorTile.ExceptionsAsString); - return; - } + var vectorTile = new Mapbox.Map.VectorTile(); + vectorTile.Initialize(parameters, () => + { + if (vectorTile.HasError) + { + Debug.Log(vectorTile.ExceptionsAsString); + return; + } - foreach (var layerName in vectorTile.Data.LayerNames()) { - if (_layerBuilder.ContainsKey(layerName)) { - foreach (var builder in _layerBuilder[layerName]) { - if (builder.Active) - builder.Create(vectorTile.Data.GetLayer(layerName), tile); - } - } - } - }); - } - } + foreach (var layerName in vectorTile.Data.LayerNames()) + { + if (_layerBuilder.ContainsKey(layerName)) + { + foreach (var builder in _layerBuilder[layerName]) + { + if (builder.Active) + builder.Create(vectorTile.Data.GetLayer(layerName), tile); + } + } + } + }); + } + } } diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs index bc286cc2f..4bf018d6b 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/Factories/TerrainFactory.cs @@ -53,9 +53,9 @@ public class TerrainFactory : Factory private Dictionary _tiles; private Vector2 _stitchTarget; - public override void Initialize(IFileSource fs) + public override void Initialize(IFileSource fs, WorldParameters parameters) { - base.Initialize(fs); + base.Initialize(fs, parameters); _tiles = new Dictionary(); } diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/MapController.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/MapController.cs index fa88cca0f..32c87552b 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/MapController.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/MapController.cs @@ -8,14 +8,18 @@ namespace Mapbox.Unity.MeshGeneration using Mapbox.Unity.Utilities; using Utils; + public class WorldParameters + { + public RectD ReferenceTileRect; + public float WorldScaleFactor = 1; + } + /// /// MapController is just an helper class imitating the game/app logic controlling the map. It creates and passes the tiles requests to MapVisualization. /// public class MapController : MonoBehaviour { - public static RectD ReferenceTileRect { get; set; } - public static float WorldScaleFactor { get; set; } - + public WorldParameters WorldParameters; public MapVisualization MapVisualization; public float TileSize = 100; @@ -27,21 +31,37 @@ public class MapController : MonoBehaviour public int Zoom; public Vector4 Range; - private GameObject _root; + public GameObject Root; private Dictionary _tiles; + private Vector2 _refTile; + /// /// Resets the map controller and initializes the map visualization /// - public void Awake() + public void Start() { - MapVisualization.Initialize(MapboxAccess.Instance); + var parm = LatLng.Split(','); + var v2 = Conversions.GeoToWorldPosition(double.Parse(parm[0]), double.Parse(parm[1]), new Vector2d(0, 0)); + _refTile = Conversions.MetersToTile(v2, Zoom); + WorldParameters = new WorldParameters(); + WorldParameters.ReferenceTileRect = Conversions.TileBounds(_refTile, Zoom); + if (Root != null) + { + foreach (Transform t in Root.transform) + { + Destroy(t.gameObject); + } + } + + WorldParameters.WorldScaleFactor = (float)(TileSize / WorldParameters.ReferenceTileRect.Size.x); + Root = new GameObject("worldRoot"); + Root.transform.localScale = Vector3.one * WorldParameters.WorldScaleFactor; + + MapVisualization.Initialize(MapboxAccess.Instance, WorldParameters); _tiles = new Dictionary(); - } - public void Start() - { - Execute(); + Execute(); } /// @@ -55,7 +75,7 @@ public void Update() RaycastHit rayhit; if (Physics.Raycast(ray, out rayhit)) { - _root.transform.position = new Vector3(0, -rayhit.point.y, 0); + Root.transform.position = new Vector3(0, -rayhit.point.y, 0); _snapYToZero = false; } } @@ -76,26 +96,9 @@ public void Execute() /// Tiles to load around central tile in each direction; west-north-east-south public void Execute(double lat, double lng, int zoom, Vector4 frame) { - //frame goes left-top-right-bottom here - if (_root != null) + for (int i = (int)(_refTile.x - frame.x); i <= (_refTile.x + frame.z); i++) { - foreach (Transform t in _root.transform) - { - Destroy(t.gameObject); - } - } - - _root = new GameObject("worldRoot"); - - var v2 = Conversions.GeoToWorldPosition(lat, lng, new Vector2d(0, 0)); - var tms = Conversions.MetersToTile(v2, zoom); - ReferenceTileRect = Conversions.TileBounds(tms, zoom); - WorldScaleFactor = (float)(TileSize / ReferenceTileRect.Size.x); - _root.transform.localScale = Vector3.one * WorldScaleFactor; - - for (int i = (int)(tms.x - frame.x); i <= (tms.x + frame.z); i++) - { - for (int j = (int)(tms.y - frame.y); j <= (tms.y + frame.w); j++) + for (int j = (int)(_refTile.y - frame.y); j <= (_refTile.y + frame.w); j++) { var tile = new GameObject("Tile - " + i + " | " + j).AddComponent(); _tiles.Add(new Vector2(i, j), tile); @@ -103,11 +106,13 @@ public void Execute(double lat, double lng, int zoom, Vector4 frame) tile.RelativeScale = Conversions.GetTileScaleInMeters(0, Zoom) / Conversions.GetTileScaleInMeters((float)lat, Zoom); tile.TileCoordinate = new Vector2(i, j); tile.Rect = Conversions.TileBounds(tile.TileCoordinate, zoom); - tile.transform.position = new Vector3((float)(tile.Rect.Center.x - ReferenceTileRect.Center.x), 0, (float)(tile.Rect.Center.y - ReferenceTileRect.Center.y)); - tile.transform.SetParent(_root.transform, false); + tile.transform.position = new Vector3((float)(tile.Rect.Center.x - WorldParameters.ReferenceTileRect.Center.x), 0, (float)(tile.Rect.Center.y - WorldParameters.ReferenceTileRect.Center.y)); + tile.transform.SetParent(Root.transform, false); MapVisualization.ShowTile(tile); } } + + OnWorldCreated(Root); } public void Execute(double lat, double lng, int zoom, Vector2 frame) @@ -131,17 +136,26 @@ public void Request(Vector2 pos, int zoom) { var tile = new GameObject("Tile - " + pos.x + " | " + pos.y).AddComponent(); _tiles.Add(pos, tile); - tile.transform.SetParent(_root.transform, false); + tile.transform.SetParent(Root.transform, false); tile.Zoom = zoom; tile.TileCoordinate = new Vector2(pos.x, pos.y); tile.Rect = Conversions.TileBounds(tile.TileCoordinate, zoom); tile.RelativeScale = Conversions.GetTileScaleInMeters(0, Zoom) / Conversions.GetTileScaleInMeters((float)Conversions.MetersToLatLon(tile.Rect.Center).x, Zoom); - tile.transform.localPosition = new Vector3((float)(tile.Rect.Center.x - ReferenceTileRect.Center.x), + tile.transform.localPosition = new Vector3((float)(tile.Rect.Center.x - WorldParameters.ReferenceTileRect.Center.x), 0, - (float)(tile.Rect.Center.y - ReferenceTileRect.Center.y)); + (float)(tile.Rect.Center.y - WorldParameters.ReferenceTileRect.Center.y)); MapVisualization.ShowTile(tile); } } + + + public delegate void MapControllerEventArgs(MapController sender, GameObject root); + public event MapControllerEventArgs WorldCreated; + protected virtual void OnWorldCreated(GameObject root) + { + var handler = WorldCreated; + if (handler != null) handler(this, root); + } } } \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/MapVisualization.cs b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/MapVisualization.cs index 5d575b1fd..af3ba4150 100644 --- a/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/MapVisualization.cs +++ b/sdkproject/Assets/Mapbox/Core/Unity/MeshGeneration/MapVisualization.cs @@ -6,24 +6,29 @@ namespace Mapbox.Unity.MeshGeneration using Mapbox.Unity.MeshGeneration.Data; using Mapbox.Unity.MeshGeneration.Factories; using Mapbox.Platform; + using Utils; + using Utilities; [CreateAssetMenu(menuName = "Mapbox/MapVisualization")] public class MapVisualization : ScriptableObject { + public WorldParameters WorldParameters; public List Factories; /// /// Initializes the factories by passing the file source down, which's necessary for data (web/file) calls /// /// - public void Initialize(IFileSource fs) + public void Initialize(IFileSource fs, WorldParameters parameters) { + WorldParameters = parameters; foreach (Factory fac in Factories.Where(x => x != null)) { - fac.Initialize(fs); + fac.Initialize(fs, parameters); } } + /// /// Registers requested tiles to the factories /// diff --git a/sdkproject/Assets/Mapbox/Examples/Drive/Direction/DirectionsHelper.cs b/sdkproject/Assets/Mapbox/Examples/Drive/Direction/DirectionsHelper.cs index 317a58bfc..f426cea53 100644 --- a/sdkproject/Assets/Mapbox/Examples/Drive/Direction/DirectionsHelper.cs +++ b/sdkproject/Assets/Mapbox/Examples/Drive/Direction/DirectionsHelper.cs @@ -10,24 +10,23 @@ namespace Mapbox.Examples.Drive public class DirectionsHelper : MonoBehaviour { + private Transform _root; + public MapController MapController; public DirectionsFactory Directions; public List Waypoints; - void Start() + void Awake() { // draw directions path at start - Query(); + MapController.WorldCreated += (s, e) => + { + Query(); + }; } public void Query() { - var waypoints = new List(); - foreach (var wp in Waypoints) - { - waypoints.Add(wp.transform.GetGeoPosition(MapController.ReferenceTileRect.Center, MapController.WorldScaleFactor)); - } - - Directions.Query(waypoints); + Directions.Query(Waypoints); } } } \ No newline at end of file diff --git a/sdkproject/Assets/Mapbox/Examples/Drive/Drive.unity b/sdkproject/Assets/Mapbox/Examples/Drive/Drive.unity index 2aaf09e8d..522d5fe8e 100644 --- a/sdkproject/Assets/Mapbox/Examples/Drive/Drive.unity +++ b/sdkproject/Assets/Mapbox/Examples/Drive/Drive.unity @@ -305,6 +305,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3d8534d45be3bd44f84c41bc08827496, type: 3} m_Name: m_EditorClassIdentifier: + MapController: {fileID: 199863780} + MapVisualization: {fileID: 11400000, guid: 4f4961d6f3e45f84f99bda9cdc9dbb2b, type: 2} Directions: {fileID: 11400000, guid: d370b4703777f8c48b26eead134f2edb, type: 2} Waypoints: - {fileID: 1553875871} diff --git a/sdkproject/Assets/Mapbox/Examples/Drive/Mesh/DriveBuildingVisualizer.asset.meta b/sdkproject/Assets/Mapbox/Examples/Drive/Mesh/DriveBuildingVisualizer.asset.meta index e2e152b00..1787e2b92 100644 --- a/sdkproject/Assets/Mapbox/Examples/Drive/Mesh/DriveBuildingVisualizer.asset.meta +++ b/sdkproject/Assets/Mapbox/Examples/Drive/Mesh/DriveBuildingVisualizer.asset.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 3a02dddaa897fd444b76d6ed1339dab6 -timeCreated: 1485392370 +timeCreated: 1494434733 licenseType: Pro NativeFormatImporter: userData: diff --git a/sdkproject/Assets/Mapbox/Examples/LocationProvider/LocationProvider.unity b/sdkproject/Assets/Mapbox/Examples/LocationProvider/LocationProvider.unity index 67eb06d75..9674afa7d 100644 --- a/sdkproject/Assets/Mapbox/Examples/LocationProvider/LocationProvider.unity +++ b/sdkproject/Assets/Mapbox/Examples/LocationProvider/LocationProvider.unity @@ -124,6 +124,7 @@ MonoBehaviour: LatLng: 37.7648, -122.463 Zoom: 15 Range: {x: 1, y: 1, z: 1, w: 1} + Root: {fileID: 114606470} --- !u!4 &114606472 Transform: m_ObjectHideFlags: 0 @@ -472,6 +473,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a034c4eeb3293418aab101c1895844a4, type: 3} m_Name: m_EditorClassIdentifier: + _mapController: {fileID: 114606471} _targetTransform: {fileID: 1649127106} --- !u!4 &1649127106 Transform: @@ -528,6 +530,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4bb39d89f6f3742418be7c93b4259637, type: 3} m_Name: m_EditorClassIdentifier: + _mapController: {fileID: 114606471} _positionFollowFactor: 0.5 _useTransformLocationProvider: 0 --- !u!4 &1934621224 diff --git a/sdkproject/Assets/Mapbox/Examples/LocationProvider/Scripts/PositionWithLocationProvider.cs b/sdkproject/Assets/Mapbox/Examples/LocationProvider/Scripts/PositionWithLocationProvider.cs index 84d5aaeb0..9612cb338 100644 --- a/sdkproject/Assets/Mapbox/Examples/LocationProvider/Scripts/PositionWithLocationProvider.cs +++ b/sdkproject/Assets/Mapbox/Examples/LocationProvider/Scripts/PositionWithLocationProvider.cs @@ -7,6 +7,9 @@ namespace Mapbox.Examples.LocationProvider public class PositionWithLocationProvider : MonoBehaviour { + [SerializeField] + private MapController _mapController; + /// /// The rate at which the transform's position tries catch up to the provided location. /// @@ -66,15 +69,15 @@ void OnDestroy() void LocationProvider_OnLocationUpdated(object sender, LocationUpdatedEventArgs e) { - if (MapController.ReferenceTileRect == null) + if (_mapController.WorldParameters == null) { return; } _targetPosition = Conversions.GeoToWorldPosition(e.Location, - MapController.ReferenceTileRect.Center, - MapController.WorldScaleFactor).ToVector3xz(); - } + _mapController.WorldParameters.ReferenceTileRect.Center, + _mapController.WorldParameters.WorldScaleFactor).ToVector3xz(); + } void Update() { diff --git a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MapImageFactory.asset.meta b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MapImageFactory.asset.meta index 8230ca6e8..126c55f51 100644 --- a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MapImageFactory.asset.meta +++ b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MapImageFactory.asset.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 4304eeeba74ed4e48a435f96d9076abc -timeCreated: 1485208674 +timeCreated: 1494434733 licenseType: Pro NativeFormatImporter: userData: diff --git a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MeshFactory.asset.meta b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MeshFactory.asset.meta index 505fce516..287ebf71e 100644 --- a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MeshFactory.asset.meta +++ b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MeshFactory.asset.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: ee4d24cec5a998543b716563b2b77dae -timeCreated: 1485208825 +timeCreated: 1494434733 licenseType: Pro NativeFormatImporter: userData: diff --git a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MeshFactory/BuildingModifierStack/DefaultBuildingStack.asset.meta b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MeshFactory/BuildingModifierStack/DefaultBuildingStack.asset.meta index d6b211ebf..0953ef35c 100644 --- a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MeshFactory/BuildingModifierStack/DefaultBuildingStack.asset.meta +++ b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/MeshFactory/BuildingModifierStack/DefaultBuildingStack.asset.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 70166653a5881394c9dc697c1014376e -timeCreated: 1485212723 +timeCreated: 1494434733 licenseType: Pro NativeFormatImporter: userData: diff --git a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/TerrainFactory.asset.meta b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/TerrainFactory.asset.meta index 8d83c0e86..c2e575505 100644 --- a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/TerrainFactory.asset.meta +++ b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MapVisualization/Factories/TerrainFactory.asset.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: cb8b05cd0605ab3409113202791784c1 -timeCreated: 1485208271 +timeCreated: 1494434733 licenseType: Pro NativeFormatImporter: userData: diff --git a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MeshGeneration.unity.meta b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MeshGeneration.unity.meta index 609f2c66c..71989efed 100644 --- a/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MeshGeneration.unity.meta +++ b/sdkproject/Assets/Mapbox/Examples/MeshGenerationBasics/MeshGeneration.unity.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: f804e6882903c5f4595d554933b1cd94 -timeCreated: 1485206935 +timeCreated: 1494434733 licenseType: Pro DefaultImporter: userData: diff --git a/sdkproject/Assets/Mapbox/Examples/_resources/Scripts/Slippy.cs b/sdkproject/Assets/Mapbox/Examples/_resources/Scripts/Slippy.cs index 509e150f1..6342f288d 100644 --- a/sdkproject/Assets/Mapbox/Examples/_resources/Scripts/Slippy.cs +++ b/sdkproject/Assets/Mapbox/Examples/_resources/Scripts/Slippy.cs @@ -7,6 +7,7 @@ namespace Mapbox.Examples public class Slippy : MonoBehaviour { + private Transform _root; private MapController _mapController; private Camera _camera; [SerializeField] @@ -24,15 +25,20 @@ void Start() _mapController = GetComponent(); _camera = Camera.main; _yPlane = new Plane(Vector3.up, Vector3.zero); + _root = _mapController.Root.transform; + _mapController.WorldCreated += (s, e) => { _root = e.transform; }; } void Update() { + if (_root == null || _mapController == null) + return; + _ray = _camera.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0)); if (_yPlane.Raycast(_ray, out _hitDistance)) { - _cameraTarget = _ray.GetPoint(_hitDistance) / MapController.WorldScaleFactor; - _currentTile = Conversions.MetersToTile(new Vector2d(MapController.ReferenceTileRect.Center.x + _cameraTarget.x, MapController.ReferenceTileRect.Center.y + _cameraTarget.z), _mapController.Zoom); + _cameraTarget = _ray.GetPoint(_hitDistance) / _root.localScale.x; + _currentTile = Conversions.MetersToTile(new Vector2d(_mapController.WorldParameters.ReferenceTileRect.Center.x + _cameraTarget.x, _mapController.WorldParameters.ReferenceTileRect.Center.y + _cameraTarget.z), _mapController.Zoom); if (_currentTile != _cachedTile) { for (int i = -_range; i <= _range; i++)