public List <ARReferenceObject> LoadReferenceObjectsInSet() { List <ARReferenceObject> listRefObjects = new List <ARReferenceObject> (); if (UnityARSessionNativeInterface.IsARKit_2_0_Supported() == false) { return(listRefObjects); } string folderPath = Application.streamingAssetsPath + "/ARReferenceObjects/" + resourceGroupName + ".arresourcegroup"; string contentsJsonPath = Path.Combine(folderPath, "Contents.json"); ARResourceGroupContents resGroupContents = JsonUtility.FromJson <ARResourceGroupContents>(File.ReadAllText(contentsJsonPath)); foreach (ARResourceGroupResource arrgr in resGroupContents.resources) { string objectFolderPath = Path.Combine(folderPath, arrgr.filename); string objJsonPath = Path.Combine(objectFolderPath, "Contents.json"); ARReferenceObjectResourceContents resourceContents = JsonUtility.FromJson <ARReferenceObjectResourceContents> (File.ReadAllText(objJsonPath)); string fileToLoad = Path.Combine(objectFolderPath, resourceContents.objects [0].filename); ARReferenceObject arro = ARReferenceObject.Load(fileToLoad); arro.name = resourceContents.referenceObjectName; listRefObjects.Add(arro); } return(listRefObjects); }
static void AddReferenceObjectsSetAssetToStreamingAssets(ARReferenceObjectsSetAsset aros, string pathToBuiltProject) { List <ARReferenceObjectAsset> processedObjects = new List <ARReferenceObjectAsset> (); ARResourceGroupContents groupContents = new ARResourceGroupContents(); groupContents.info = new ARResourceGroupInfo(); groupContents.info.author = "xcode"; groupContents.info.version = 1; //On iOS, StreamingAssets end up at /Data/Raw string folderToCreate = "Data/Raw/ARReferenceObjects/" + aros.resourceGroupName + ".arresourcegroup"; string folderFullPath = Path.Combine(pathToBuiltProject, folderToCreate); Directory.CreateDirectory(folderFullPath); foreach (ARReferenceObjectAsset arro in aros.referenceObjectAssets) { if (!processedObjects.Contains(arro)) { processedObjects.Add(arro); //get rid of dupes AddReferenceObjectAssetToStreamingAssets(arro, folderFullPath, folderToCreate); } } groupContents.resources = new ARResourceGroupResource[processedObjects.Count]; int index = 0; foreach (ARReferenceObjectAsset arro in processedObjects) { groupContents.resources [index] = new ARResourceGroupResource(); groupContents.resources [index].filename = arro.objectName + ".arreferenceobject"; index++; } string contentsJsonPath = Path.Combine(folderFullPath, "Contents.json"); File.WriteAllText(contentsJsonPath, JsonUtility.ToJson(groupContents, true)); }
static void AddReferenceImagesSetToAssetCatalog(ARReferenceImagesSet aris, string pathToBuiltProject, PBXProject project) { List <ARReferenceImage> processedImages = new List <ARReferenceImage> (); ARResourceGroupContents groupContents = new ARResourceGroupContents(); groupContents.info = new ARResourceGroupInfo(); groupContents.info.author = "xcode"; groupContents.info.version = 1; string folderToCreate = "Unity-iPhone/Images.xcassets/" + aris.resourceGroupName + ".arresourcegroup"; string folderFullPath = Path.Combine(pathToBuiltProject, folderToCreate); Directory.CreateDirectory(folderFullPath); project.AddFolderReference(folderFullPath, folderToCreate); foreach (ARReferenceImage arri in aris.referenceImages) { if (!processedImages.Contains(arri)) { processedImages.Add(arri); //get rid of dupes AddReferenceImageToResourceGroup(arri, folderFullPath, folderToCreate, project); } } groupContents.resources = new ARResourceGroupResource[processedImages.Count]; int index = 0; foreach (ARReferenceImage arri in processedImages) { groupContents.resources [index] = new ARResourceGroupResource(); groupContents.resources [index].filename = arri.imageName + ".arreferenceimage"; index++; } string contentsJsonPath = Path.Combine(folderFullPath, "Contents.json"); File.WriteAllText(contentsJsonPath, JsonUtility.ToJson(groupContents, true)); project.AddFile(contentsJsonPath, Path.Combine(folderToCreate, "Contents.json")); }