private void SetColorBy(ColorByParam color_by) { _ColorBy = color_by; if (_ColorBy == ColorByParam.RGB) { _PointCloudManager.UserColorActive(false); } if (_ColorBy == ColorByParam.CLASS) { _PointCloudManager.ColorByClass(); _PointCloudManager.UserColorActive(true); } if (_ColorBy == ColorByParam.HEIGHT) { _PointCloudManager.ColorByHeight(); _PointCloudManager.UserColorActive(true); } if (_ColorBy == ColorByParam.INTENSITY) { _PointCloudManager.ColorByIntensity(); _PointCloudManager.UserColorActive(true); } if (_ColorBy == ColorByParam.POINT_SOURCE_ID) { _PointCloudManager.ColorByPointsourceID(); _PointCloudManager.UserColorActive(true); } if (_ColorBy == ColorByParam.NONE) { _PointCloudManager.ColorByNone(); _PointCloudManager.UserColorActive(true); } }
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); } } }