Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*==============================================================================
- Copyright (c) 2017 PTC Inc. All Rights Reserved.
- Copyright (c) 2010-2014 Qualcomm Connected Experiences, Inc.
- All Rights Reserved.
- Confidential and Proprietary - Protected under copyright and other laws.
- ==============================================================================*/
- using UnityEngine;
- using Vuforia;
- /// <summary>
- /// A custom handler that implements the ITrackableEventHandler interface.
- ///
- /// Changes made to this file could be overwritten when upgrading the Vuforia version.
- /// When implementing custom event handler behavior, consider inheriting from this class instead.
- /// </summary>
- public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
- {
- public string m_strFileName;
- #region PROTECTED_MEMBER_VARIABLES
- protected TrackableBehaviour mTrackableBehaviour;
- #endregion // PROTECTED_MEMBER_VARIABLES
- #region UNITY_MONOBEHAVIOUR_METHODS
- protected virtual void Start()
- {
- mTrackableBehaviour = GetComponent<TrackableBehaviour>();
- if (mTrackableBehaviour)
- mTrackableBehaviour.RegisterTrackableEventHandler(this);
- }
- protected virtual void OnDestroy()
- {
- if (mTrackableBehaviour)
- mTrackableBehaviour.UnregisterTrackableEventHandler(this);
- }
- #endregion // UNITY_MONOBEHAVIOUR_METHODS
- #region PUBLIC_METHODS
- /// <summary>
- /// Implementation of the ITrackableEventHandler function called when the
- /// tracking state changes.
- /// </summary>
- public void OnTrackableStateChanged(
- TrackableBehaviour.Status previousStatus,
- TrackableBehaviour.Status newStatus)
- {
- if (newStatus == TrackableBehaviour.Status.DETECTED ||
- newStatus == TrackableBehaviour.Status.TRACKED ||
- newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
- {
- Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
- OnTrackingFound();
- var entity = RemoteResouceManager.GetByUrl(m_strFileName);
- GetComponentInChildren<MediaPlayerCtrl>().Load(entity.Video.LocalPath);
- StartCoroutine(GetAudioAndPlay(entity));
- }
- else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
- newStatus == TrackableBehaviour.Status.NO_POSE)
- {
- Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
- OnTrackingLost();
- // Stop video when target is lost
- GetComponentInChildren<MediaPlayerCtrl>().UnLoad();
- // Stop audio when target is lost
- GetComponent<AudioSource>().Stop();
- }
- else
- {
- // For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
- // Vuforia is starting, but tracking has not been lost or found yet
- // Call OnTrackingLost() to hide the augmentations
- OnTrackingLost();
- // Stop video when target is lost
- GetComponentInChildren<MediaPlayerCtrl>().UnLoad();
- // Stop audio when target is lost
- GetComponent<AudioSource>().Stop();
- }
- }
- #endregion // PUBLIC_METHODS
- #region PROTECTED_METHODS
- private IEnumerator GetAudioAndPlay(ArVideo entity)
- {
- WWW www = new WWW(entity.Audio.LocalPath);
- yield return www;
- Debug.Log("Load Audio");
- GetComponent<AudioSource>().clip = www.GetAudioClip();
- GetComponent<AudioSource>().Play();
- }
- protected virtual void OnTrackingFound()
- {
- var rendererComponents = GetComponentsInChildren<Renderer>(true);
- var colliderComponents = GetComponentsInChildren<Collider>(true);
- var canvasComponents = GetComponentsInChildren<Canvas>(true);
- // Enable rendering:
- foreach (var component in rendererComponents)
- component.enabled = true;
- // Enable colliders:
- foreach (var component in colliderComponents)
- component.enabled = true;
- // Enable canvas':
- foreach (var component in canvasComponents)
- component.enabled = true;
- }
- protected virtual void OnTrackingLost()
- {
- var rendererComponents = GetComponentsInChildren<Renderer>(true);
- var colliderComponents = GetComponentsInChildren<Collider>(true);
- var canvasComponents = GetComponentsInChildren<Canvas>(true);
- // Disable rendering:
- foreach (var component in rendererComponents)
- component.enabled = false;
- // Disable colliders:
- foreach (var component in colliderComponents)
- component.enabled = false;
- // Disable canvas':
- foreach (var component in canvasComponents)
- component.enabled = false;
- }
- #endregion // PROTECTED_METHODS
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement