Пример #1
0
        /// <summary>
        /// 松手时释放
        /// </summary>
        /// <param name="type"></param>
        private void HandleIdle(ObjectOperaType type)
        {
            switch (type)
            {
            case ObjectOperaType.自定义:

                var customize = operaObject.GetComponent <MCustomize>();

                if (customize != null)
                {
                    customize.OnClose();
                }

                break;

            case ObjectOperaType.物体自身旋转:

                var rotation = operaObject.GetComponent <MCObjectRatation>();
                if (rotation != null)
                {
                    rotation.OnClose();
                }

                break;

            default:
                break;
            }
        }
Пример #2
0
        /// <summary>
        /// 处理抓取
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        private IOperateObject HandleGrab(ObjectOperaType type)
        {
            switch (type)
            {
            case ObjectOperaType.无:
                break;

            case ObjectOperaType.能抓取:

                //调用物体的抓取
                var canGrab = operaObject.GetComponent <MCCanGrab>();

                //直接返回
                if (canGrab.HandStatus != MInputHandStatus.Idle)
                {
                    return(null);
                }

                //不同的操作端具备不同的操作,所以应该让外部调用
                if (OnGrab != null)
                {
                    OnGrab(canGrab, InputHand.HandIndex);
                }

                return(canGrab);

            case ObjectOperaType.物体自身旋转:

                var rotation = operaObject.GetComponent <MCObjectRatation>();

                //如果物体不是闲置状态,则直接返回
                if (rotation.HandStatus != MInputHandStatus.Idle)
                {
                    return(null);
                }

                rotation.OnOpen();

                return(rotation);

            case ObjectOperaType.自定义:

                var customize = operaObject.GetComponent <MCustomize>();

                if (customize.HandStatus != MInputHandStatus.Idle)
                {
                    return(null);
                }

                customize.OnOpen(InputHand.HandIndex);

                return(customize);

            default:
                break;
            }

            return(null);
        }
Пример #3
0
        /// <summary>
        /// 操作状态
        /// </summary>
        /// <param name="operaType"></param>
        public void OnOperaStatus()
        {
            if (operaType == beforeChange)
            {
                return;
            }

            switch (beforeChange)
            {
            case ObjectOperaType.无:
                RemoveNone();
                break;

            case ObjectOperaType.能抓取:
                RemoveCanGrab();
                break;

            case ObjectOperaType.物体自身旋转:
            case ObjectOperaType.摄像机围绕物体旋转:
                RemoveRotation();
                break;

            case ObjectOperaType.自定义:
                RemoveCustomize();
                break;

            default:
                break;
            }

            switch (operaType)
            {
            case ObjectOperaType.无:
                AddNone();
                break;

            case ObjectOperaType.能抓取:
                AddCanGrab();
                break;

            case ObjectOperaType.物体自身旋转:
                AddSelfRotation();
                break;

            case ObjectOperaType.摄像机围绕物体旋转:
                AddCameraCenterObjectRotation();
                break;

            case ObjectOperaType.自定义:
                AddCustomize();
                break;

            default:
                break;
            }

            beforeChange = operaType;
        }
Пример #4
0
        /// <summary>
        /// 松手时释放
        /// </summary>
        /// <param name="type"></param>
        private void HandleIdle(ObjectOperaType type)
        {
            switch (type)
            {
            case ObjectOperaType.自定义:

                var customize = operaObject.GetComponent <MCustomize>();

                if (customize != null)
                {
                    customize.OnClose();
                }

                break;

            case ObjectOperaType.物体自身旋转:

                var rotation = operaObject.GetComponent <MCObjectRotation>();
                if (rotation != null)
                {
                    rotation.OnClose();
                }
                break;

            case ObjectOperaType.摄像机围绕物体旋转:

                var cameraRotation = operaObject.GetComponent <MCCameraRotateAround>();
                if (cameraRotation != null)
                {
                    cameraRotation.OnClose();
                }
                break;

            case ObjectOperaType.物体式按钮:
                var button = operaObject.GetComponent <MCObjectButton>();
                button.OnFreed(InputHand.HandIndex);
                break;

            default:
                break;
            }
        }
Пример #5
0
 /// <summary>
 /// 设置操作类型
 /// </summary>
 /// <param name="type"></param>
 public void SetOperaType(ObjectOperaType type)
 {
     operaType = type;
 }
Пример #6
0
 /// <summary>
 /// 设置状态
 /// </summary>
 /// <param name="operaType"></param>
 public void OnOperaStatus(ObjectOperaType operaType)
 {
     this.operaType = operaType;
     OnOperaStatus();
 }