private void onSessionUpdated(object sender, SessionUpdatedEventArgs args)
        {
            float progress = args.P0.Status.RecommendedForCreateProgress;

            enoughDataForSaving = progress >= 1.0;
            lock (progressLock) {
                if (currentDemoStep == DemoStep.SaveCloudAnchor)
                {
                    DecimalFormat decimalFormat = new DecimalFormat("00");
                    RunOnUiThread(() => {
                        string progressMessage = $"Scan progress is {progress.ToString("P0")}";
                        scanProgressText.Text  = progressMessage;
                    });

                    if (enoughDataForSaving && actionButton.Visibility != ViewStates.Visible)
                    {
                        // Enable the save button
                        RunOnUiThread(() => {
                            statusText.Text         = "Ready to save";
                            actionButton.Text       = "Save cloud anchor";
                            actionButton.Visibility = ViewStates.Visible;
                        });
                        currentDemoStep = DemoStep.SaveCloudAnchor;
                    }
                }
            }
        }
예제 #2
0
        private void CloudSpatialAnchorSession_SessionUpdated(object sender, SessionUpdatedEventArgs args)
        {
            SessionStatusIndicators[(int)SessionStatusIndicatorType.ReadyForCreate]       = args.Status.ReadyForCreateProgress;
            SessionStatusIndicators[(int)SessionStatusIndicatorType.RecommendedForCreate] = args.Status.RecommendedForCreateProgress;

            OnSessionUpdated?.Invoke(sender, args);
        }
예제 #3
0
        /// <summary>
        /// Called when the <see cref="Session"/> <see cref="CloudSpatialAnchorSession.SessionUpdated">SessionUpdated</see> event is fired.
        /// </summary>
        /// <param name="sender">
        /// The <see cref="Session"/>.
        /// </param>
        /// <param name="args">
        /// The event data.
        /// </param>
        protected virtual void OnSessionUpdated(object sender, SessionUpdatedEventArgs args)
        {
            // Update the cached session status
            sessionStatus = args.Status;

            // Raise the event
            SessionUpdated?.Invoke(this, args);
        }
예제 #4
0
 /// <summary>
 /// This is called when the session parameter (isReadyForCreate, RecommendedForCreateProgress, UserFeedback) changes
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private void CloudManager_SessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     if (waitingForMoreSpatialData)
     {
         float createProgress = args.Status.RecommendedForCreateProgress;
         logger.Log($"Progress {createProgress:0%}");
     }
 }
예제 #5
0
        private void CloudManager_SessionUpdated(object sender, SessionUpdatedEventArgs args)
        {
            _enoughDataToCreate = (args.Status.ReadyForCreateProgress >= 1);

            if (AzureSpatialAnchorManager.Instance.EnableProcessing && !IsSaving && !IsLocating)
            {
                SetStatusMessage(_enoughDataToCreate ? "Tap to place anchor(s)" : "Move your device to capture more environment data");
            }
        }
예제 #6
0
        private void _cloudAnchorSession_SessionUpdated(object sender, SessionUpdatedEventArgs args)
        {
            var status = args.Status;

            var userFeedback = GetSessionFeedback(status.UserFeedback);

            SessionFeedback = userFeedback ?? SessionFeedback;
            IsReady         = status.RecommendedForCreateProgress >= 1.0;
            ReadyProgress   = Mathf.Min(status.RecommendedForCreateProgress, 1.0f);
        }
        private void SpatialAnchorsSession_SessionUpdated(object sender, SessionUpdatedEventArgs e)
        {
            float createScanProgress = Math.Min(e.Args.Status.RecommendedForCreateProgress, 1);

            Debug.WriteLine($"Create scan progress: {createScanProgress:0%}");

            this.CreateScanningProgressValue = createScanProgress;

            this.OnSessionUpdated?.Invoke(sender, e.Args);
        }
        private void CloudSession_SessionUpdated(object sender, SessionUpdatedEventArgs args)
        {
            var status = args.Status;

            ScannedPercent = status.RecommendedForCreateProgress;
            if (ScannedPercent < 1)
            {
                Debug.Log(DEBUG_FILTER + "recommendedForCreate: " + args.Status.RecommendedForCreateProgress);
            }
        }
예제 #9
0
        /// <summary>
        ///
        /// </summary>
        private void SessionUpdated(object sender, SessionUpdatedEventArgs e)
        {
            if (this.Mode == SpatialAnchorsMode.AddAnchors && this.Status == SpatialAnchorStatus.Scanning)
            {
                SessionStatus status = e.Status;
                this.enoughDataForSaving = status.RecommendedForCreateProgress >= 1.0;

                if (this.enoughDataForSaving)
                {
                    // on IOS saving an anchor happern during the process frame
                }
            }
        }
예제 #10
0
        private void SpatialAnchorsSession_SessionUpdated(object sender, SessionUpdatedEventArgs e)
        {
            SessionStatus status  = e.Status;
            string        message = this.StatusToString(status);

            this.enoughDataForSaving = status.RecommendedForCreateProgress >= 1.0;
            if (this.step == DemoStep.DeleteLocatedANchors | this.step == DemoStep.LocateAnchor | this.step == DemoStep.LocateNearbyAnchors)
            {
                this.HideStatusLabel(true);
            }
            else
            {
                this.ShowLogMessage(message, SubView.StatusView);
            }

            Debug.WriteLine("SessionUpdated :: " + message);
            this.OnSessionUpdated?.Invoke(sender, e);
        }
예제 #11
0
 private void CloudManager_SessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     Debug.Log(args.Status);
     //throw new NotImplementedException();
 }
예제 #12
0
 /// <summary>
 /// Handles session update delegate calls for the Azure Spatial Anchor session.
 /// </summary>
 private void CloudSpatialAnchorSession_SessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     Debug.Log($"Azure Spatial Anchor log: {args.Status.RecommendedForCreateProgress}");
     recommendedForCreate = args.Status.RecommendedForCreateProgress;
 }
예제 #13
0
 private void OnSessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     HandleSessionStatus(args.Status);
 }
예제 #14
0
 private void CloudSpatialAnchorSession_SessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     Debug.Log("ASA Log: recommendedForCreate: " + args.Status.RecommendedForCreateProgress);
     recommendedForCreate = args.Status.RecommendedForCreateProgress;
 }
예제 #15
0
 private void CloudSpatialAnchorSession_SessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     OnSessionUpdated?.Invoke(sender, args);
 }
 /// <summary>
 ///
 /// </summary>
 private void SessionUpdated(object sender, SessionUpdatedEventArgs e)
 {
     if (this.Mode == SpatialAnchorsMode.AddAnchors && this.Status == SpatialAnchorStatus.Scanning)
     {
         float progress            = e.Args.Status.RecommendedForCreateProgress;
         var   enoughDataForSaving = progress >= 1.0;
         lock (this.progressLock)
         {
             if (this.Status == SpatialAnchorStatus.Scanning && !enoughDataForSaving)
             {
                 return;
             }
             if (enoughDataForSaving)
             {
                 if (this.Status == SpatialAnchorStatus.Saving)
                 {
                     return;
                 }
                 if (this.anchorVisuals.TryGetValue(string.Empty, out AnchorModel model))
                 {
                     try
                     {
                         this.Status = SpatialAnchorStatus.Saving;
                         var cloudAnchor = new CloudSpatialAnchor
                         {
                             LocalAnchor = model.LocalAnchor.Anchor
                         };
                         model.CloudAnchor = cloudAnchor;
                         var now      = new Date();
                         var calendar = Calendar.Instance;
                         calendar.Time = now;
                         calendar.Add(CalendarField.Date, 7);
                         var oneWeekFromNow = calendar.Time;
                         cloudAnchor.Expiration = oneWeekFromNow;
                         Task.Run(async() =>
                         {
                             try
                             {
                                 var result   = await this.spatialAnchorsSession.CreateAnchorAsync(cloudAnchor).GetAsync();
                                 var anchorId = cloudAnchor.Identifier;
                                 this.anchorVisuals[anchorId] = model;
                                 this.anchorVisuals.TryRemove(string.Empty, out _);
                                 SaveAnchor(this, new SpatialAnchors.Models.Anchor {
                                     AnchorId = cloudAnchor.Identifier
                                 });
                                 this.Status = SpatialAnchorStatus.Iddle;
                             }
                             catch (Exception ex)
                             {
                                 ShowMessage(this, "ErrorSavingAnchor");
                             }
                         });
                     }
                     catch
                     {
                     }
                 }
             }
         }
     }
 }
예제 #17
0
 private void CloudSpatialAnchorSession_SessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     //    Log($"Look around to capture enough anchor data: {_recommendedSpatialDataForUpload:P0}", Color.yellow);
     _recommendedSpatialDataForUpload = args.Status.RecommendedForCreateProgress;
 }
예제 #18
0
 private void OnSessionUpdated(object sender, SessionUpdatedEventArgs e)
 {
     dp.Dispatcher
     .ExecuteAsync(() => SessionElapsedTime = e.Elapsed)
     .RunAndForget();
 }
예제 #19
0
 private void CloudManager_SessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     OnCloudSessionUpdated();
 }
 private void CloudManager_SessionUpdated(object sender, SessionUpdatedEventArgs args)
 {
     //Not implemented yet
     //this.OnCloudSessionUpdated();
 }