/*=============================================================================== Copyright (c) 2021 PTC Inc. All Rights Reserved. Confidential and Proprietary - Protected under copyright and other laws. Vuforia is a trademark of PTC Inc., registered in the United States and other countries. ===============================================================================*/ using UnityEngine; using Vuforia; /// /// A custom handler that inherits from the DefaultObserverEventHandler class. /// /// Changes made to this file could be overwritten when upgrading the Vuforia version. /// When implementing custom area target event handler behavior, consider inheriting from this class instead. /// public class DefaultAreaTargetEventHandler : DefaultObserverEventHandler { protected override void OnTrackingFound() { SetAugmentationRendering(true); OnTargetFound?.Invoke(); } protected override void OnTrackingLost() { SetAugmentationRendering(false); OnTargetLost?.Invoke(); } void SetAugmentationRendering(bool value) { for (var i = 0; i < transform.childCount; i++) SetEnabledOnChildComponents(transform.GetChild(i), value); SetVuforiaRenderingComponents(value); } void SetEnabledOnChildComponents(Transform augmentationTransform, bool value) { var augmentationRenderer = augmentationTransform.GetComponent(); if (augmentationRenderer != null) { augmentationRenderer.SetActive(value); return; } if (mObserverBehaviour) { var rendererComponent = augmentationTransform.GetComponent(); if (rendererComponent != null) rendererComponent.enabled = value; var canvasComponent = augmentationTransform.GetComponent(); if (canvasComponent != null) canvasComponent.enabled = value; var colliderComponent = augmentationTransform.GetComponent(); if (colliderComponent != null) colliderComponent.enabled = value; } for (var i = 0; i < augmentationTransform.childCount; i++) SetEnabledOnChildComponents(augmentationTransform.GetChild(i), value); } void SetVuforiaRenderingComponents(bool value) { var augmentationRendererComponents = mObserverBehaviour.GetComponentsInChildren(false); foreach (var component in augmentationRendererComponents) component.SetActive(value); } }