예제 #1
0
    private void OnDestroy()
    {
        if (objectSpawner != null)
        {
            objectSpawner.OnObjectSpawned -= ObjectSpawner_OnObjectSpawned;
        }

        if (spatialAnchorManager != null)
        {
            spatialAnchorManager.DestroySession();
        }
    }
예제 #2
0
    void OnDestroy()
    {
        if (cloudManager != null && cloudManager.Session != null)
        {
            cloudManager.DestroySession();
        }

        if (currentWatcher != null)
        {
            currentWatcher.Stop();
            currentWatcher = null;
        }
    }
예제 #3
0
        /// <summary>
        ///     オブジェクトの後処理(廃棄)を実施します。
        /// </summary>
        public void OnDestroy()
        {
            try
            {
                if (cloudManager != null && cloudManager.Session != null)
                {
                    cloudManager.DestroySession();
                }

                if (currentWatcher != null)
                {
                    currentWatcher.Stop();
                    currentWatcher = null;
                }
            }
            catch (Exception e)
            {
                Debug.Log(e);
                throw;
            }
        }
        private async UniTask DemoRoutine()
        {
            _instructionUIPresenter.UpdateMessage("NearAnchor Demo");
            await _instructionUIPresenter.OnTriggerProceed().First();

            _instructionUIPresenter.UpdateMessage("1.最初に一つ目のアンカーを生成します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            // セッション開始
            await _spatialAnchorManager.StartSessionAsync();

            // 最初のアンカーの生成
            var firstAnchor = await CreateAnchorTask();

            _instructionUIPresenter.UpdateMessage("2.続けて周辺に接続されたアンカーを生成します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            _instructionUIPresenter.UpdateMessage("3.二つ目のアンカーを生成します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            // 周辺のアンカーの生成
            var secondAnchor = await CreateAnchorTask();

            _instructionUIPresenter.UpdateMessage("4.三つ目のアンカーを生成します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            var thirdAnchor = await CreateAnchorTask();

            _instructionUIPresenter.UpdateMessage("5.一度セッションを終了します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            await _spatialAnchorManager.ResetSessionAsync();

            _instructionUIPresenter.UpdateMessage("6.アンカーが配置されていることを確認します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            await GraphAnchorsTask(new[] { firstAnchor, secondAnchor, thirdAnchor }, Color.blue, new Vector3(0.08f, 0.2f, 0.08f));

            _instructionUIPresenter.UpdateMessage("7.もう一度セッションを終了します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            await _spatialAnchorManager.ResetSessionAsync();

            _instructionUIPresenter.UpdateMessage("8.一つ目のアンカーを画像情報から検知します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            var locatedFirstAnchor = (await LocateAnchorsTask(new[] { firstAnchor }, Color.green, new Vector3(0.2f, 0.08f, 0.08f))).ToList();

            Assert.IsTrue(locatedFirstAnchor.Count == 1);

            _instructionUIPresenter.UpdateMessage("9.残り二つのアンカーを接続情報から検知します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            await LocateNearAnchorsTask(locatedFirstAnchor[0], 2);

            _instructionUIPresenter.UpdateMessage("10.セッションを終了します");
            await _instructionUIPresenter.OnTriggerProceed().First();

            _anchorObjectPresenter.CleanAllAnchors();
            _spatialAnchorManager.DestroySession();
        }