Beispiel #1
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 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;
        }
Beispiel #3
0
 public abstract void SwitchToActivity(XRInteractableTerrainActivity activity);