70 lines
2.3 KiB
C#
70 lines
2.3 KiB
C#
|
|
//Daniel Castaño Estrella
|
|||
|
|
//daniel.c.estrella@gmail.com
|
|||
|
|
//2019
|
|||
|
|
|
|||
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.Experimental.XR.Interaction;
|
|||
|
|
using UnityEngine.SpatialTracking;
|
|||
|
|
using static UnityEngine.SpatialTracking.TrackedPoseDriver;
|
|||
|
|
|
|||
|
|
namespace ARLocation
|
|||
|
|
{
|
|||
|
|
public class RtkPoseProvider : BasePoseProvider
|
|||
|
|
{
|
|||
|
|
[SerializeField]
|
|||
|
|
TrackedPoseDriver.DeviceType m_Device = TrackedPoseDriver.DeviceType.GenericXRDevice;
|
|||
|
|
[SerializeField]
|
|||
|
|
TrackedPoseDriver.TrackedPose m_PoseSource = TrackedPoseDriver.TrackedPose.ColorCamera;
|
|||
|
|
|
|||
|
|
void Start()
|
|||
|
|
{
|
|||
|
|
Location.useCameraAsOrigin = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//public Vector3 position;
|
|||
|
|
//public Quaternion rotation;
|
|||
|
|
public override PoseDataFlags GetPoseFromProvider(out Pose output)
|
|||
|
|
{
|
|||
|
|
PoseDataFlags retDataFlags = PoseDataSource.GetDataFromSource(m_PoseSource, out output);
|
|||
|
|
|
|||
|
|
if (retDataFlags == PoseDataFlags.NoData)
|
|||
|
|
return retDataFlags;
|
|||
|
|
|
|||
|
|
PoseDataFlags retData = PoseDataFlags.NoData;
|
|||
|
|
if ((retDataFlags & PoseDataFlags.Rotation) > 0)
|
|||
|
|
retData |= PoseDataFlags.Rotation;
|
|||
|
|
|
|||
|
|
|
|||
|
|
//LocationReading locReadFirst = ARLocationManager.Instance.arLocationProvider.Provider.FirstLocation;
|
|||
|
|
//Location userLocationFirst = locReadFirst.ToLocation();
|
|||
|
|
|
|||
|
|
//LocationReading locReadCurrent = ARLocationManager.Instance.arLocationProvider.Provider.CurrentLocation;
|
|||
|
|
//Location userLocationCurrent = locReadCurrent.ToLocation();
|
|||
|
|
|
|||
|
|
|
|||
|
|
//Vector3 displacementVector = Location.VectorFromTo(userLocationFirst, userLocationCurrent, false).toVector3();
|
|||
|
|
Vector3 displacementVector = new Vector3(0, 0, 0);
|
|||
|
|
|
|||
|
|
Pose outPose = new Pose(displacementVector, output.rotation);
|
|||
|
|
output = outPose;
|
|||
|
|
|
|||
|
|
//Pose localPose = TransformPoseByOriginIfNeeded(currentPose);
|
|||
|
|
//SetLocalTransform(localPose.position, localPose.rotation, poseFlags);
|
|||
|
|
|
|||
|
|
retData |= PoseDataFlags.Position;
|
|||
|
|
return retData;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override bool TryGetPoseFromProvider(out Pose output)
|
|||
|
|
{
|
|||
|
|
//resultPose = Pose.identity;
|
|||
|
|
//return false;
|
|||
|
|
|
|||
|
|
output = new Pose(transform.position, transform.rotation);
|
|||
|
|
return gameObject.activeInHierarchy;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|