Example #1
0
    void Start()
    {
        _PointCloudManager = _ViveCtrl.PointCloudManagerGet();
        _VRCamera          = _ViveCtrl.GetVRCamera();

        _LeftHand        = _ViveCtrl.GetLeftHand();
        _RightController = _ViveCtrl.GetRightHand();

        GameObject leftCollider = Instantiate(_ColliderPrefab);

        leftCollider.name                       = "StartView_LeftCollider";
        leftCollider.transform.parent           = _LeftHand.transform;
        leftCollider.transform.localPosition    = new Vector3(-0.0015f, -0.0372f, 0.0073f);
        leftCollider.transform.localEulerAngles = new Vector3(57.497f, 19.942f, 12.817f);

        GameObject rightCollider = Instantiate(_ColliderPrefab);

        rightCollider.name                       = "StartView_RightCollider";
        rightCollider.transform.parent           = _RightController.transform;
        rightCollider.transform.localPosition    = new Vector3(-0.0015f, -0.0372f, 0.0073f);
        rightCollider.transform.localEulerAngles = new Vector3(57.497f, 19.942f, 12.817f);

        transform.localPosition    = new Vector3(0f, 1.5f, 0f);
        transform.localEulerAngles = new Vector3(0.0f, 0f, 0.0f);

        _ImportStart.OnTransitionDoneEvent += OnTransitionDone;
        _LoadStart.OnTransitionDoneEvent   += OnTransitionDone;

        _ImportStart.SetPointCloudManager(_PointCloudManager);
        _LoadStart.SetPointCloudManager(_PointCloudManager);

        _PointCloudManager.OnProgress       += OnProgressEvent;
        _PointCloudManager.OnGPUSetDataDone += OnLoadComplete;

        _SpinnerCtrl.SetActive(false);

        SetComponentsActive(true);
    }
Example #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);
    }