// Initialize value of controllers in the menu void InitializeControllerValues() { _SliderGeometrySizeXR.SetValue(_PointCloudManager.GetShaderGeometrySize()); _SliderThrottleXR.SetValue(_ViveCtrl.GetThrottle()); _ButtonAddIntensityToColor.SetActive(_PointCloudManager.GetAddIntensityToColor()); _ButtonFrustumCulling.SetActive(_PointCloudManager._culling_enabled); }
void OnButtonExportAsLASToggle(object sender, ButtonToggleEvent e) { if (e._Active) { _ExportFormat = ExportFormat.LAS; _ButtonExportAsXYZ.SetActive(false); } }
void OnMeasureRestrictYToggleEvent(object sender, ButtonToggleEvent e) { if (e._Active) { if (_MeasureTool.RestrictModeGet() == RestrictMode.XZ) { _ButtonMeasureRestrictXZ.SetActive(false); } MeasureRestrictModeSet(RestrictMode.Y); } else { MeasureRestrictModeSet(RestrictMode.none); } }
private void EnableButtonsForPointCloud(bool enabled) { for (int i = 0; i < _ButtonList.Count; i++) { _ButtonList[i].Enable(enabled); } _ButtonStartMeny.Reset(); _ButtonStartMeny.SetActive(false); _ButtonQuit.SetActive(false); if (enabled) { _PointsInCloud.text = _PointCloudManager.GetPointCloudFormat().NumberOfPoints.ToString("N0", CultureInfo.CreateSpecificCulture("sv-SE")) + " points in cloud"; } }
void Start() { _ColorBy = ColorByParam.NONE; _ExportFormat = ExportFormat.LAS; _ButtonExportAsLAS.SetActive(true); _Screens = transform.Find("Screens").gameObject; _UserCamera = _ViveCtrl.GetVRCamera(); _RightHandTransform = _ViveCtrl.GetRightHand().transform; _LeftHandTransform = _ViveCtrl.GetLeftHand().transform; // Position menu on back of left controller transform.parent = _LeftHandTransform; transform.localPosition = new Vector3(0f, -0.06f, -0.09f); transform.localRotation = Quaternion.Euler(-90.0f, 0f, 180f); GameObject pointerBase = new GameObject(); pointerBase.transform.parent = _RightHandTransform; pointerBase.transform.localPosition = new Vector3(0.0f, -0.087f, 0.063f); pointerBase.transform.localRotation = Quaternion.Euler(60.0f, 0.0f, 0.0f); pointerBase.name = "pointerBase"; _MenuPointer = Instantiate(_MenuPointerPrefab); _MenuPointer.name = "MenuPointer_CtrlMeny"; _MenuPointer.transform.parent = pointerBase.transform; _MenuPointer.transform.localScale = new Vector3(0.01f, 0.01f, 0.03f); _MenuPointer.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); _MenuPointer.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, 0.0f); _MenuPointer.AddComponent <MenuPointerCtrl>(); _MenuPointer.GetComponent <Renderer>().material = _MenuPointerMaterial; _MenuPointer.AddComponent <BoxCollider>(); _MenuPointer.GetComponent <BoxCollider>().isTrigger = true; _MenuPointer.GetComponent <BoxCollider>().center = new Vector3(0.0104362f, 0.0007376721f, 0.5f); _MenuPointer.GetComponent <BoxCollider>().size = new Vector3(0.14f, 0.12f, 1f); _MenuPointer.GetComponent <Renderer>().material.SetColor("_Color", Color.red); _MenuPointer.SetActive(false); // Listen to click events from the pointer _MenuPointer.GetComponent <MenuPointerCtrl>().OnPointerTriggerEnterEvent += OnPointerClick; // Register listerners for all buttons _ButtonMeasureToggle.OnToggleEvent += OnButtonMeasureToggleEvent; _ButtonMeasureBack.OnToggleEvent += OnButtonMeasureBackEvent; _ButtonMeasureSnap.OnToggleEvent += OnMeasureSnapToggleEvent; _ButtonMeasureRestrictXZ.OnToggleEvent += OnMeasureRestrictXZToggleEvent; _ButtonMeasureRestrictY.OnToggleEvent += OnMeasureRestrictYToggleEvent; _ButtonEditToggle.OnToggleEvent += OnButtonEditToggleEvent; _ButtonEditBack.OnToggleEvent += OnButtonEditBackEvent; _ButtonDeleteSelected.OnToggleEvent += OnButtonDeleteSelected; _ButtonSelectInverse.OnToggleEvent += OnButtonSelectInverse; _ButtonSelectNone.OnToggleEvent += OnButtonSelectNone; _ButtonVisualsToggle.OnToggleEvent += OnButtonVisualsToggleEvent; _ButtonVisualsBack.OnToggleEvent += OnButtonVisualsBackEvent; _ButtonAddIntensityToColor.OnToggleEvent += OnButtonAddIntensityToColorToggleEvent; _ButtonColorByRGB.OnToggleEvent += OnButtonColorByEvent; _ButtonColorByRGB.transform.gameObject.GetComponent <ButtonXR>()._ColorBy = ColorByParam.RGB; _ButtonColorByClass.OnToggleEvent += OnButtonColorByEvent; _ButtonColorByClass.transform.gameObject.GetComponent <ButtonXR>()._ColorBy = ColorByParam.CLASS; _ButtonColorByHight.OnToggleEvent += OnButtonColorByEvent; _ButtonColorByHight.transform.gameObject.GetComponent <ButtonXR>()._ColorBy = ColorByParam.HEIGHT; _ButtonColorByIntensity.OnToggleEvent += OnButtonColorByEvent; _ButtonColorByIntensity.transform.gameObject.GetComponent <ButtonXR>()._ColorBy = ColorByParam.INTENSITY; _ButtonColorByPointSourceID.OnToggleEvent += OnButtonColorByEvent; _ButtonColorByPointSourceID.transform.gameObject.GetComponent <ButtonXR>()._ColorBy = ColorByParam.POINT_SOURCE_ID; _ButtonSave.OnToggleEvent += OnButtonSaveToggleEvent; _ButtonExport.OnToggleEvent += OnButtonExportToggleEvent; _ButtonExport.PulseGlowOn(true); _ButtonSaveSelected.OnToggleEvent += OnButtonSaveSelectedToggleEvent; _ButtonExportSelected.OnToggleEvent += OnButtonExportSelectedToggleEvent; _ButtonExportAsXYZ.OnToggleEvent += OnButtonExportAsXYZToggle; _ButtonExportAsLAS.OnToggleEvent += OnButtonExportAsLASToggle; _ButtonStartMeny.OnToggleEvent += OnStartMeny; _ButtonQuit.OnToggleEvent += OnButtonQuit; _ButtonSetUserPosition.OnToggleEvent += OnButtonSetUserPositionToggleEvent; _ButtonFrustumCulling.OnToggleEvent += OnButtonFrustumCullingToggleEvent; _PointCloudManager.OnPointCloudLoaded += OnPointCloudLoaded; ResetScreens(); _ButtonList = new List <ButtonXR>(); _ButtonList.Add(_ButtonMeasureToggle); _ButtonList.Add(_ButtonMeasureSnap); _ButtonList.Add(_ButtonMeasureRestrictXZ); _ButtonList.Add(_ButtonMeasureRestrictY); _ButtonList.Add(_ButtonEditToggle); _ButtonList.Add(_ButtonDeleteSelected); _ButtonList.Add(_ButtonSelectInverse); _ButtonList.Add(_ButtonSelectNone); _ButtonList.Add(_ButtonSave); _ButtonList.Add(_ButtonExport); _ButtonList.Add(_ButtonSaveSelected); _ButtonList.Add(_ButtonExportSelected); _ButtonList.Add(_ButtonExportAsXYZ); _ButtonList.Add(_ButtonExportAsLAS); _ButtonList.Add(_ButtonStartMeny); _ButtonList.Add(_ButtonQuit); _ButtonList.Add(_ButtonSetUserPosition); _ButtonList.Add(_ButtonColorByIntensity); _ButtonList.Add(_ButtonAddIntensityToColor); _SliderGeometrySizeXR = _SliderGeometrySize.transform.GetComponentInChildren <SliderXR>(); _SliderGeometrySizeXR.SetMin(0.001f); _SliderGeometrySizeXR.SetMax(0.1f); _SliderGeometrySizeXR.OnValueChangeEvent += OnGeometrySizeChanged; _SliderThrottleXR = _SliderThrottle.transform.GetComponentInChildren <SliderXR>(); _SliderThrottleXR.SetMin(1f); _SliderThrottleXR.SetMax(6f); _SliderThrottleXR.OnValueChangeEvent += OnThrottleChanged; EnableButtonsForPointCloud(false); // Always starts in StartView scene, no pointcloud loaded. MenuUpdate(); ChildrenSetActive(false); }
void OnButtonColorByEvent(object sender, ButtonToggleEvent e) { // Deactivate all other ColorBy* buttons. Change layout to the one used in Edit screen // for mode selection. ColorByParam color_by = ((ButtonXR)sender)._ColorBy; if (color_by == ColorByParam.RGB) { if (e._Active) { SetColorBy(color_by); _ButtonColorByClass.SetActive(false); _ButtonColorByHight.SetActive(false); _ButtonColorByIntensity.SetActive(false); _ButtonColorByPointSourceID.SetActive(false); } else { SetColorBy(ColorByParam.NONE); } } if (color_by == ColorByParam.CLASS) { if (e._Active) { SetColorBy(color_by); _ButtonColorByRGB.SetActive(false); _ButtonColorByHight.SetActive(false); _ButtonColorByIntensity.SetActive(false); _ButtonColorByPointSourceID.SetActive(false); } else { SetColorBy(ColorByParam.NONE); } } if (color_by == ColorByParam.HEIGHT) { if (e._Active) { SetColorBy(color_by); _ButtonColorByRGB.SetActive(false); _ButtonColorByClass.SetActive(false); _ButtonColorByIntensity.SetActive(false); _ButtonColorByPointSourceID.SetActive(false); } else { SetColorBy(ColorByParam.NONE); } } if (color_by == ColorByParam.INTENSITY) { if (e._Active) { SetColorBy(color_by); _ButtonColorByRGB.SetActive(false); _ButtonColorByClass.SetActive(false); _ButtonColorByHight.SetActive(false); _ButtonColorByPointSourceID.SetActive(false); } else { SetColorBy(ColorByParam.NONE); } } if (color_by == ColorByParam.POINT_SOURCE_ID) { if (e._Active) { SetColorBy(color_by); _ButtonColorByRGB.SetActive(false); _ButtonColorByClass.SetActive(false); _ButtonColorByHight.SetActive(false); _ButtonColorByIntensity.SetActive(false); } else { SetColorBy(ColorByParam.NONE); } } }
void OnPointCloudExportSelectedListener(object sender, EventArgs e) { _PointCloudManager.OnPointCloudExported -= OnPointCloudExportSelectedListener; _ButtonExportSelected.SetActive(false); }
void OnPointCloudSavedListener(object sender, EventArgs e) { _ButtonSave.SetActive(false); }
IEnumerator SetButtonInactiveDelay(ButtonXR button, float time) { yield return(new WaitForSeconds(time)); button.SetActive(false); }
void OnButtonVisualsBackEvent(object sender, ButtonToggleEvent e) { _ButtonVisualsBack.SetActive(false); VisualsSetActive(!e._Active); }
void OnButtonEditBackEvent(object sender, ButtonToggleEvent e) { _ButtonEditBack.SetActive(false); EditSetActive(!e._Active); }
void OnButtonMeasureBackEvent(object sender, ButtonToggleEvent e) { _ButtonMeasureBack.SetActive(false); MeasureSetActive(!e._Active); }