/// <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; }
public abstract void SwitchToActivity(XRInteractableTerrainActivity activity);