MIF_E31211986/Library/PackageCache/com.ptc.vuforia.engine@64a4.../Vuforia/Scripts/DefaultAreaTargetEventHandl...

72 lines
2.6 KiB
C#

/*===============================================================================
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;
/// <summary>
/// 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.
/// </summary>
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<VuforiaAugmentationRenderer>();
if (augmentationRenderer != null)
{
augmentationRenderer.SetActive(value);
return;
}
if (mObserverBehaviour)
{
var rendererComponent = augmentationTransform.GetComponent<Renderer>();
if (rendererComponent != null)
rendererComponent.enabled = value;
var canvasComponent = augmentationTransform.GetComponent<Canvas>();
if (canvasComponent != null)
canvasComponent.enabled = value;
var colliderComponent = augmentationTransform.GetComponent<Collider>();
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<VuforiaAugmentationRenderer>(false);
foreach (var component in augmentationRendererComponents)
component.SetActive(value);
}
}