Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.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;
  10. using Vuforia;
  11.  
  12. /// <summary>
  13. /// A custom handler that implements the ITrackableEventHandler interface.
  14. ///
  15. /// Changes made to this file could be overwritten when upgrading the Vuforia version.
  16. /// When implementing custom event handler behavior, consider inheriting from this class instead.
  17. /// </summary>
  18. public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
  19. {
  20.  
  21.     public string m_strFileName;
  22.    
  23.     #region PROTECTED_MEMBER_VARIABLES
  24.  
  25.     protected TrackableBehaviour mTrackableBehaviour;
  26.  
  27.     #endregion // PROTECTED_MEMBER_VARIABLES
  28.  
  29.     #region UNITY_MONOBEHAVIOUR_METHODS
  30.  
  31.     protected virtual void Start()
  32.     {
  33.         mTrackableBehaviour = GetComponent<TrackableBehaviour>();
  34.         if (mTrackableBehaviour)
  35.             mTrackableBehaviour.RegisterTrackableEventHandler(this);
  36.     }
  37.  
  38.     protected virtual void OnDestroy()
  39.     {
  40.         if (mTrackableBehaviour)
  41.             mTrackableBehaviour.UnregisterTrackableEventHandler(this);
  42.     }
  43.  
  44.     #endregion // UNITY_MONOBEHAVIOUR_METHODS
  45.  
  46.     #region PUBLIC_METHODS
  47.  
  48.     /// <summary>
  49.     ///     Implementation of the ITrackableEventHandler function called when the
  50.     ///     tracking state changes.
  51.     /// </summary>
  52.     public void OnTrackableStateChanged(
  53.         TrackableBehaviour.Status previousStatus,
  54.         TrackableBehaviour.Status newStatus)
  55.     {
  56.         if (newStatus == TrackableBehaviour.Status.DETECTED ||
  57.             newStatus == TrackableBehaviour.Status.TRACKED ||
  58.             newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
  59.         {
  60.             Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
  61.             OnTrackingFound();
  62.            
  63.             var entity = RemoteResouceManager.GetByUrl(m_strFileName);
  64.             GetComponentInChildren<MediaPlayerCtrl>().Load(entity.Video.LocalPath);
  65.  
  66.             StartCoroutine(GetAudioAndPlay(entity));
  67.         }
  68.         else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
  69.                  newStatus == TrackableBehaviour.Status.NO_POSE)
  70.         {
  71.             Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
  72.             OnTrackingLost();
  73.            
  74.             // Stop video when target is lost
  75.             GetComponentInChildren<MediaPlayerCtrl>().UnLoad();
  76.  
  77.             // Stop audio when target is lost
  78.             GetComponent<AudioSource>().Stop();
  79.         }
  80.         else
  81.         {
  82.             // For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
  83.             // Vuforia is starting, but tracking has not been lost or found yet
  84.             // Call OnTrackingLost() to hide the augmentations
  85.             OnTrackingLost();
  86.            
  87.             // Stop video when target is lost
  88.             GetComponentInChildren<MediaPlayerCtrl>().UnLoad();
  89.  
  90.             // Stop audio when target is lost
  91.             GetComponent<AudioSource>().Stop();
  92.         }
  93.     }
  94.  
  95.     #endregion // PUBLIC_METHODS
  96.  
  97.     #region PROTECTED_METHODS
  98.  
  99.     private IEnumerator GetAudioAndPlay(ArVideo entity)
  100.     {
  101.         WWW www = new WWW(entity.Audio.LocalPath);
  102.         yield return www;
  103.         Debug.Log("Load Audio");
  104.         GetComponent<AudioSource>().clip = www.GetAudioClip();
  105.         GetComponent<AudioSource>().Play();
  106.     }
  107.  
  108.  
  109.     protected virtual void OnTrackingFound()
  110.     {
  111.         var rendererComponents = GetComponentsInChildren<Renderer>(true);
  112.         var colliderComponents = GetComponentsInChildren<Collider>(true);
  113.         var canvasComponents = GetComponentsInChildren<Canvas>(true);
  114.  
  115.         // Enable rendering:
  116.         foreach (var component in rendererComponents)
  117.             component.enabled = true;
  118.  
  119.         // Enable colliders:
  120.         foreach (var component in colliderComponents)
  121.             component.enabled = true;
  122.  
  123.         // Enable canvas':
  124.         foreach (var component in canvasComponents)
  125.             component.enabled = true;
  126.     }
  127.  
  128.  
  129.     protected virtual void OnTrackingLost()
  130.     {
  131.         var rendererComponents = GetComponentsInChildren<Renderer>(true);
  132.         var colliderComponents = GetComponentsInChildren<Collider>(true);
  133.         var canvasComponents = GetComponentsInChildren<Canvas>(true);
  134.  
  135.         // Disable rendering:
  136.         foreach (var component in rendererComponents)
  137.             component.enabled = false;
  138.  
  139.         // Disable colliders:
  140.         foreach (var component in colliderComponents)
  141.             component.enabled = false;
  142.  
  143.         // Disable canvas':
  144.         foreach (var component in canvasComponents)
  145.             component.enabled = false;
  146.     }
  147.  
  148.     #endregion // PROTECTED_METHODS
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement