Esempio n. 1
0
    private void CheckResolveProgress()
    {
        numOfSuccess = 0;
        numOfFailed  = 0;
        numOfUnable  = 0;
        for (i = 0; i < numOfToBeResolved; i++)
        {
            _arDebugManager.LogInfo($"#{i + 1}");
            try
            {
                if (cloudAnchorList[i])
                {
                    CloudAnchorState cloudAnchorState = cloudAnchorList[i].cloudAnchorState;

                    if (cloudAnchorState == CloudAnchorState.Success)
                    {
                        _arDebugManager.LogInfo($"#{i + 1}, CloudAnchorId: {cloudAnchorList[i].cloudAnchorId} resolved");

                        resolver.Invoke(cloudAnchorList[i].transform, i);
                        // _arPlacementManager.ReCreatePlacement(cloudAnchor.transform, i);
                        numOfSuccess++;
                    }
                    else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
                    {
                        _arDebugManager.LogError($"Fail to resolve Cloud Anchor #{(i + 1).ToString()} with state: {cloudAnchorState}");
                        numOfFailed++;
                    }
                    else
                    {
                        _arDebugManager.LogInfo($"CheckResolveProgress #{(i + 1).ToString()}  id {cloudAnchorList[i].cloudAnchorId}");
                    }
                }
                else
                {
                    numOfUnable++;
                    _arDebugManager.LogError($"Unable to resolve cloud achor #{i + 1} id {cloudAnchorList[i].cloudAnchorId}, numOfUnable = {numOfUnable}");
                }
            }
            catch (System.NullReferenceException e)
            {
                numOfUnable++;
                _arDebugManager.LogError($"Unable to resolve cloud achor #{i + 1} id {cloudAnchorList[i].cloudAnchorId}, numOfUnable = {numOfUnable}");
            }
        }

        _arDebugManager.LogInfo($"numOfSuccess = {numOfSuccess}, numOfFailed = {numOfFailed}, numOfUnable = {numOfUnable}");

        if (numOfUnable != 0 || numOfFailed != 0)
        {
            _arDebugManager.LogInfo($"Too much unable/failed to resolve, please resolve again");
            anchorResolveInProgress = false;
            _arPlacementManager.RemovePlacements();
        }

        if (numOfSuccess == numOfToBeResolved)
        {
            anchorResolveInProgress = false;
            AverageWorldOrigin();
        }
    }
Esempio n. 2
0
        /// <summary>
        /// Update the anchor if resolving Cloud Anchor is success.
        /// </summary>
        private void UpdateResolvedCloudAnchor()
        {
            if (_cloudAnchor == null)
            {
                Debug.LogError("No Cloud Anchor.");
                return;
            }

            CloudAnchorState cloudAnchorState = _cloudAnchor.cloudAnchorState;

            if (cloudAnchorState == CloudAnchorState.Success)
            {
                transform.SetParent(_cloudAnchor.transform, false);
                _cloudAnchorsExampleController.OnAnchorResolved(
                    true,
                    "Successfully resolved Cloud Anchor.");
                _cloudAnchorsExampleController.WorldOrigin = transform;
                _anchorMesh.SetActive(true);

                // Mark resolving timeout passed so it won't fire OnResolvingTimeoutPassed event.
                _passedResolvingTimeout = true;
                _shouldUpdatePoint      = false;
            }
            else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
            {
                _cloudAnchorsExampleController.OnAnchorResolved(
                    false, "Fail to resolve Cloud Anchor with state: " + cloudAnchorState);
                _shouldUpdatePoint = false;
            }
        }
Esempio n. 3
0
    // Update is called once per frame
    void Update()
    {
        if (m_AppMode == AppMode.WaitingForResolvedReferencePoint)
        {
            OutputText.text = m_AppMode.ToString();

            CloudAnchorState cloudReferenceState =
                m_CloudReferencePoint.cloudAnchorState;
            OutputText.text += " - " + cloudReferenceState.ToString();

            if (cloudReferenceState == CloudAnchorState.Success)
            {
                GameObject cloudAnchor = Instantiate(
                    ResolvedPointPrefab,
                    Vector3.zero,
                    Quaternion.identity);
                cloudAnchor.transform.SetParent(
                    m_CloudReferencePoint.transform, false);
                m_CloudReferencePoint = null;
                j++;
                if (j == paths.Count - 1)
                {
                    m_AppMode = AppMode.FinishApp;
                }
                printScreen(paths[j]);
            }
        }
        if (m_AppMode == AppMode.FinishApp)
        {
            OutputText.text = "Hedefe Ulaştınız!";
        }
    }
Esempio n. 4
0
        /// <summary>
        /// Update the anchor if hosting Cloud Anchor is success.
        /// </summary>
        private void UpdateHostedCloudAnchor()
        {
            if (_cloudAnchor == null)
            {
                Debug.LogError("No Cloud Anchor.");
                return;
            }

            CloudAnchorState cloudAnchorState = _cloudAnchor.cloudAnchorState;

            if (cloudAnchorState == CloudAnchorState.Success)
            {
                Debug.Log("cloud id : " + _clouAnchorId);
                CmdSetCloudAnchorId(_cloudAnchor.cloudAnchorId);
                _cloudAnchorsExampleController.OnAnchorHosted(
                    true, $"Successfully hosted Cloud Anchor. cloud id : {_clouAnchorId}");
                _shouldUpdatePoint = false;
            }
            else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
            {
                _cloudAnchorsExampleController.OnAnchorHosted(false,
                                                              "Fail to host Cloud Anchor with state: " + cloudAnchorState);
                _shouldUpdatePoint = false;
            }
        }
Esempio n. 5
0
    // Update is called once per frame
    void Update()
    {
        if (m_AppMode == AppMode.TouchToHostCloudReferencePoint)
        {
            OutputText.text = m_AppMode.ToString();

            if (Input.touchCount >= 1 &&
                Input.GetTouch(0).phase == TouchPhase.Began &&
                !EventSystem.current.IsPointerOverGameObject(
                    Input.GetTouch(0).fingerId))
            {
                List <ARRaycastHit> hitResults = new List <ARRaycastHit>();
                RaycastManager.Raycast(Input.GetTouch(0).position, hitResults);
                if (hitResults.Count > 0)
                {
                    Pose pose = hitResults[0].pose;

                    // dokundurulan yerde referans noktası oluşturuyor.
                    ARAnchor referencePoint =
                        AnchorManager.AddAnchor(hitResults[0].pose);

                    // bulut referans noktasını oluşturuyor.
                    m_CloudReferencePoint =
                        AnchorManager.HostCloudAnchor(referencePoint);
                    if (m_CloudReferencePoint == null)
                    {
                        OutputText.text = "Create Failed!";
                        return;
                    }

                    // Wait for the reference point to be ready.
                    m_AppMode = AppMode.WaitingForHostedReferencePoint;
                }
            }
        }
        else if (m_AppMode == AppMode.WaitingForHostedReferencePoint)
        {
            OutputText.text = m_AppMode.ToString();

            CloudAnchorState cloudReferenceState =
                m_CloudReferencePoint.cloudAnchorState;
            OutputText.text += " - " + cloudReferenceState.ToString();

            if (cloudReferenceState == CloudAnchorState.Success)
            {
                GameObject cloudAnchor = Instantiate(
                    HostedPointPrefab,
                    Vector3.zero,
                    Quaternion.identity);
                cloudAnchor.transform.SetParent(
                    m_CloudReferencePoint.transform, false);
                panel.gameObject.SetActive(true);
                m_CloudReferenceId    = m_CloudReferencePoint.cloudAnchorId;
                cloudAnchorId.text    = m_CloudReferenceId;
                m_CloudReferencePoint = null;
                m_AppMode             = AppMode.TouchToHostCloudReferencePoint;
            }
        }
    }
Esempio n. 6
0
    private void CheckHostingProgress()
    {
        numOfSuccess = 0;
        numOfFailed  = 0;
        numOfUnable  = 0;
        for (i = 0; i < numOfQueued; i++)
        {
            if (cloudAnchorList[i] != null)
            {
                CloudAnchorState cloudAnchorState = cloudAnchorList[i].cloudAnchorState;
                if (cloudAnchorState == CloudAnchorState.Success)
                {
                    // _arDebugManager.LogError($"Anchor #{(i + 1).ToString()} successfully hosted");

                    // keep track of cloud anchors added
                    anchorToResolveList[i] = cloudAnchorList[i].cloudAnchorId;
                    numOfSuccess++;
                }
                else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
                {
                    _arDebugManager.LogError($"Fail to host anchor #{(i + 1).ToString()} with state: {cloudAnchorState}");
                    numOfFailed++;
                }
                else
                {
                    // arDebugManager.LogInfo($"CheckHostingProgress #{(i + 1).ToString()}");
                    // arDebugManager.LogInfo($"#{(i + 1).ToString()}: NumOfCloudAnchor() = {NumOfCloudAnchor().ToString()}");
                }
            }
            else
            {
                numOfUnable++;
                _arDebugManager.LogError($"Unable to host cloud anchor #{(i + 1).ToString()}, numOfUnable ={numOfUnable}");
                // TODO: Remove the broken anchor and allow ARPlacementManger to add one new anchor to pendingHostAnchorList
            }
        }

        if (numOfFailed != 0 || numOfUnable != 0)
        {
            _arDebugManager.LogInfo($"Too much unable/failed to host, please pick anchor again");
            anchorUpdateInProgress = false;
            _arPlacementManager.RemovePlacements();
        }

        if (numOfSuccess == numOfQueued)
        {
            anchorUpdateInProgress = false;
            numOfToBeResolved      = numOfSuccess;

            for (i = 0; i < numOfSuccess; i++)
            {
                _arDebugManager.LogError($"Anchor #{(i + 1).ToString()} successfully hosted");
            }

            _arCloudAnchorsMetaManger.SendUpdate(anchorToResolveList);
        }
    }
    private void CheckHostingProgress()
    {
        numOfSuccess = 0;
        numOfFailed  = 0;
        numOfUnable  = 0;
        for (i = 0; i < numOfQueued; i++)
        {
            if (cloudAnchorList[i] != null)
            {
                CloudAnchorState cloudAnchorState = cloudAnchorList[i].cloudAnchorState;
                if (cloudAnchorState == CloudAnchorState.Success)
                {
                    // _arDebugManager.LogError($"Anchor #{(i + 1).ToString()} successfully hosted");

                    // keep track of cloud anchors added
                    anchorToResolveList[i] = cloudAnchorList[i].cloudAnchorId;
                    numOfSuccess++;
                }
                else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
                {
                    _arDebugManager.LogError($"Fail to host anchor #{(i + 1).ToString()} with state: {cloudAnchorState}");
                    numOfFailed++;
                }
            }
            else
            {
                numOfUnable++;
                // _arDebugManager.LogError($"Firsttttttttt #{(i + 1).ToString()}, numOfUnable ={numOfUnable}");
                _arDebugManager.LogError($"Unable to host cloud anchor #{(i + 1).ToString()}, numOfUnable ={numOfUnable}");
            }
        }

        if (numOfFailed != 0 || numOfUnable != 0)
        {
            _arDebugManager.LogInfo($"Too much unable/failed to host, please pick anchor again");
            anchorUpdateInProgress = false;
            _arPlacementManager.RemovePlacements();
        }

        if (numOfSuccess == numOfQueued)
        {
            anchorUpdateInProgress = false;
            numOfToBeResolved      = numOfSuccess;

            // _cloudAnchorsMetaManager.join((int)quality);
            // _cloudAnchorsMetaManager.join();
            // _cloudAnchorsMetaManager.uploadAnchorToResolveList(anchorToResolveList);

            for (i = 0; i < numOfSuccess; i++)
            {
                _arDebugManager.LogError($"Anchor #{(i + 1).ToString()} successfully hosted, id = {anchorToResolveList[i]}");
            }

            _arDebugManager.LogError($"Cloud Anchors ID uploaded to session");
        }
    }
    private void CheckResolveProgress()
    {
        CloudAnchorState cloudAnchorState = cloudanchor.cloudAnchorState;

        if (cloudAnchorState == CloudAnchorState.Success)
        {
            debugtext.text       = "Anchor successfully hosted";
            anchorHostInProgress = false;

            anchorToResolve = cloudanchor.cloudAnchorId;
        }
        else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
        {
            anchorHostInProgress = false;
            debugtext.text       = "Fail to host anchor with state";
        }
    }
    private void CheckHostingProgress()
    {
        CloudAnchorState cloudanchorstate = cloudanchor.cloudAnchorState;



        if (cloudanchorstate == CloudAnchorState.Success)
        {
            anchorHostInProgress = false;

            anchorToResolve = cloudanchor.cloudAnchorId;
        }
        else if (cloudanchorstate != CloudAnchorState.TaskInProgress)
        {
            anchorHostInProgress = false;
            debugtext.text       = "state : CloudAnchorState.TaskInProgress";
        }
    }
Esempio n. 10
0
    private void CheckHostingProgress()
    {
        CloudAnchorState cloudAnchorState = cloudAnchor.cloudAnchorState;

        if (cloudAnchorState == CloudAnchorState.Success)
        {
            // ARDebugManager.Instance.LogError("Anchor successfully hosted");

            anchorUpdateInProgress = false;

            // keep track of cloud anchors added
            anchorToResolve = cloudAnchor.cloudAnchorId;
        }
        else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
        {
            //  ARDebugManager.Instance.LogError($"Fail to host anchor with state: {cloudAnchorState}");
            anchorUpdateInProgress = false;
        }
    }
Esempio n. 11
0
    private void CheckResolveProgress()
    {
        CloudAnchorState cloudAnchorState = cloudAnchor.cloudAnchorState;

        // ARDebugManager.Instance.LogInfo($"ResolveCloudAnchor state {cloudAnchorState}");

        if (cloudAnchorState == CloudAnchorState.Success)
        {
            // ARDebugManager.Instance.LogInfo($"CloudAnchorId: {cloudAnchor.cloudAnchorId} resolved");

            resolver.Invoke(cloudAnchor.transform);

            anchorResolveInProgress = false;
        }
        else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
        {
            // ARDebugManager.Instance.LogError($"Fail to resolve Cloud Anchor with state: {cloudAnchorState}");

            anchorResolveInProgress = false;
        }
    }
Esempio n. 12
0
        /// <summary>
        /// Update the anchor if hosting Cloud Anchor is success.
        /// </summary>
        private void _UpdateHostedCloudAnchor()
        {
            if (m_CloudAnchor == null)
            {
                Debug.LogError("No Cloud Anchor.");
                return;
            }

            CloudAnchorState cloudAnchorState = m_CloudAnchor.cloudAnchorState;

            if (cloudAnchorState == CloudAnchorState.Success)
            {
                CmdSetCloudAnchorId(m_CloudAnchor.cloudAnchorId);
                m_CloudAnchorsExampleController.OnAnchorHosted(
                    true, "Successfully hosted Cloud Anchor.");
                m_ShouldUpdatePoint = false;
            }
            else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
            {
                m_CloudAnchorsExampleController.OnAnchorHosted(false,
                                                               "Fail to host Cloud Anchor with state: " + cloudAnchorState);
                m_ShouldUpdatePoint = false;
            }
        }
Esempio n. 13
0
    void Update()
    {
        if (m_AppMode == AppMode.TouchToHostCloudAnchor)
        {
            OutputText.text = m_AppMode.ToString();

            if (Input.touchCount >= 1 &&
                Input.GetTouch(0).phase == TouchPhase.Began &&
                !EventSystem.current.IsPointerOverGameObject(
                    Input.GetTouch(0).fingerId))
            {
                List <ARRaycastHit> hitResults = new List <ARRaycastHit>();
                RaycastManager.Raycast(Input.GetTouch(0).position, hitResults);
                if (hitResults.Count > 0)
                {
                    Pose pose = hitResults[0].pose;

                    // Create a reference point at the touch.
                    ARAnchor anchor =
                        AnchorManager.AddAnchor(
                            hitResults[0].pose);

                    // Create Cloud Reference Point.
                    m_CloudAnchor =
                        AnchorManager.HostCloudAnchor(
                            anchor);
                    if (m_CloudAnchor == null)
                    {
                        OutputText.text = "Create Failed!";
                        return;
                    }

                    // Wait for the reference point to be ready.
                    m_AppMode = AppMode.WaitingForHostedAnchor;
                }
            }
        }
        else if (m_AppMode == AppMode.WaitingForHostedAnchor)
        {
            OutputText.text = m_AppMode.ToString();

            CloudAnchorState cloudAnchorState =
                m_CloudAnchor.cloudAnchorState;
            OutputText.text += " - " + cloudAnchorState.ToString();

            if (cloudAnchorState == CloudAnchorState.Success)
            {
                GameObject cloudAnchor = Instantiate(
                    HostedPointPrefab,
                    Vector3.zero,
                    Quaternion.identity);
                cloudAnchor.transform.SetParent(
                    m_CloudAnchor.transform, false);

                cloudAnchorIdQueue.Enqueue(m_CloudAnchor.cloudAnchorId);
                StartCoroutine(saveAnchor(m_CloudAnchor.cloudAnchorId, GPS.Instance.latitude, GPS.Instance.longitude));
                createMessage(m_CloudAnchor.cloudAnchorId);
                m_CloudAnchor = null;

                m_AppMode = AppMode.ResolveCloudAnchor;
            }
        }
        else if (m_AppMode == AppMode.ResolveCloudAnchor)
        {
            OutputText.text = m_AppMode.ToString();
            //if there is a breadcrumb left to load
            if (cloudAnchorIdQueue.Count >= 1)
            {
                m_CloudAnchorId = cloudAnchorIdQueue.Dequeue();
                OutputText.text = m_CloudAnchorId;
                m_CloudAnchor   = AnchorManager.ResolveCloudAnchorId(m_CloudAnchorId);
                startTime       = DateTime.Now;

                if (m_CloudAnchor == null)
                {
                    OutputText.text = "Resolve Failed!";
                    m_CloudAnchorId = string.Empty;
                    //m_AppMode = AppMode.TouchToHostCloudAnchor;
                    return;
                }

                m_CloudAnchorId = string.Empty;

                // Wait for the reference point to be ready.
                m_AppMode = AppMode.WaitingForResolvedAnchor;
            }
            else
            {
                //if the queue is empty, return to placing anchors
                m_AppMode = AppMode.TouchToHostCloudAnchor;
            }
        }
        else if (m_AppMode == AppMode.WaitingForResolvedAnchor)
        {
            OutputText.text = m_AppMode.ToString();

            CloudAnchorState cloudAnchorState =
                m_CloudAnchor.cloudAnchorState;
            OutputText.text += " - " + cloudAnchorState.ToString();

            if (cloudAnchorState == CloudAnchorState.Success)
            {
                GameObject cloudAnchor = Instantiate(
                    ResolvedPointPrefab,
                    Vector3.zero,
                    Quaternion.identity);
                cloudAnchor.transform.SetParent(
                    m_CloudAnchor.transform, false);

                StartCoroutine(getMessage(m_CloudAnchor.cloudAnchorId, cloudAnchor.GetComponentInChildren <Text>()));

                m_CloudAnchor = null;

                if (cloudAnchorIdQueue.Count <= 0)
                {
                    //if there are no more anchors to process, go back to placing anchors
                    m_AppMode = AppMode.TouchToHostCloudAnchor;
                }
                else
                {
                    //if there are more anchors to resolve, do that.
                    m_AppMode = AppMode.ResolveCloudAnchor;
                }
            }
            else if (cloudAnchorState == CloudAnchorState.TaskInProgress)
            {
                if (startTime.HasValue && (DateTime.Now - startTime.Value).TotalSeconds >= maxWait)
                {
                    m_CloudAnchor = null;

                    if (cloudAnchorIdQueue.Count <= 0)
                    {
                        //if there are no more anchors to process, go back to placing anchors
                        m_AppMode = AppMode.TouchToHostCloudAnchor;
                    }
                    else
                    {
                        //if there are more anchors to resolve, do that.
                        m_AppMode = AppMode.ResolveCloudAnchor;
                    }
                }
            }
            else if (cloudAnchorState == CloudAnchorState.ErrorResolvingCloudIdNotFound)
            {
                m_CloudAnchor = null;

                if (cloudAnchorIdQueue.Count <= 0)
                {
                    //if there are no more anchors to process, go back to placing anchors
                    m_AppMode = AppMode.TouchToHostCloudAnchor;
                }
                else
                {
                    //if there are more anchors to resolve, do that.
                    m_AppMode = AppMode.ResolveCloudAnchor;
                }
            }
        }
        else if (m_AppMode == AppMode.WaitingForQueue)
        {
            if (isQueueReady)
            {
                m_AppMode = AppMode.ResolveCloudAnchor;
                return;
            }
            //check if the gps has initialized and the populate coroutine has not started
            else if (!isQueueStarted && GPS.Instance.latitude != 0)
            {
                StartCoroutine(PopulateAnchorQueue(GPS.Instance.latitude, GPS.Instance.longitude));
                isQueueStarted = true;
            }
        }
    }
Esempio n. 14
0
    // Update is called once per frame
    void Update()
    {
        if (m_AppMode == AppMode.TouchToHostCloudReferencePoint)
        {
            OutputText.text = m_AppMode.ToString();

            // If the user presses a non-ui part of the screen
            if (Input.touchCount >= 1 && Input.GetTouch(0).phase == TouchPhase.Began && !EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
            {
                // Raycast where the user touched the screen
                List <ARRaycastHit> hitResults = new List <ARRaycastHit>();
                RaycastManager.Raycast(Input.GetTouch(0).position, hitResults);

                // If the user touched a surface in AR
                if (hitResults.Count > 0)
                {
                    // Create a cloud anchor where the user touches in world space
                    Pose     pose     = hitResults[0].pose;
                    ARAnchor m_anchor = AnchorManager.AddAnchor(pose);
                    m_CloudAnchor = AnchorManager.HostCloudAnchor(m_anchor);

                    if (m_CloudAnchor == null)
                    {
                        Debug.LogError("Create Failed!");
                        return;
                    }

                    // Flag program to wait for the cloud anchor to register
                    m_AppMode = AppMode.WaitingForHostedReferencePoint;
                }
            }
        }
        else if (m_AppMode == AppMode.WaitingForHostedReferencePoint)
        {
            OutputText.text = m_AppMode.ToString();

            CloudAnchorState cloudAnchorState = m_CloudAnchor.cloudAnchorState;

            OutputText.text += " - " + cloudAnchorState.ToString();

            if (cloudAnchorState == CloudAnchorState.Success)
            {
                // Place a HostedPointPrefab where the cloud anchor successfully spawned
                GameObject cloudAnchor = Instantiate(HostedPointPrefab, Vector3.zero, Quaternion.identity);
                cloudAnchor.transform.SetParent(m_CloudAnchor.transform, false);

                m_CloudReferenceId = m_CloudAnchor.cloudAnchorId;

                // Make the user resolve the anchor next
                m_AppMode = AppMode.TouchToResolveCloudReferencePoint;
            }
        }
        else if (m_AppMode == AppMode.TouchToResolveCloudReferencePoint)
        {
            OutputText.text = m_CloudReferenceId;

            // If the user taps the screen
            if (Input.touchCount >= 1 && Input.GetTouch(0).phase == TouchPhase.Began && !EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
            {
                // Attempt to resolve the anchor that you just instantiated
                m_CloudAnchor = AnchorManager.ResolveCloudAnchorId(m_CloudReferenceId);

                if (m_CloudAnchor == null)
                {
                    OutputText.text    = "Resolve failed!";
                    m_CloudReferenceId = string.Empty;
                    m_AppMode          = AppMode.TouchToHostCloudReferencePoint;
                    return;
                }

                m_CloudReferenceId = string.Empty;

                m_AppMode = AppMode.WaitingForResolvedReferencePoint;
            }
        }
        else if (m_AppMode == AppMode.WaitingForResolvedReferencePoint)
        {
            OutputText.text = m_AppMode.ToString();

            CloudAnchorState cloudAnchorState = m_CloudAnchor.cloudAnchorState;

            if (cloudAnchorState == CloudAnchorState.Success)
            {
                GameObject cloudAnchor = Instantiate(ResolvedPointPrefab, Vector3.zero, Quaternion.identity);
                cloudAnchor.transform.SetParent(m_CloudAnchor.transform, false);

                m_CloudAnchor = null;
                m_AppMode     = AppMode.TouchToHostCloudReferencePoint;
            }
            else if (cloudAnchorState != CloudAnchorState.TaskInProgress)
            {
                OutputText.text = "Invalid ID";
                m_AppMode       = AppMode.TouchToHostCloudReferencePoint;
            }

            Debug.Log(m_CloudReferenceId);
        }
    }