I’ve already imported Vuforia 10.27 (latest version). But these errors keep showing:
Assets\Scripts\CloudRecognitionHandler.cs(8,55): error CS0246: The type or namespace name ‘IObjectRecoEventHandler’ could not be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\CloudRecognitionHandler.cs(24,31): error CS0246: The type or namespace name ‘TargetFinder’ could not be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\CloudRecognitionHandler.cs(29,29): error CS0246: The type or namespace name ‘TargetFinder’ could not be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\CloudRecognitionHandler.cs(34,31): error CS0246: The type or namespace name ‘TargetFinder’ could not be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\CloudRecognitionHandler.cs(47,35): error CS0246: The type or namespace name ‘TargetFinder’ could not be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\CloudRecognitionHandler.cs(56,56): error CS0246: The type or namespace name ‘TargetFinder’ could not be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\CloudRecognitionHandler.cs(73,28): error CS0246: The type or namespace name ‘TargetFinder’ could not be found (are you missing a using directive or an assembly reference?)
Assets\Scripts\CloudRecognitionHandler.cs(11,13): error CS0246: The type or namespace name ‘ObjectTracker’ could not be found (are you missing a using directive or an assembly reference?)
This is the script in question:
using UnityEngine;
using Vuforia;
using System.Collections;
using UnityEngine.Networking;
using UnityEngine.Video;
using System.Diagnostics;
public class CloudRecognitionHandler : MonoBehaviour, IObjectRecoEventHandler
{
public GameObject videoPlayerPrefab; // Prefab with a VideoPlayer component
private ObjectTracker objectTracker;
private CloudRecoBehaviour cloudRecoBehaviour;
private GameObject currentVideoPlayer;
void Start()
{
cloudRecoBehaviour = GetComponent<CloudRecoBehaviour>();
if (cloudRecoBehaviour)
{
cloudRecoBehaviour.RegisterEventHandler(this);
}
}
public void OnInitialized(TargetFinder targetFinder)
{
objectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
}
public void OnInitError(TargetFinder.InitState initError)
{
Debug.LogError("Cloud Reco initialization error: " + initError.ToString());
}
public void OnUpdateError(TargetFinder.UpdateState updateError)
{
Debug.LogError("Cloud Reco update error: " + updateError.ToString());
}
public void OnStateChanged(bool scanning)
{
if (scanning)
{
objectTracker.TargetFinder.ClearTrackables(false);
}
}
public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
{
TargetFinder.CloudRecoSearchResult cloudRecoSearchResult = (TargetFinder.CloudRecoSearchResult)targetSearchResult;
string targetId = cloudRecoSearchResult.UniqueTargetId;
// Fetch the video URL from your document using the targetId
StartCoroutine(FetchVideoUrl(targetId, cloudRecoSearchResult));
}
private IEnumerator FetchVideoUrl(string targetId, TargetFinder.CloudRecoSearchResult cloudRecoSearchResult)
{
string documentUrl = "https://your-api-endpoint.com/getVideoUrl?targetId=" + targetId;
UnityWebRequest www = UnityWebRequest.Get(documentUrl);
yield return www.SendWebRequest();
if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError(www.error);
}
else
{
string videoUrl = www.downloadHandler.text;
PlayVideo(cloudRecoSearchResult, videoUrl);
}
}
private void PlayVideo(TargetFinder.CloudRecoSearchResult cloudRecoSearchResult, string videoUrl)
{
if (currentVideoPlayer != null)
{
Destroy(currentVideoPlayer);
}
currentVideoPlayer = Instantiate(videoPlayerPrefab);
currentVideoPlayer.transform.position = cloudRecoSearchResult.Position;
currentVideoPlayer.transform.rotation = cloudRecoSearchResult.Rotation;
VideoPlayer videoPlayer = currentVideoPlayer.GetComponent<VideoPlayer>();
videoPlayer.url = videoUrl;
videoPlayer.Play();
}
}