This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
ARPlusSystem/ARPlusSystem-250418/Assets/ARLocation/Scripts/Location/MockLocationProvider.cs

87 lines
2.4 KiB
C#
Raw Normal View History

using UnityEngine;
namespace ARLocation
{
public class MockLocationProvider : AbstractLocationProvider
{
public override string Name => "MockLocationProvider";
public override bool IsCompassEnabled => true;
public Location mockLocation = new Location();
private bool requested = true;
private bool first = true;
protected override HeadingReading? ReadHeading()
{
var mainCamera = Camera.main;
if (mainCamera != null)
{
var transform = mainCamera.transform;
var localEulerAngles = transform.localEulerAngles;
return new HeadingReading
{
heading = localEulerAngles.y,
magneticHeading = localEulerAngles.y,
accuracy = 0,
isMagneticHeadingAvailable = true,
timestamp = (long)(Time.time * 1000)
};
}
else
{
return new HeadingReading
{
heading = 0,
magneticHeading = 0,
accuracy = 0,
isMagneticHeadingAvailable = true,
timestamp = (long)(Time.time * 1000)
};
}
}
protected override LocationReading? ReadLocation()
{
if (first)
{
first = false;
return new LocationReading
{
latitude = mockLocation.Latitude,
longitude = mockLocation.Longitude,
altitude = mockLocation.Altitude,
accuracy = 0.0,
floor = -1,
timestamp = (long)(Time.time * 1000)
};
}
return null;
}
protected override void RequestLocationAndCompassUpdates()
{
requested = true;
}
protected override void UpdateLocationRequestStatus()
{
if (requested)
{
Status = LocationProviderStatus.Initializing;
requested = false;
}
if (Status == LocationProviderStatus.Initializing)
{
Status = LocationProviderStatus.Started;
}
}
}
}