Hey Guys I am Currently working on trying to get multiple cloud targets to work but nothing is going right. Here is my Event Handler Script:
/*==============================================================================Copyright (c) 2012-2014 Qualcomm Connected Experiences, Inc.All Rights Reserved.==============================================================================*/
using System;using UnityEngine;using Vuforia;
/// <summary>/// This MonoBehaviour implements the Cloud Reco Event handling for this sample./// It registers itself at the CloudRecoBehaviour and is notified of new search results as well as error messages/// The current state is visualized and new results are enabled using the TargetFinder API./// </summary>public class CloudRecoEventHandler : MonoBehaviour, ICloudRecoEventHandler{ #region PRIVATE_MEMBER_VARIABLES
public GameObject cardFront;public GameObject cardBack;public GameObject card2;
// ObjectTracker reference to avoid lookups private ObjectTracker mObjectTracker; private ContentManager mContentManager;
// the parent gameobject of the referenced ImageTargetTemplate - reused for all target search results private GameObject mParentOfImageTargetTemplate;
#endregion // PRIVATE_MEMBER_VARIABLES
#region EXPOSED_PUBLIC_VARIABLES
/// <summary> /// can be set in the Unity inspector to reference a ImageTargetBehaviour that is used for augmentations of new cloud reco results. /// </summary> public ImageTargetBehaviour ImageTargetTemplate;
#endregion
#region ICloudRecoEventHandler_IMPLEMENTATION
/// <summary> /// called when TargetFinder has been initialized successfully /// </summary> public void OnInitialized() { // get a reference to the Object Tracker, remember it mObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>(); mContentManager = (ContentManager)FindObjectOfType(typeof(ContentManager)); }
/// <summary> /// visualize initialization errors /// </summary> public void OnInitError(TargetFinder.InitState initError) { switch (initError) { case TargetFinder.InitState.INIT_ERROR_NO_NETWORK_CONNECTION: ErrorMsg.New("Network Unavailable", "Please check your internet connection and try again.", RestartApplication); break; case TargetFinder.InitState.INIT_ERROR_SERVICE_NOT_AVAILABLE: ErrorMsg.New("Service Unavailable", "Failed to initialize app because the service is not available."); break; } } /// <summary> /// visualize update errors /// </summary> public void OnUpdateError(TargetFinder.UpdateState updateError) { switch (updateError) { case TargetFinder.UpdateState.UPDATE_ERROR_AUTHORIZATION_FAILED: ErrorMsg.New("Authorization Error","The cloud recognition service access keys are incorrect or have expired."); break; case TargetFinder.UpdateState.UPDATE_ERROR_NO_NETWORK_CONNECTION: ErrorMsg.New("Network Unavailable","Please check your internet connection and try again."); break; case TargetFinder.UpdateState.UPDATE_ERROR_PROJECT_SUSPENDED: ErrorMsg.New("Authorization Error","The cloud recognition service has been suspended."); break; case TargetFinder.UpdateState.UPDATE_ERROR_REQUEST_TIMEOUT: ErrorMsg.New("Request Timeout","The network request has timed out, please check your internet connection and try again."); break; case TargetFinder.UpdateState.UPDATE_ERROR_SERVICE_NOT_AVAILABLE: ErrorMsg.New("Service Unavailable","The service is unavailable, please try again later."); break; case TargetFinder.UpdateState.UPDATE_ERROR_TIMESTAMP_OUT_OF_RANGE: ErrorMsg.New("Clock Sync Error","Please update the date and time and try again."); break; case TargetFinder.UpdateState.UPDATE_ERROR_UPDATE_SDK: ErrorMsg.New("Unsupported Version","The application is using an unsupported version of Vuforia."); break; } }
/// <summary> /// when we start scanning, unregister Trackable from the ImageTargetTemplate, then delete all trackables /// </summary> public void OnStateChanged(bool scanning) { if (scanning) { // clear all known trackables mObjectTracker.TargetFinder.ClearTrackables(false);
// hide the ImageTargetTemplate mContentManager.ShowObject(false); } } /// <summary> /// Handles new search results /// </summary> /// <param name="targetSearchResult"></param> public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult) { // This code demonstrates how to reuse an ImageTargetBehaviour for new search results and modifying it according to the metadata // Depending on your application, it can make more sense to duplicate the ImageTargetBehaviour using Instantiate(), // or to create a new ImageTargetBehaviour for each new result
// Vuforia will return a new object with the right script automatically if you use // TargetFinder.EnableTracking(TargetSearchResult result, string gameObjectName) string metadata = targetSearchResult.MetaData;
if (metadata == "Takahiro") { cardFront.SetActive (true); } else { cardFront.SetActive (false); }
if (metadata == "Susumu") { cardBack.SetActive (true); } else { cardBack.SetActive (false); }
if (metadata == "Kichiro") { card2.SetActive (true); } else { card2.SetActive (false); }
//Check if the metadata isn't null if(targetSearchResult.MetaData == null) { return; }
// First clear all trackables mObjectTracker.TargetFinder.ClearTrackables(false);
// enable the new result with the same ImageTargetBehaviour: ImageTargetBehaviour imageTargetBehaviour = mObjectTracker.TargetFinder.EnableTracking(targetSearchResult, mParentOfImageTargetTemplate) as ImageTargetBehaviour; //if extended tracking was enabled from the menu, we need to start the extendedtracking on the newly found trackble. if(CloudRecognitionUIEventHandler.ExtendedTrackingIsEnabled) { imageTargetBehaviour.ImageTarget.StartExtendedTracking(); } }
#endregion // ICloudRecoEventHandler_IMPLEMENTATION
#region UNTIY_MONOBEHAVIOUR_METHODS
/// <summary> /// register for events at the CloudRecoBehaviour /// </summary> void Start() { // look up the gameobject containing the ImageTargetTemplate: mParentOfImageTargetTemplate = ImageTargetTemplate.gameObject;
// intialize the ErrorMsg class ErrorMsg.Init();
// register this event handler at the cloud reco behaviour CloudRecoBehaviour cloudRecoBehaviour = GetComponent<CloudRecoBehaviour>(); if (cloudRecoBehaviour) { cloudRecoBehaviour.RegisterEventHandler(this); } }
/// <summary> /// draw the sample GUI and error messages /// </summary> void OnGUI() { // draw error messages in case there were any ErrorMsg.Draw(); }
#endregion UNTIY_MONOBEHAVIOUR_METHODS
#region PRIVATE_METHODS // callback for network-not-available error message private void RestartApplication() { Application.LoadLevel("Vuforia-1-About"); } #endregion PRIVATE_METHODS}
On The first metadata i have says:
"Takahiro"
On the second on it says:
"Susumu"
The Third Says:
"Kichiro"