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;
}
}
}