static TrackingState GetTrackingState(XRPlaneSubsystem planeSubsystem, TrackableId planeId) { TrackingState trackingState; PlaneApi.TryGetTrackingState(planeId, out trackingState); return(trackingState); }
internal void UpdateBoundary(XRPlaneSubsystem subsystem) { // subsystem cannot be null here if (subsystem.SubsystemDescriptor.supportsBoundaryVertices) { subsystem.GetBoundary(trackableId, Allocator.Persistent, ref m_Boundary); } else { if (!m_Boundary.IsCreated) { m_Boundary = new NativeArray <Vector2>(4, Allocator.Persistent); } else if (m_Boundary.Length != 4) { m_Boundary.Dispose(); m_Boundary = new NativeArray <Vector2>(4, Allocator.Persistent); } var extents = sessionRelativeData.extents; m_Boundary[0] = new Vector2(-extents.x, -extents.y); m_Boundary[1] = new Vector2(-extents.x, extents.y); m_Boundary[2] = new Vector2(extents.x, extents.y); m_Boundary[3] = new Vector2(extents.x, -extents.y); } if (boundaryChanged != null) { CheckForBoundaryChanges(); } }
/// <summary> /// Retrieve the <c>TrackingState</c> of the given <paramref name="planeId"/>. /// </summary> /// <param name="planeSubsystem">The <c>XRPlaneSubsystem</c> being extended.</param> /// <param name="planeId">The <c>TrackableId</c> associated with this plane.</param> /// <returns>The <c>TrackingState</c> of the plane with id <paramref name="planeId"/>.</returns> public static TrackingState GetTrackingState(this XRPlaneSubsystem planeSubsystem, TrackableId planeId) { if (planeSubsystem == null) { throw new ArgumentNullException("planeSubsystem"); } return(s_GetTrackingStateDelegate(planeSubsystem, planeId)); }
/// <summary> /// Attempt to set the <see cref="PlaneDetectionFlags"/>. /// </summary> /// <param name="planeSubsystem">The <c>XRPlaneSubsystem</c> being extended.</param> /// <param name="flags">The plane detection mode(s) to enable.</param> /// <returns><c>true</c> if the flags were successfully set, <c>false</c> otherwise.</returns> public static bool TrySetPlaneDetectionFlags(this XRPlaneSubsystem planeSubsystem, PlaneDetectionFlags flags) { if (planeSubsystem == null) { throw new ArgumentNullException("planeSubsystem"); } return(s_TrySetPlaneDetectionFlagsDelegate(planeSubsystem, flags)); }
/// <summary> /// Retrieves a native <c>IntPtr</c> associated with a plane with <c>TrackableId</c> /// <paramref name="trackableId"/>. /// </summary> /// <param name="planeSubsystem">The <c>XRPlaneSubsystem</c> being extended.</param> /// <param name="trackableId">The <c>TrackableId</c> of a reference point.</param> /// <returns>An <c>IntPtr</c> associated with the reference point, or <c>IntPtr.Zero</c> if unavailable.</returns> public static IntPtr GetNativePtr(this XRPlaneSubsystem planeSubsystem, TrackableId planeId) { if (planeSubsystem == null) { throw new ArgumentNullException("planeSubsystem"); } return(s_GetNativePtrDelegate(planeSubsystem, planeId)); }
public static BoundedPlane GetPlane(this XRPlaneSubsystem planeSubsystem, TrackableId trackableId) { planeSubsystem.GetAllPlanes(s_BoundedPlanes); foreach (var plane in s_BoundedPlanes) { if (plane.Id == trackableId) { return(plane); } } return(new BoundedPlane()); }
/// <summary> /// Sets the active subsystem whose extension methods should be used. /// </summary> /// <param name="planeSubsystem">The <c>XRPlaneSubsystem</c> being extended.</param> public static void ActivateExtensions(this XRPlaneSubsystem planeSubsystem) { if (planeSubsystem == null) { SetDefaultDelegates(); } else { var id = planeSubsystem.SubsystemDescriptor.id; s_GetNativePtrDelegate = RegistrationHelper.GetValueOrDefault(s_GetNativePtrDelegates, id, DefaultGetNativePtr); s_GetTrackingStateDelegate = RegistrationHelper.GetValueOrDefault(s_GetTrackingStateDelegates, id, DefaultGetTrackingState); } }
/// <summary> /// Retrieve the <c>TrackingState</c> of the given <paramref name="planeId"/>. /// </summary> /// <param name="planeSubsystem">The <c>XRPlaneSubsystem</c> being extended.</param> /// <param name="planeId">The <c>TrackableId</c> associated with this plane.</param> /// <returns>The <c>TrackingState</c> of the plane with id <paramref name="planeId"/>.</returns> public static TrackingState GetTrackingState(this XRPlaneSubsystem planeSubsystem, TrackableId planeId) { if (planeSubsystem == null) { throw new ArgumentNullException("planeSubsystem"); } Func <XRPlaneSubsystem, TrackableId, TrackingState> handler; if (s_GetTrackingStateDelegates.TryGetValue(planeSubsystem.SubsystemDescriptor.id, out handler)) { return(handler(planeSubsystem, planeId)); } else { return(TrackingState.Unknown); } }
void OnSceneGUI(SceneView sceneView) { if (visualizeRemotingData && EditorApplication.isPlaying) { if (m_depth == null) { m_depth = CreateSubsystem <XRDepthSubsystemDescriptor, XRDepthSubsystem>(m_depthDescriptors, m_subsystemFilter); m_depth.Start(); } m_depth.GetPoints(points); if (m_plane == null) { m_plane = CreateSubsystem <XRPlaneSubsystemDescriptor, XRPlaneSubsystem>(m_planeDescriptors, m_subsystemFilter); m_plane.Start(); } foreach (var p in points) { Handles.color = pointOutlineColor; Handles.DrawWireCube(p, Vector3.one * visualizeScale); } points.Clear(); planes.Clear(); m_plane.GetAllPlanes(planes); foreach (var plane in planes) { if (plane.TryGetBoundary(points)) { Handles.color = planeColor; var boundaryArray = points.ToArray(); Handles.DrawAAConvexPolygon(boundaryArray); Handles.color = planeOutlineColor; Handles.DrawPolyLine(boundaryArray); Handles.DrawLine(boundaryArray[boundaryArray.Length - 1], boundaryArray[0]); } } Handles.color = Color.white; if (visualizeCameraPath) { foreach (var cameraPos in m_cameraPositions) { Handles.DrawPolyLine(m_cameraPositions.ToArray()); } } Handles.color = cameraSidePlaneOutlineColor; if (cameraToStream != null) { var camera = cameraToStream; Vector3[] frustumCorners = new Vector3[4]; camera.CalculateFrustumCorners(new Rect(0, 0, 1, 1), camera.farClipPlane, Camera.MonoOrStereoscopicEye.Mono, frustumCorners); for (int i = 0; i < 4; i++) { var worldSpaceCorner = camera.transform.TransformVector(frustumCorners[i]); Handles.DrawLine(cameraToStream.transform.position, worldSpaceCorner); } Handles.color = cameraFarPlaneOutlineColor; Handles.DrawLine(camera.transform.TransformVector(frustumCorners[0]), camera.transform.TransformVector(frustumCorners[1])); Handles.DrawLine(camera.transform.TransformVector(frustumCorners[1]), camera.transform.TransformVector(frustumCorners[2])); Handles.DrawLine(camera.transform.TransformVector(frustumCorners[2]), camera.transform.TransformVector(frustumCorners[3])); Handles.DrawLine(camera.transform.TransformVector(frustumCorners[3]), camera.transform.TransformVector(frustumCorners[0])); Handles.color = cameraSidePlaneColor; Vector3[] topFrustrum = { camera.transform.TransformVector(frustumCorners[1]), camera.transform.TransformVector(frustumCorners[2]), camera.transform.position }; Handles.DrawAAConvexPolygon(topFrustrum); Vector3[] sideFrustrum = { camera.transform.TransformVector(frustumCorners[2]), camera.transform.TransformVector(frustumCorners[3]), camera.transform.position }; Handles.DrawAAConvexPolygon(sideFrustrum); Vector3[] bottomFrustrum = { camera.transform.TransformVector(frustumCorners[3]), camera.transform.TransformVector(frustumCorners[0]), camera.transform.position }; Handles.DrawAAConvexPolygon(bottomFrustrum); Vector3[] leftFrustrum = { camera.transform.TransformVector(frustumCorners[0]), camera.transform.TransformVector(frustumCorners[1]), camera.transform.position }; Handles.DrawAAConvexPolygon(leftFrustrum); Handles.color = cameraFarPlaneColor; Vector3[] cameraFrustrum = { camera.transform.TransformVector(frustumCorners[0]), camera.transform.TransformVector(frustumCorners[1]), camera.transform.TransformVector(frustumCorners[2]), camera.transform.TransformVector(frustumCorners[3]) }; Handles.DrawAAConvexPolygon(cameraFrustrum); } Handles.BeginGUI(); Handles.EndGUI(); } }
static IntPtr DefaultGetNativePtr(XRPlaneSubsystem referencePointSubsystem, TrackableId trackableId) { return(IntPtr.Zero); }
static TrackingState DefaultGetTrackingState(this XRPlaneSubsystem planeSubsystem, TrackableId planeId) { return(TrackingState.Unknown); }
static bool DefaultTrySetPlaneDetectionFlags( XRPlaneSubsystem planeSubsystem, PlaneDetectionFlags flags) { return(false); }
static IntPtr GetNativePtr(XRPlaneSubsystem planeSubsystem, TrackableId planeId) { return(Api.UnityARCore_getNativePlanePtr(planeId)); }
static TrackingState GetTrackingState(XRPlaneSubsystem planeSubsystem, TrackableId planeId) { return(Api.UnityARCore_getAnchorTrackingState(planeId)); }
static bool TrySetPlaneDetectionFlags(XRPlaneSubsystem planeSubsystem, PlaneDetectionFlags flags) { return(Api.UnityARCore_trySetPlaneDetectionFlags(flags)); }
public void SetSubsystemDependencies(XRDepthSubsystem depth, XRPlaneSubsystem plane) { xrDepthSubsystem = depth; xrPlaneSubsystem = plane; }