public override List <HitTestResult> HitTest(Vector2 point, HitTestResultType type) { Ray ray = m_CachedCamera.ScreenPointToRay(point); int mask = 1 << LayerMask.NameToLayer("ARGameObject"); List <HitTestResult> results = new List <HitTestResult>(); RaycastHit hit; if (Physics.Raycast(ray, out hit, float.MaxValue, mask)) { HitTestResult result = new HitTestResult(); result.position = hit.point; result.distance = Vector3.Distance(result.position, m_CachedCamera.transform.position); result.type = HitTestResultType.ExistingPlaneUsingExtent; } return(results); }
public override List <HitTestResult> HitTest(Vector2 point, HitTestResultType type) { ARHitTestResultType rt = ARHitTestResultType.ARHitTestResultTypeFeaturePoint; // translate HitTestResultType to ARHitTestResultType switch (type) { case HitTestResultType.FeaturePoint: rt = ARHitTestResultType.ARHitTestResultTypeFeaturePoint; break; case HitTestResultType.EstimatedHorizontalPlane: rt = ARHitTestResultType.ARHitTestResultTypeHorizontalPlane; break; case HitTestResultType.ExistingPlane: rt = ARHitTestResultType.ARHitTestResultTypeExistingPlane; break; case HitTestResultType.ExistingPlaneUsingExtent: rt = ARHitTestResultType.ARHitTestResultTypeExistingPlaneUsingExtent; break; } // call native HitTest ARPoint ap = new ARPoint { x = point.x, y = point.y }; List <ARHitTestResult> hitTestResults = nativeInterface.HitTest(ap, rt); List <HitTestResult> results = new List <HitTestResult>(); foreach (ARHitTestResult hitTestResult in hitTestResults) { HitTestResult result = new HitTestResult(); result.distance = hitTestResult.distance; result.position = UnityARMatrixOps.GetPosition(hitTestResult.worldTransform); result.type = type; results.Add(result); } return(results); }
public override List <HitTestResult> HitTest(Vector2 point, HitTestResultType type) { TrackableHitFlags hf = TrackableHitFlags.None; // translate HitTestResultType to TrackableHitFlags switch (type) { case HitTestResultType.FeaturePoint: hf = TrackableHitFlags.FeaturePoint | TrackableHitFlags.FeaturePointWithSurfaceNormal; break; case HitTestResultType.EstimatedHorizontalPlane: hf = TrackableHitFlags.PlaneWithinPolygon; break; case HitTestResultType.ExistingPlane: hf = TrackableHitFlags.PlaneWithinInfinity; break; case HitTestResultType.ExistingPlaneUsingExtent: hf = TrackableHitFlags.PlaneWithinBounds; break; } // call native HitTest List <HitTestResult> results = new List <HitTestResult>(); TrackableHit hit; if (Frame.Raycast(point.x, point.y, hf, out hit)) { HitTestResult result = new HitTestResult(); result.distance = hit.Distance; result.position = hit.Pose.position; result.type = type; results.Add(result); } return(results); }
public override List <HitTestResult> HitTest(Vector2 point, HitTestResultType type) { return(new List <HitTestResult>()); }
public abstract List <HitTestResult> HitTest(Vector2 point, HitTestResultType type);