namespace Mapbox.Unity.Location { using System; using System.Collections.Generic; using System.Globalization; using System.IO; using Mapbox.Unity.Utilities; using Mapbox.Utils; using UnityEngine; /// /// /// The EditorLocationProvider is responsible for providing mock location data via log file collected with the 'LocationProvider' scene /// /// public class EditorLocationProviderLocationLog : AbstractEditorLocationProvider { /// /// The mock "latitude, longitude" location, respresented with a string. /// You can search for a place using the embedded "Search" button in the inspector. /// This value can be changed at runtime in the inspector. /// [SerializeField] private TextAsset _locationLogFile; private LocationLogReader _logReader; private IEnumerator _locationEnumerator; #if UNITY_EDITOR protected override void Awake() { base.Awake(); _logReader = new LocationLogReader(_locationLogFile.bytes); _locationEnumerator = _logReader.GetLocations(); } #endif private void OnDestroy() { if (null != _locationEnumerator) { _locationEnumerator.Dispose(); _locationEnumerator = null; } if (null != _logReader) { _logReader.Dispose(); _logReader = null; } } protected override void SetLocation() { if (null == _locationEnumerator) { return; } // no need to check if 'MoveNext()' returns false as LocationLogReader loops through log file _locationEnumerator.MoveNext(); _currentLocation = _locationEnumerator.Current; } } }