bool CheckIsOver() { foreach (var image in m_TempAugmentedImages) { ZYC_AugmentedImageVisualizer visualizer = null; m_Visualizers.TryGetValue(image.DatabaseIndex, out visualizer); if (visualizer != null && !visualizer.getIsOver()) { return(false); } } return(true); }
/// <summary> /// The Unity Update method. /// </summary> public void Update() { // Exit the app when the 'back' button is pressed. if (Input.GetKey(KeyCode.Escape)) { Application.Quit(); } // Only allow the screen to sleep when not tracking. if (Session.Status != SessionStatus.Tracking) { Screen.sleepTimeout = SleepTimeout.SystemSetting; } else { Screen.sleepTimeout = SleepTimeout.NeverSleep; } // Get updated augmented images for this frame. Session.GetTrackables <AugmentedImage>( m_TempAugmentedImages, TrackableQueryFilter.Updated); // Create visualizers and anchors for updated augmented images that are tracking and do // not previously have a visualizer. Remove visualizers for stopped images. foreach (var image in m_TempAugmentedImages) { ZYC_AugmentedImageVisualizer visualizer = null; m_Visualizers.TryGetValue(image.DatabaseIndex, out visualizer); if (image.TrackingState == TrackingState.Tracking && visualizer == null) { if (!CheckIsOver()) { break; } // Create an anchor to ensure that ARCore keeps tracking this augmented image. Anchor anchor = image.CreateAnchor(image.CenterPose); if (image.Name == "P49_1") { visualizer = (ZYC_AugmentedImageVisualizer)Instantiate( AugmentedImageVisualizerPrefabs[0], anchor.transform); } else if (image.Name == "P52_1") { visualizer = (ZYC_AugmentedImageVisualizer)Instantiate( AugmentedImageVisualizerPrefabs[1], anchor.transform); } else { visualizer = (ZYC_AugmentedImageVisualizer)Instantiate( AugmentedImageVisualizerPrefabs[2], anchor.transform); visualizer.gameObject.name = image.Name; } visualizer.Image = image; visualizer.m_Visualizers = m_Visualizers; m_Visualizers.Add(image.DatabaseIndex, visualizer); } /* * else if ((image.TrackingState == TrackingState.Stopped) && visualizer != null) * { * m_Visualizers.Remove(image.DatabaseIndex); * GameObject.Destroy(visualizer.gameObject); * } */ } // Show the fit-to-scan overlay if there are no images that are Tracking. foreach (var visualizer in m_Visualizers.Values) { if (visualizer.Image.TrackingState == TrackingState.Tracking) { FitToScanOverlay.SetActive(false); hand.SetActive(false); return; } } FitToScanOverlay.SetActive(true); }