public override void SwitchToActivity(XRInteractableTerrainActivity activity)
        {
            if (CurrentActivity == activity)
            {
                return;
            }

            // Switching away from current mode.
            switch (CurrentActivity)
            {
            case XRInteractableTerrainActivity.Distance:
            case XRInteractableTerrainActivity.HeightProfile:
            case XRInteractableTerrainActivity.SunAngle:
            case XRInteractableTerrainActivity.BBoxSelection:
                CancelSelection(true, activity);
                break;

            case XRInteractableTerrainActivity.Disabled:
                Collider collider = GetComponent <MeshCollider>();
                if (collider)
                {
                    collider.enabled = true;
                }
                break;
            }

            // Switch to new mode.
            switch (activity)
            {
            case XRInteractableTerrainActivity.Distance:
                TerrainModel.LayerController.EnableOverlay = true;
                HeightProfileController.SetEnabled(true, false);
                break;

            case XRInteractableTerrainActivity.HeightProfile:
                TerrainModel.LayerController.EnableOverlay = true;
                HeightProfileController.SetEnabled(true, true);
                break;

            case XRInteractableTerrainActivity.Default:
                TerrainModel.LayerController.EnableOverlay = false;
                break;

            case XRInteractableTerrainActivity.BBoxSelection:
                TerrainModel.LayerController.EnableOverlay = true;
                _bboxSelectionController.SetEnabled(true);
                break;

            case XRInteractableTerrainActivity.Disabled:
                Collider collider = GetComponent <MeshCollider>();
                if (collider)
                {
                    collider.enabled = false;
                }
                goto case XRInteractableTerrainActivity.Default;
            }

            Debug.Log($"SWITCHING MODES: {CurrentActivity} --> {activity}");
            CurrentActivity = activity;
        }
Exemple #2
0
        /// <summary>
        ///     For bounding box selection and some tools.
        /// </summary>
        /// <returns>True if the entire selection cancelled, false otherwise.</returns>
        public bool CancelSelection(bool cancelAll = false, XRInteractableTerrainActivity nextMode = XRInteractableTerrainActivity.Default)
        {
            switch (CurrentActivity)
            {
            case XRInteractableTerrainActivity.BBoxSelection:
                if (BBoxSelectionController.CancelSelection(cancelAll))
                {
                    CurrentActivity = nextMode;
                    BBoxSelectionController.SetEnabled(false);
                    return(true);
                }
                break;

            case XRInteractableTerrainActivity.Distance:
            case XRInteractableTerrainActivity.HeightProfile:
                if (!HeightProfileController.SelectionInputEnabled)
                {
                    cancelAll = true;
                }
                if (HeightProfileController.CancelSelection(cancelAll))
                {
                    CurrentActivity = nextMode;
                    HeightProfileController.SetEnabled(false);
                    return(true);
                }
                break;

            case XRInteractableTerrainActivity.SunAngle:
                break;
            }
            return(false);
        }
        public override void OnCursorOver(XRController sender, RaycastHit hit)
        {
            switch (CurrentActivity)
            {
            case XRInteractableTerrainActivity.BBoxSelection:
                _bboxSelectionController.UpdateCursorPosition(hit);
                break;

            case XRInteractableTerrainActivity.Distance:
            case XRInteractableTerrainActivity.HeightProfile:
                HeightProfileController.UpdateCursorPosition(hit);
                break;
            }
        }
        public override void OnTriggerDown(XRController sender, RaycastHit hit, ClickedEventArgs e)
        {
            switch (CurrentActivity)
            {
            case XRInteractableTerrainActivity.BBoxSelection:
                _bboxSelectionController.MakeBoundarySelection(hit);
                break;

            case XRInteractableTerrainActivity.Distance:
            case XRInteractableTerrainActivity.HeightProfile:
                HeightProfileController.MakeSelection(hit);
                break;
            }
        }
Exemple #5
0
 public void CompleteSelection()
 {
     switch (CurrentActivity)
     {
     case XRInteractableTerrainActivity.Distance:
     case XRInteractableTerrainActivity.HeightProfile:
         if (!HeightProfileController.SelectionInputEnabled)
         {
             HeightProfileController.ResumeSelection();
         }
         else
         {
             HeightProfileController.CompleteSelection();
         }
         break;
     }
 }