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; }
/// <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; } }
public void CompleteSelection() { switch (CurrentActivity) { case XRInteractableTerrainActivity.Distance: case XRInteractableTerrainActivity.HeightProfile: if (!HeightProfileController.SelectionInputEnabled) { HeightProfileController.ResumeSelection(); } else { HeightProfileController.CompleteSelection(); } break; } }