Exemple #1
0
    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);
        }
    }
Exemple #2
0
    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);
    }
Exemple #3
0
    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);
            }
        }
    }