示例#1
0
        //public virtual void DoSelect()
        //{
        //    DoSelect(Vector3.zero);
        //}
        public override void DoSelect(Vector3 position, bool checkActionRecording = false)
        {
            CheckKinetic(position);
            if (position != Vector3.zero && WalkFloor)
            {
                Debug.Log("Walk to: " + position.ToString());
                Slam.Instance.WalkTo(position, floorLevel);
            }
            if (position != Vector3.zero && SitPlane)
            {
                Slam.Instance.SitOn(position, ActiveTransform.forward);
            }
            else if (InputType != InputType.None)
            {
                //SlamMenu.Instance.SetHelpText()
                Slam.Instance.OpenMenuForTextInput(gameObject);
            }
            else if (!string.IsNullOrEmpty(Href))
            {
//                SlamMenu.Instance.SaveTextInput();
                if (Href.ToLower().StartsWith("slam_avatarselect="))
                {
                    var no = Href.ToLower().Replace("slam_avatarselect=", "");
                    Slam.Instance.AvatarNo = no;
                    Slam.Instance.GoHome();
                    return;
                }
                switch (Href)
                {
                case Constants.slam_menu:
                    Slam.Instance.OpenMenu(transform.position);
                    break;

                case Constants.slam_home:
                    Slam.Instance.GoHome();
                    break;

                case Constants.slam_close_message:
                    Slam.Instance.ShowMessage(false);
                    break;

                case Constants.slam_ok_message:
                    Slam.Instance.MessageOKAction();
                    break;

                default:
                    switch (Target)
                    {
                    case Target._2D:
                        if (conFirmLeaveApp)
                        {
                            Slam.Instance.Browse2d(Href);
                        }
                        else
                        {
                            Application.OpenURL(Href);
                        }
                        break;

                    default:
                        checkActionRecording = true;
                        if (!Slam.Instance.Switch(Href, ActiveTransform.gameObject))        //, gameObject.name))
                        {
                            Slam.Instance.Parse(Href, Target, null);
                        }
                        break;
                    }
                    break;
                }
            }
            if (presentation > 0)
            {
                checkActionRecording = true;
                if (presenting)
                {
                    StopPresenting();
                }
                else
                {
                    SetPresenting();
                }
                move = true;
            }
            if (checkActionRecording)
            {
                Slam.Instance.QueryAction(gameObject.name);//record action
            }
        }