AR Design
UBC EML collab with UBC SALA - visualizing IoT data in AR
DefaultTrackableEventHandler.cs
Go to the documentation of this file.
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;
10 using Vuforia;
11 
15 public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
16 {
17  #region PROTECTED_MEMBER_VARIABLES
18 
19  protected TrackableBehaviour mTrackableBehaviour;
20 
21  #endregion // PROTECTED_MEMBER_VARIABLES
22 
23  #region UNITY_MONOBEHAVIOUR_METHODS
24 
25  protected virtual void Start()
26  {
27  mTrackableBehaviour = GetComponent<TrackableBehaviour>();
28  if (mTrackableBehaviour)
29  mTrackableBehaviour.RegisterTrackableEventHandler(this);
30  }
31 
32  protected virtual void OnDestroy()
33  {
34  if (mTrackableBehaviour)
35  mTrackableBehaviour.UnregisterTrackableEventHandler(this);
36  }
37 
38  #endregion // UNITY_MONOBEHAVIOUR_METHODS
39 
40  #region PUBLIC_METHODS
41 
47  TrackableBehaviour.Status previousStatus,
48  TrackableBehaviour.Status newStatus)
49  {
50  if (newStatus == TrackableBehaviour.Status.DETECTED ||
51  newStatus == TrackableBehaviour.Status.TRACKED ||
52  newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
53  {
54  Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
56  }
57  else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
58  newStatus == TrackableBehaviour.Status.NOT_FOUND)
59  {
60  Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
62  }
63  else
64  {
65  // For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
66  // Vuforia is starting, but tracking has not been lost or found yet
67  // Call OnTrackingLost() to hide the augmentations
69  }
70  }
71 
72  #endregion // PUBLIC_METHODS
73 
74  #region PROTECTED_METHODS
75 
76  protected virtual void OnTrackingFound()
77  {
78  var rendererComponents = GetComponentsInChildren<Renderer>(true);
79  var colliderComponents = GetComponentsInChildren<Collider>(true);
80  var canvasComponents = GetComponentsInChildren<Canvas>(true);
81 
82  // Enable rendering:
83  foreach (var component in rendererComponents)
84  component.enabled = true;
85 
86  // Enable colliders:
87  foreach (var component in colliderComponents)
88  component.enabled = true;
89 
90  // Enable canvas':
91  foreach (var component in canvasComponents)
92  component.enabled = true;
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 
115  #endregion // PROTECTED_METHODS
116 }
void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
Implementation of the ITrackableEventHandler function called when the tracking state changes...
A custom handler that implements the ITrackableEventHandler interface.