Beispiel #1
0
    // Use this for initialization
    void Start()
    {
        StaticMenu menu = GetComponent <StaticMenu>();

        if (menu)
        {
            foreach (Transform item in menu.items)
            {
                item.renderer.material.color = defaultColor;
            }
        }
    }
        public void Start()
        {
            m_datetime       = DateTime.Now;
            currentDimension = "2D";
            StartCoroutine(DownloadPlaces(queryURL));
            StartCoroutine(DownloadKeywords(queryURL));
            this._gestureRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer();
            this._gestureRecognizer.SetRecognizableGestures(
                UnityEngine.XR.WSA.Input.GestureSettings.Tap |
                UnityEngine.XR.WSA.Input.GestureSettings.DoubleTap |
                UnityEngine.XR.WSA.Input.GestureSettings.Hold |
                UnityEngine.XR.WSA.Input.GestureSettings.ManipulationTranslate
                );

            /*
             * this._gestureRecognizer.HoldStartedEvent += (source, ray) =>
             * {
             *
             * };
             */



            this._gestureRecognizer.ManipulationStartedEvent += (source, cumulativeDelta, ray) => {
                navigationPreviousPosition = cumulativeDelta;
            };

            this._gestureRecognizer.ManipulationCompletedEvent += (source, cumulativeDelta, ray) => {
            };



            // Repond to single and double tap.
            this._gestureRecognizer.TappedEvent += (source, count, ray) =>
            {
                var terrain = this.transform.Find("terrain");
                switch (count)
                {
                case 1:
                    if (this._isMoving)
                    {
                        //if (GazeManager.Instance.Hit)
                        {
                            // Cease moving
                            this._isMoving = false;

                            // Stop mapping observer
                            SpatialMappingManager.Instance.StopObserver();

                            if (terrain == null)
                            {
                                // Hide footprint
                                this.transform.Find("base").GetComponent <MeshRenderer>().material.color = new Color32(100, 100, 100, 100);

                                // Add Terrain
                                _isFirstTimeLoading = true;
                            }
                            else
                            {
                                // Restore hit test
                                terrain.gameObject.layer = 0;
                            }
                        }
                    }
                    else
                    {
                        // If single tap on stationary terrain then perform reverse geocode.
                        // Exit if nothing found
                        if (!GazeManager.Instance.Hit)
                        {
                            return;
                        }
                        if (GazeManager.Instance.FocusedObject == null)
                        {
                            return;
                        }

                        // Exit if not terrain
                        if (GazeManager.Instance.FocusedObject.GetComponent <Terrain>() == null)
                        {
                            return;
                        }

                        //build control button

                        if (buttonObject == null)
                        {
                            buttonObject = Instantiate(buttonZoomPrefab, terrain.transform.position, Quaternion.Euler(60, 0, 0)) as StaticMenu;
                        }


                        //buttonObject.transform.parent = terrain.transform;

                        //this.StartCoroutine(this.AddStreetAddress(GazeManager.Instance.Position));
                    }
                    break;

                case 2:
                    // Resume footprint/terrain movement.
                    if (!this._isMoving)
                    {
                        // Set moving flag for update method
                        this._isMoving = true;

                        // Make terrain hittest invisible
                        this.GetComponentInChildren <Terrain>().gameObject.layer = 2;

                        // Resume mapping observer
                        SpatialMappingManager.Instance.StartObserver();
                    }
                    break;
                }
            };



            this._gestureRecognizer.StartCapturingGestures();

            // Create terrain footprint.

            var footprint = GameObject.CreatePrimitive(PrimitiveType.Quad);

            footprint.name = "base";
            footprint.transform.position      = new Vector3(0, 0, 0);
            footprint.transform.localRotation = Quaternion.FromToRotation(
                new Vector3(0, 1, 0),
                new Vector3(0, 0, 1)
                );
            footprint.transform.localScale = new Vector3(SIZE, SIZE, 1f);
            footprint.layer            = 2; // Ignore Raycast
            footprint.transform.parent = this.transform;
        }