72 lines
2.6 KiB
C#
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);
|
|
}
|
|
}
|