Пример #1
0
        // Update is called once per frame
        void Update()
        {
            if (_userAccount != "" && !_hasQueryUser)
            {
                System.Threading.Tasks.Task
                .Run(() =>
                {
                    print(_userAccount);
//                            CallAndroidMethod.Toast(_userAccount);
                    UserLab.CurrentUser = UserLab.GetUser(_userAccount);
                    _hasGetUser         = true;
                });
                _hasQueryUser = true;
            }

            if (_hasGetUser)
            {
                print(UserLab.CurrentUser.UserName);
                CharacterInfoController cInfoController = characterInfo.GetComponent <CharacterInfoController>();
                cInfoController.UpdateUserMessage(UserLab.CurrentUser);
                _hasGetUser = false;
            }

            // 如果控制状态详细信息面板已经显示,在点击其他地方后让其消失
            if (Input.GetMouseButtonDown(0) && characterDetailInfo.activeSelf && !ArUtils.IsPointerOverUiObject())
            {
                characterDetailInfo.SetActive(false);
            }

            if (Input.GetKey(KeyCode.Escape))
            {
                Application.Quit();
            }
        }
Пример #2
0
        // Update is called once per frame
        void Update()
        {
            Ray ray = cam.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out var hitInfo))
            {
                // 如果点击物体
                if (!ArUtils.IsPointerOverUiObject() && Input.GetMouseButtonDown(0) && hitInfo.transform.name == transform.name)
                {
                    onModelClick?.Invoke();
                }
            }
        }
Пример #3
0
        void Start()
        {
//            CallAndroidMethod.StartLoginActivity();

            moreInfo.GetComponent <PointerClickEventTrigger>()
            .onPointerClick
            .AddListener((() =>
            {
                CallAndroidMethod.StartFeedbackActivity();
                print("more information");
            }));

            characterDetailInfo.SetActive(false);
            LongPressEventTrigger characterInfoLongPress = characterInfo.GetComponent <LongPressEventTrigger>();

            characterInfoLongPress.onLongPress.AddListener(() =>
            {
                if (characterDetailInfo.activeSelf == false)
                {
                    characterDetailInfo.SetActive(true);
                    CharacterDetailInfoController infoController =
                        characterDetailInfo.GetComponent <CharacterDetailInfoController>();
                    infoController.UpdateUserDetailMessage(UserLab.CurrentUser);
                }
                else
                {
                    characterDetailInfo.SetActive(false);
                }
            });

            DoubleClickEventTrigger roleDoubleClick = role.GetComponent <DoubleClickEventTrigger>();

            roleDoubleClick.SetCamera(Camera.main);
            roleDoubleClick
            .onDoubleClick
            .AddListener(() =>
            {
                if (!ArUtils.IsPointerOverUiObject())
                {
                    SceneManager.LoadScene("ModelScanScene");
                }
            });
            mapPanel.GetComponent <OnMapButtonDrag>().dragEndEvent.AddListener(CallAndroidMethod.StartMapActivity);
            buttonTask.onClick.AddListener(CallAndroidMethod.StartTaskActivity);
            buttonCourse.onClick.AddListener(CallAndroidMethod.StartCourseActivity);
            buttonPut.onClick.AddListener(() => { SceneManager.LoadScene("ModelPutScene"); });
        }
Пример #4
0
        // Update is called once per frame
        void Update()
        {
            // 按下鼠标时,如果焦点不在模型上则返回
            // 如果初始时在模型上,则之后划出模型仍然当作滑动成功
            if (Input.GetMouseButtonDown(0))
            {
                //如果非滑动模型,则返回
                Ray ray = cam.ScreenPointToRay(Input.mousePosition);
                if (ArUtils.IsPointerOverUiObject())
                {
                    return;
                }
                if (Physics.Raycast(ray, out RaycastHit hitInfo))
                {
                    var    hitParent = hitInfo.transform.parent;
                    string hitName   = hitParent == null
                        ? hitInfo.transform.name
                        : hitParent.name;

                    var    goParent = transform.parent;
                    string goName   = goParent == null
                        ? gameObject.transform.name
                        : goParent.name;

                    if (hitName != goName)
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
                print("mouse down");
                _startPos = Input.mousePosition;
                _isClick  = true;
                _hasSlide = false;
            }

            if (Input.GetMouseButtonUp(0))
            {
                print("mouse up");
                _endPos  = Input.mousePosition;
                _isClick = false;
            }

            // 如果还未松手且已经滑动完成,则返回
            if (_isClick || _hasSlide)
            {
                return;
            }

            Vector3 v = _endPos - _startPos;

            // 上下滑动,返回
            if (Mathf.Abs(v.y) > Mathf.Abs(v.x))
            {
                return;
            }
            // 滑动距离不够,返回
            if (Mathf.Abs(v.x) < slideDistance)
            {
                return;
            }
            onSlide?.Invoke(v.x, v.y);
            _hasSlide = true;
        }