Advertisement
AlezM

Untitled

Mar 6th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.83 KB | None | 0 0
  1. /*==============================================================================
  2. Copyright (c) 2017 PTC Inc. All Rights Reserved.
  3.  
  4. Copyright (c) 2010-2014 Qualcomm Connected Experiences, Inc.
  5. All Rights Reserved.
  6. Confidential and Proprietary - Protected under copyright and other laws.
  7. ==============================================================================*/
  8.  
  9. using UnityEngine.Events;
  10. using UnityEngine;
  11. using Vuforia;
  12.  
  13. /// <summary>
  14. ///     A custom handler that implements the ITrackableEventHandler interface.
  15. /// </summary>
  16. public class CustomTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
  17. {
  18.     public UnityEvent onTrackingFound;
  19.     public UnityEvent onTrackingLost;
  20.  
  21.     #region PRIVATE_MEMBER_VARIABLES
  22.  
  23.     protected TrackableBehaviour mTrackableBehaviour;
  24.  
  25.     #endregion // PRIVATE_MEMBER_VARIABLES
  26.  
  27.     #region UNTIY_MONOBEHAVIOUR_METHODS
  28.  
  29.     protected virtual void Start()
  30.     {
  31.         mTrackableBehaviour = GetComponent<TrackableBehaviour>();
  32.         if (mTrackableBehaviour)
  33.             mTrackableBehaviour.RegisterTrackableEventHandler(this);
  34.     }
  35.  
  36.     #endregion // UNTIY_MONOBEHAVIOUR_METHODS
  37.  
  38.     #region PUBLIC_METHODS
  39.  
  40.     /// <summary>
  41.     ///     Implementation of the ITrackableEventHandler function called when the
  42.     ///     tracking state changes.
  43.     /// </summary>
  44.     public void OnTrackableStateChanged(
  45.         TrackableBehaviour.Status previousStatus,
  46.         TrackableBehaviour.Status newStatus)
  47.     {
  48.         if (newStatus == TrackableBehaviour.Status.DETECTED ||
  49.             newStatus == TrackableBehaviour.Status.TRACKED ||
  50.             newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
  51.         {
  52.             Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
  53.             OnTrackingFound();
  54.         }
  55.         else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
  56.                  newStatus == TrackableBehaviour.Status.NOT_FOUND)
  57.         {
  58.             Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
  59.             OnTrackingLost();
  60.         }
  61.         else
  62.         {
  63.             // For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
  64.             // Vuforia is starting, but tracking has not been lost or found yet
  65.             // Call OnTrackingLost() to hide the augmentations
  66.             OnTrackingLost();
  67.         }
  68.     }
  69.  
  70.     #endregion // PUBLIC_METHODS
  71.  
  72.     #region PRIVATE_METHODS
  73.  
  74.     protected virtual void OnTrackingFound()
  75.     {
  76.         var rendererComponents = GetComponentsInChildren<Renderer>(true);
  77.         var colliderComponents = GetComponentsInChildren<Collider>(true);
  78.         var canvasComponents = GetComponentsInChildren<Canvas>(true);
  79.  
  80.         // Enable rendering:
  81.         foreach (var component in rendererComponents)
  82.             component.enabled = true;
  83.  
  84.         // Enable colliders:
  85.         foreach (var component in colliderComponents)
  86.             component.enabled = true;
  87.  
  88.         // Enable canvas':
  89.         foreach (var component in canvasComponents)
  90.             component.enabled = true;
  91.  
  92.         onTrackingFound.Invoke();
  93.     }
  94.  
  95.  
  96.     protected virtual void OnTrackingLost()
  97.     {
  98.         var rendererComponents = GetComponentsInChildren<Renderer>(true);
  99.         var colliderComponents = GetComponentsInChildren<Collider>(true);
  100.         var canvasComponents = GetComponentsInChildren<Canvas>(true);
  101.  
  102.         // Disable rendering:
  103.         foreach (var component in rendererComponents)
  104.             component.enabled = false;
  105.  
  106.         // Disable colliders:
  107.         foreach (var component in colliderComponents)
  108.             component.enabled = false;
  109.  
  110.         // Disable canvas':
  111.         foreach (var component in canvasComponents)
  112.             component.enabled = false;
  113.  
  114.         onTrackingLost.Invoke();
  115.     }
  116.  
  117.     #endregion // PRIVATE_METHODS
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement