Exemple #1
0
        // Update is called once per frame
        void Update()
        {
            // 返回主页面
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                SceneManager.LoadScene("MainPage");
            }

            Vector3 position = _abstractMap.GeoToWorldPosition(TaskLab.Get().GetTaskList()[0].TaskLocation);

            if (position != Vector3.zero && !_hasLoadModel)
            {
                var locationProvider = LocationProviderFactory.Instance.DefaultLocationProvider;
                TaskLab.Get().SetCurrentLatlng(locationProvider.CurrentLocation.LatitudeLongitude);
                _taskList = TaskLab.Get().GetTaskListIn(200);
                //TaskList = TaskLab.get().GetTaskList();
                text.text = "abstractMap: " + _abstractMap + "\n";
                foreach (var task in _taskList)
                {
                    _model   = ArUtils.LoadModel("Model/" + task.TaskModelName);
                    position = _abstractMap.GeoToWorldPosition(task.TaskLocation);
                    var message = text.text;
                    message  += "name:" + task.TaskModelName + "\n";
                    message  += "location:" + task.TaskLocation + "\n";
                    message  += "position:" + position + "\n";
                    text.text = message;
                    Instantiate(_model, position, task.TaskModelRotation);
                }
                _hasLoadModel = true;
            }
        }
        /// <summary>
        /// The Unity Update() method.
        /// </summary>
        public void Update()
        {
            _UpdateApplicationLifecycle();
            Vector3 position = _abstractMap.GeoToWorldPosition(TaskLab.Get().GetTaskList()[0].TaskLocation);

            // 等待abstractMap加载完成
            if (position != Vector3.zero && !_hasLoadModelInMiniMap)
            {
                var locationProvider = LocationProviderFactory.Instance.DefaultLocationProvider;
                TaskLab.Get().SetCurrentLatlng(locationProvider.CurrentLocation.LatitudeLongitude);
                _taskList = TaskLab.Get().GetTaskListIn(200);
                InitModelByLatLngs(_taskList, true);
                _hasLoadModelInMiniMap = true;
            }
            // todo 一定范围内模型
            // 每个几帧重新更新矛点位置
            //if (++count % 1000 == 0)
            //{
            //    DestoryShowedARModels(ShowedARModels);
            //    InitModelByLatLngs(TaskList, false);
            //}
        }
        // Start is called before the first frame update
        void Start()
        {
            controlDetail.SetActive(false);
            _controlStatusImage       = controlStatus.GetComponent <Image>();
            _controlStatusDetailTexts = controlDetail.GetComponentsInChildren <Text>();
            controlStatus.GetComponent <LongPressEventTrigger>().onLongPress.AddListener(
                () =>
            {
                print("长按");
                controlDetail.SetActive(!controlDetail.activeSelf);
            }

                );
            _taskList    = TaskLab.Get().GetTaskList();
            _abstractMap = map.GetComponent <AbstractMap>();
            bag.GetComponent <BagController>().SetOnMyItemClick((GameObject currentAddGameObject, List <ArModelInfo> putArObjects) =>
            {
                _putArObjects = putArObjects;
                print(_putArObjects);
                // _selectedArObject = currentAddGameObject;
                bag.SetActive(false);
                _hasShowItems = false;
            });

            setModelButton.onClick.AddListener(() =>
            {
                if (_selectedArObject == null)
                {
                    return;
                }
                var position = _selectedArObject.transform.position;
                var task     = new Task
                {
                    TaskDesc          = _selectedArObject.name + " 2 3 4",
                    TaskLocation      = _abstractMap.WorldToGeoPosition(position),
                    TaskModelRotation = _selectedArObject.transform.rotation,
                    TaskModelName     = _selectedArObject.transform.name.Split('(')[0]
                };
                _taskList.Add(task);
                GameObject.Find("Text").GetComponent <Text>().text += "\nTaskList.Count:" + _taskList.Count + "\nPutedGameObject position:" + position + "\n" + "PutedGameObject Latlng:" + _abstractMap.WorldToGeoPosition(position);                print("PutedGameObject position:" + position);
                print("PutedGameObject Latlng:" + _abstractMap.WorldToGeoPosition(position));
            });

            showItemsButton.onClick.AddListener(() =>
            {
                if (_hasShowItems)
                {
                    bag.SetActive(false);
                }
                else
                {
                    bag.SetActive(true);
                }
                _hasShowItems = !_hasShowItems;
            });

            // 找到当前选择的模型,删除它的所有信息
            deleteModelButton.onClick.AddListener(() =>
            {
                ArModelInfo modelInfo = _putArObjects.Find((info) => info.ArGameObject.name == _selectedArObject.name);

                if (modelInfo == null)
                {
                    return;
                }
                print(modelInfo.ArGameObject.name);
                Destroy(modelInfo.ArGameObject);
                Destroy(modelInfo.Anchor);
                _putArObjects.Remove(modelInfo);
            });
        }