public void RunningStateTests()
        {
            XRDepthSubsystem subsystem = CreateTestDepthSubsystem();

            // Initial state is not running
            Assert.That(subsystem.running == false);

            // After start subsystem is running
            subsystem.Start();
            Assert.That(subsystem.running == true);

            // After start subsystem is running
            subsystem.Stop();
            Assert.That(subsystem.running == false);
        }
Ejemplo n.º 2
0
 internal void UpdateData(XRDepthSubsystem subsystem)
 {
     m_Data.Dispose();
     m_Data          = subsystem.GetPointCloudData(trackableId, Allocator.Persistent);
     m_PointsUpdated = m_Data.positions.IsCreated;
 }
Ejemplo n.º 3
0
        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();
            }
        }
Ejemplo n.º 4
0
 public void SetSubsystemDependencies(XRDepthSubsystem depth, XRPlaneSubsystem plane)
 {
     xrDepthSubsystem = depth;
     xrPlaneSubsystem = plane;
 }