Exemple #1
0
    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"));
    }