示例#1
0
    //通过文件夹路径获取文件夹名
    public static bool GetNameByFolderPath(string folderPath, out string folderName)
    {
        folderName = "";
        if (folderPath == null || folderPath.Length == 0)
        {
            return(false);
        }
        char c = folderPath[folderPath.Length - 1];

        if (c == '\\' || c == '/')
        {
            folderPath = folderPath.Substring(0, folderPath.Length - 1);
        }

        int i     = folderPath.LastIndexOf("\\");
        int i1    = folderPath.LastIndexOf("/");
        int index = PreDefScrp.GetMax <int>(i, i1);

        if (index < 0)
        {
            Debug.Log("路径错误");
            return(false);
        }

        folderName = folderPath.Substring(index + 1);
        return(true);
    }
    bool IsShowWarning;//是否显示警告

    void Awake()
    {
        SpaceTime      = 0.3f;
        BtnClickGO     = null;
        CurGO          = null;
        LClickTime     = 0;
        RClickTime     = 0;
        LDragTime      = -1;
        RDragTime      = -1;
        LBtnClickCount = 0;
        RBtnClickCount = 0;

        LStartX = 0;
        LEndX   = 0;
        LStartY = 0;
        LEndY   = 0;
        RStartX = 0;
        REndX   = 0;
        RStartY = 0;
        REndY   = 0;

        LastRoll = 0;

        DoubleFingerDis = 0;
        MinScreenSide   = PreDefScrp.GetMin(Screen.width, Screen.height);
        CurInputMode    = InputMode.Default;
        CurFingerMode   = 0;
        TouchTime       = 0;

        Input.multiTouchEnabled = true;
        IsShowWarning           = false;
    }
示例#3
0
    //通过文件路径获取文件名,后缀
    public static bool GetNameByFilePath(string fullFilePath, out string fileName)
    {
        fileName = "";
        if (fullFilePath == null || fullFilePath.Length == 0)
        {
            return(false);
        }

        int i     = fullFilePath.LastIndexOf("\\");
        int i1    = fullFilePath.LastIndexOf("/");
        int index = PreDefScrp.GetMax <int>(i, i1);

        if (index < 0)
        {
            Debug.Log("路径错误");
            return(false);
        }

        fileName = fullFilePath.Substring(index + 1);//文件名包括后缀
        index    = fileName.LastIndexOf(".");
        if (index >= 0)
        {
            fileName = fileName.Substring(0, index);//去掉后缀
        }
        return(true);
    }
示例#4
0
    void ResetUIDir()
    {
        Vector3    dir = Vector3.zero;
        Quaternion qua = Quaternion.identity;

        if (CurJVideoInfo.stereoType == (int)StereoType.ST2D || CurJVideoInfo.stereoType == (int)StereoType.ST3D_LR || CurJVideoInfo.stereoType == (int)StereoType.ST3D_TB)
        {
            dir = PlayerGameobjectControl.Instance.QuadScreen.transform.parent.forward;
            qua = PlayerGameobjectControl.Instance.QuadScreen.transform.parent.rotation;
        }
        else if (CurJVideoInfo.stereoType == (int)StereoType.ST180_2D || CurJVideoInfo.stereoType == (int)StereoType.ST180_LR ||
                 CurJVideoInfo.stereoType == (int)StereoType.ST180_TB || CurJVideoInfo.stereoType == (int)StereoType.ST360_2D ||
                 CurJVideoInfo.stereoType == (int)StereoType.ST360_LR || CurJVideoInfo.stereoType == (int)StereoType.ST360_TB)
        {
            dir = Camera.main.transform.forward;
            qua = Camera.main.transform.rotation;
        }

        Cinema.CinemaUI.transform.forward = dir;

        Vector3 valueDir   = Vector3.Cross(Vector3.forward, dir);
        float   valueAngle = Vector3.Angle(Vector3.forward, dir);
        Vector3 cToUVector = PreDefScrp.RotateAroundAxis(Cinema.CameraToUIPositionVector, valueDir, valueAngle);

        Cinema.CinemaUI.transform.position = Camera.main.transform.position + cToUVector;
        Cinema.CinemaUI.transform.rotation = qua;
        Debug.Log("ResetUIDir");
    }
示例#5
0
    void ValueChanged(float f)
    {
        if (IsVoluntary)
        {
            IsVoluntary = false;
            return;
        }

        if (SliderCheckStatusCallback != null)
        {
            SliderCheckStatusCallback(true);
        }

        long times = (long)(f * TotalTime);

        if (SeekToTimeCallback != null)
        {
            SeekToTimeCallback(times);
        }

        int seconds = (int)(times / 1000);

        CurrentTimeText.text = PreDefScrp.SecondsToHMS(seconds);

        Statistics.GetInstance().OnEvent(MediaCenterEvent.ClickOnTimeline, "点击进度条");
    }
示例#6
0
    public void SetTotalTime(long totalTime)
    {
        LogTool.Log("设置总时间:" + totalTime);
        TotalTime = totalTime;

        int seconds = (int)(totalTime / 1000);

        TotalTimeText.text = PreDefScrp.SecondsToHMS(seconds);
    }
示例#7
0
    /*
     * 修改:因为unity中绕某一轴(例如X轴,X轴指向自己)顺时针旋转为正角度,逆时针旋转为负角度,
     * 所以改为verticalV = Vector3.Cross(axis, projV).normalized
     * 其中要指出的是Vector3.Cross(a, b)相当于百度百科中叉乘的bxa
     */
    //向量绕着某个平面的法线旋转角度 axis可以看作某个平面的法线
    public static Vector3 RotateAroundAxis(Vector3 v, Vector3 axis, float angle)
    {
        Vector3 projV     = PreDefScrp.ComputeProjection(axis, v); //投影向量
        Vector3 verticalV = Vector3.Cross(axis, projV).normalized; //新得投影向量垂直于旧投影向量的向量,方向指向新向量

        verticalV *= projV.magnitude * Mathf.Sin(angle * Mathf.Deg2Rad);
        Vector3 sectionProjV = projV.normalized * projV.magnitude * Mathf.Cos(angle * Mathf.Deg2Rad);//旧投影向量的一截
        Vector3 newProjV     = verticalV + sectionProjV;

        return(newProjV + (v - projV));
    }
示例#8
0
    //放入壳
    void PutInShell()
    {
        IsHideShell = false;

        ShellRectTrans.SetParent(FirstParent);
        ShellRectTrans.SetSiblingIndex(OriginalOrderIndex);
        PreDefScrp.RectTransformDeepCopy(ThisRectTrans, ShellRectTrans);
        ShellRectTrans.localEulerAngles = Vector3.zero;
        ShellRectTrans.localScale       = Vector3.one;

        ThisRectTrans.SetParent(ShellRectTrans);
        ThisRectTrans.localScale = Vector3.one;//如果ShellRectTrans的父类全局坐标为0,那this的缩放信息就丢失了
    }
示例#9
0
    private void WindowStereoTypeUIReset()
    {
        if (CurJVideoInfo.stereoType == (int)StereoType.ST2D || CurJVideoInfo.stereoType == (int)StereoType.ST3D_LR || CurJVideoInfo.stereoType == (int)StereoType.ST3D_TB)
        {
            Vector3    dir = PlayerGameobjectControl.Instance.QuadScreen.transform.parent.forward;
            Quaternion qua = PlayerGameobjectControl.Instance.QuadScreen.transform.parent.rotation;
            Cinema.CinemaUI.transform.forward = dir;

            Vector3 valueDir   = Vector3.Cross(Vector3.forward, dir);
            float   valueAngle = Vector3.Angle(Vector3.forward, dir);
            Vector3 cToUVector = PreDefScrp.RotateAroundAxis(Cinema.CameraToUIPositionVector, valueDir, valueAngle);
            Cinema.CinemaUI.transform.position = Camera.main.transform.position + cToUVector;
            Cinema.CinemaUI.transform.rotation = qua;
        }
    }
示例#10
0
    public void UIRecenterControl(Vector3 dir)
    {
        if (IsInLockAngle && IsFirstInLockAngle)
        {
            IsFirstInLockAngle = false;
            return;
        }
        if (!IsInFocus)//重置UI位置,跟随鼠标点击
        {
            Vector3 yDir  = PreDefScrp.ComputeProjection(Vector3.up, dir);
            float   angle = Vector3.Angle(OldUIDir, yDir);
            //Debug.Log("角度" + angle);
            if (!IsPointerEnterVideoPlayerUI)
            {
                if (angle <= 10)
                {
                    if (SwitchVideoPlayerUIVisionCallback != null)
                    {
                        SwitchVideoPlayerUIVisionCallback();
                    }
                }
                else
                {
                    if (ResetUIDirCallback != null)
                    {
                        ResetUIDirCallback();
                    }
                }

                OldUIDir = yDir;
            }
            else
            {
                Debug.Log("已经进入VideoPlayerUI,所以没法动态切换显影");
            }
        }
        else //视角回正
        {
            if (!IsPointerEnterVideoPlayerUI && FocusCompleteCallback != null)
            {
                FocusCompleteCallback();
            }
            else
            {
                Debug.Log("已经进入VideoPlayerUI,所以没法视角调整");
            }
        }
    }
示例#11
0
 void SetMotionGo(int fromIndex, int toIndex, float t, Space space)
 {
     if (space == Space.World)
     {
         MotionGO.position    = Vector3.Lerp(FilterMotionPointerList[fromIndex].position, FilterMotionPointerList[toIndex].position, t);
         MotionGO.eulerAngles = Vector3.Lerp(FilterMotionPointerList[fromIndex].eulerAngles, FilterMotionPointerList[toIndex].eulerAngles, t);
         Vector3 lossyScale = Vector3.Lerp(FilterMotionPointerList[fromIndex].lossyScale, FilterMotionPointerList[toIndex].lossyScale, t);
         PreDefScrp.SetGOLossyScale(MotionGO, lossyScale);
     }
     else
     {
         MotionGO.localPosition    = Vector3.Lerp(FilterMotionPointerList[fromIndex].localPosition, FilterMotionPointerList[toIndex].localPosition, t);
         MotionGO.localEulerAngles = Vector3.Lerp(FilterMotionPointerList[fromIndex].localEulerAngles, FilterMotionPointerList[toIndex].localEulerAngles, t);
         MotionGO.localScale       = Vector3.Lerp(FilterMotionPointerList[fromIndex].localScale, FilterMotionPointerList[toIndex].localScale, t);
     }
 }
示例#12
0
    public void Init(string iconName, Texture[] textures, float width, float height)
    {
        if (!IsInit)
        {
            InitWidget();
        }

        if (IconNameText != null)
        {
            IconNameText.text = iconName;
        }

        IconSize = new Vector2(width, height);
        PreDefScrp.SetWidgetSize(RectTrans, IconSize);
        SetIcon(textures);
    }
示例#13
0
    public void SetCurrentTime(long currentTime)
    {
        int seconds = (int)(currentTime / 1000);

        CurrentTimeText.text = PreDefScrp.SecondsToHMS(seconds);

        float t = 0;

        if (TotalTime != 0)
        {
            t = (float)currentTime / TotalTime;
        }

        IsVoluntary        = true;
        PlayPBSlider.value = t;
    }
示例#14
0
    void SetIcon(Texture[] textures)
    {
        if (textures == null)//使用默认图片
        {
            return;
        }

        int count = textures.Length;

        RawImage[] tempImages = PreDefScrp.NewComponents <RawImage>(Images.Length + count);
        Images.CopyTo(tempImages, 0);

        for (int i = 0; i < count; i++)
        {
            int index = i + Images.Length;

            tempImages[index].texture = textures[i];
            tempImages[index].name    = "Pic" + i;
            tempImages[index].transform.SetParent(transform);
            tempImages[index].transform.localPosition    = Vector3.zero;
            tempImages[index].transform.localEulerAngles = Vector3.zero;
            tempImages[index].transform.localScale       = Vector3.one;
            PreDefScrp.AdaptWidgetSize(tempImages[index].rectTransform, IconSize);

            tempImages[index].raycastTarget = false;
        }

        Images = tempImages;
        if (Images != null)
        {
            ImageLocalPosList.Clear();
            for (int i = 0; i < Images.Length; i++)
            {
                ImageLocalPosList.Add(Images[i].transform.localPosition);
            }
        }

        if (IconNameText != null)
        {
            IconNameText.transform.SetAsLastSibling();
        }

        if (SetIconCallback != null)
        {
            SetIconCallback();
        }
    }
示例#15
0
    void ResetUIDir()
    {
        Vector3 dir   = Camera.main.transform.forward;
        Vector3 yDir  = PreDefScrp.ComputeProjection(Vector3.up, dir);
        float   angle = Vector3.Angle(OldUIDir, yDir);

        if (angle > 2)
        {
            Vector3 valueDir   = Vector3.Cross(Vector3.forward, yDir);
            float   valueAngle = Vector3.Angle(Vector3.forward, yDir);

            Vector3 cToUVector = PreDefScrp.RotateAroundAxis(CameraToUIVector, valueDir, valueAngle);
            this.transform.forward  = yDir;
            this.transform.position = Camera.main.transform.position + cToUVector;
            OldUIDir = yDir;
        }
    }
示例#16
0
    void HoverPointFollow()
    {
        Vector3 pos = GvrPointerInputModule.CurrentRaycastResult.worldPosition;
        Vector3 v   = pos - HoverPointStartPos;
        float   len = PreDefScrp.GetProjLen(v, HoverPointShowVector);

        if (len >= 0 && len < HoverPointShowVector.magnitude)
        {
            ShowOrHidePBDot(true);
            CurHoverValue = (HoverPointShowVector.normalized * len).magnitude / HoverPointShowVector.magnitude;
            long times   = (long)(CurHoverValue * TotalTime);
            int  seconds = (int)(times / 1000);
            CurHoverText.text                 = PreDefScrp.SecondsToHMS(seconds);
            PlayPBDot.transform.position      = HoverPointStartPos + HoverPointShowVector.normalized * len;
            PlayPBDot.transform.localPosition = new Vector3(PlayPBDot.transform.localPosition.x, 0, PlayPBDot.transform.localPosition.z);
        }
        else
        {
            ShowOrHidePBDot(false);
        }
    }
示例#17
0
    //插入新图片后,恢复原始图片
    public void RecoverOriginalImages()
    {
        List <RawImage> allImageList = new List <RawImage>();

        allImageList.AddRange(Images);

        List <RawImage> deleteList, addList;

        PreDefScrp.ComputeDeleteAddList(OriginalImageList, allImageList, out deleteList, out addList);

        foreach (RawImage image in addList)
        {
            DestroyObject(image.gameObject);
        }

        Images = OriginalImageList.ToArray();

        ImageLocalPosList.Clear();
        if (Images != null)
        {
            for (int i = 0; i < Images.Length; i++)
            {
                ImageLocalPosList.Add(Images[i].transform.localPosition);
            }
        }

        if (IconNameText != null)
        {
            IconNameText.transform.SetAsLastSibling();
        }

        if (SetIconCallback != null)
        {
            SetIconCallback();
        }
    }
示例#18
0
    //开启反向
    public void StartRollback(bool isRollback)
    {
        if (m_isRollback != isRollback)
        {
            PreDefScrp.ValueSwap(ref m_fromPos, ref m_toPos);
            PreDefScrp.ValueSwap(ref m_fromEuler, ref m_toEuler);
            PreDefScrp.ValueSwap(ref m_fromScale, ref m_toScale);
            PreDefScrp.ValueSwap(ref m_fromColor, ref m_toColor);
            PreDefScrp.ValueSwap(ref m_fromA, ref m_toA);
            PreDefScrp.ValueSwap(ref m_fromQt, ref m_toQt);
            PreDefScrp.ValueSwap(ref m_fromPos, ref m_toPos);
            m_axis = -m_axis;

            m_startTime   = Time.time + m_totalTime * m_t; //Time.time + 已经播放时间
            m_t           = 1 - m_t;                       //当前分子
            m_aroundAngle = m_totalAngle * m_t;            //对于反向后,已经旋转的角度

            if (m_totalLoop > 0)
            {
                m_loop = m_totalLoop - (m_loop - 1);//减一是因为正在旋转,该过程还未结束
            }
            m_isRollback = isRollback;
        }
    }
示例#19
0
    void UpdateUIAngleDir()
    {
        Vector3    dir = Camera.main.transform.forward;
        Quaternion qua = Camera.main.transform.rotation;

        Cinema.CinemaUI.transform.forward = dir;

        Vector3 valueDir   = Vector3.Cross(Vector3.forward, dir);
        float   valueAngle = Vector3.Angle(Vector3.forward, dir);
        Vector3 cToUVector = PreDefScrp.RotateAroundAxis(Cinema.CameraToUIPositionVector, valueDir, valueAngle);

        Cinema.CinemaUI.transform.position = Camera.main.transform.position + cToUVector;
        Cinema.CinemaUI.transform.rotation = qua;

        Vector3 cToUVector2 = PreDefScrp.RotateAroundAxis(Cinema.CameraToPlayerPositionVector, valueDir, valueAngle);

        PlayerGameobjectControl.Instance.QuadScreen.transform.parent.forward  = dir;
        PlayerGameobjectControl.Instance.QuadScreen.transform.parent.position = Camera.main.transform.position + cToUVector2;
        PlayerGameobjectControl.Instance.QuadScreen.transform.parent.rotation = qua;
        //CinemaMaterialSetting.GetInstance().ImaxPurple.transform.forward = dir;
        //CinemaMaterialSetting.GetInstance().ImaxPurple.transform.rotation = qua;
        //CinemaMaterialSetting.GetInstance().DriveSceneBox.transform.forward = dir;
        //CinemaMaterialSetting.GetInstance().DriveSceneBox.transform.rotation = qua;
    }
示例#20
0
    void EditorInputMessage()
    {
        //PC simulation by lichuanli
        RaycastHit hit;
        GameObject hitGO  = null;
        Vector3    hitPos = Vector3.zero;
        Ray        ray    = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit, Mathf.Infinity))
        {
            hitGO  = hit.collider.gameObject;
            hitPos = hit.point;
        }

        if (Input.GetMouseButtonDown(0))
        {
            if (TouchPadPressCallback != null)
            {
                TouchPadPressCallback(hitGO, true);
            }

            if (TouchPadPressDirCallback != null)
            {
                TouchPadPressDirCallback(Camera.main.transform.forward, true);
            }
        }
        else if (Input.GetMouseButtonUp(0))
        {
            if (TouchPadPressCallback != null)
            {
                TouchPadPressCallback(hitGO, false);
            }

            if (TouchPadPressDirCallback != null)
            {
                TouchPadPressDirCallback(Camera.main.transform.forward, false);
            }
        }

        if (Input.GetKeyDown("a"))
        {
            if (AppButtonPressCallback != null)
            {
                AppButtonPressCallback(true);
            }
        }
        else if (Input.GetKeyUp("a"))
        {
            if (AppButtonPressCallback != null)
            {
                AppButtonPressCallback(false);
            }
        }

        //if (Input.GetKeyDown("h"))
        //{
        //    HomeBtnDownTime = Time.time;
        //}
        //else if (Input.GetKeyUp("h"))
        //{
        //    if (HomeBtnDownTime == -1)//超过时间限制则忽略该事件
        //    {
        //        return;
        //    }

        //    HomeBtnDownTime = -1;

        //    if (HomeButtonUpCallback != null)
        //        HomeButtonUpCallback();
        //}

        //if (HomeBtnDownTime != -1)
        //{
        //    if (Time.time - HomeBtnDownTime >= SpaceTime)
        //    {
        //        HomeBtnDownTime = -1;
        //        if (HoumeButtonLongPressCallback != null)
        //            HoumeButtonLongPressCallback(Camera.main.transform.forward);
        //    }
        //}

        if (Input.GetMouseButtonDown(1))
        {
            IsTouchDown     = true;
            StartTouchPoint = Input.mousePosition;
            FirstTouchPoint = Input.mousePosition;

            if (TouchPadTouchCallback != null)
            {
                TouchPadTouchCallback(true);
            }
        }
        else if (Input.GetMouseButtonUp(1))
        {
            IsTouchDown     = false;
            StartTouchPoint = Vector2.zero;
            FirstTouchPoint = Vector2.zero;

            if (TouchPadTouchCallback != null)
            {
                TouchPadTouchCallback(false);
            }

            if (IsGesture)
            {
                IsGesture = false;

                if (TouchPadSlipUnifiedDirEndCallback != null)
                {
                    TouchPadSlipUnifiedDirEndCallback(CurGestureDir);
                }
            }
        }

        if (IsTouchDown)
        {
            if (TouchPadVector2Callback != null)
            {
                TouchPadVector2Callback(((Vector2)Input.mousePosition - StartTouchPoint) / Screen.width);
            }

            Vector2 stretchVector2 = ((Vector2)Input.mousePosition - FirstTouchPoint) / Screen.width;
            if (TouchPadStretchVector2Callback != null)
            {
                TouchPadStretchVector2Callback(stretchVector2);
            }

            //手势判断
            if (!IsGesture && stretchVector2.sqrMagnitude > Mathf.Pow(GestureThreshold, 2))
            {
                IsGesture     = true;
                CurGestureDir = PreDefScrp.ComputeGestureDirection(stretchVector2);
            }

            if (IsGesture)
            {
                float f = PreDefScrp.ComputeGestureDirectionLen(CurGestureDir, stretchVector2);
                if (TouchPadSlipUnifiedDirCallback != null)
                {
                    TouchPadSlipUnifiedDirCallback(CurGestureDir, f);
                }
            }

            StartTouchPoint = Input.mousePosition;
        }

        if (Input.GetKeyDown("r"))
        {
            if (RecenteredCallback != null)
            {
                RecenteredCallback(Camera.main.transform.forward);
            }
        }

        //if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
        //{
        //    float x = Camera.main.transform.eulerAngles.x;
        //    float y = Camera.main.transform.eulerAngles.y;
        //    y += Input.GetAxis("Mouse X") * 90 * Time.deltaTime;
        //    x -= Input.GetAxis("Mouse Y") * 90 * Time.deltaTime;

        //    if (x > 90 && x < 180)
        //        x = 90;
        //    if (x < 270 && x > 180)
        //        x = 270;
        //    Camera.main.transform.rotation = Quaternion.Euler(x, y, 0);
        //}

        if (CurGO != hitGO)
        {
            //Debug.Log("CurGo:" + CurGO);
            //Debug.Log("hitGO:" + hitGO);
            if (PointerEnterCallback != null)
            {
                PointerEnterCallback(hitGO);
            }

            if (PointerExitCallback != null)
            {
                PointerExitCallback(CurGO);
            }

            //LogTool.Log("__________________________________");

            CurGO = hitGO;
            if (hitGO != null)
            {
                Cinema.IsPointerEnterVideoPlayerUI = true;
            }
            else
            {
                Cinema.IsPointerEnterVideoPlayerUI = false;
            }
        }
    }
示例#21
0
    void GvrInputMessage()
    {
        //if (GvrPtInputModule == null)
        //{
        //    LogTool.Log("警告:GvrPtInputModule为空");
        //    return;
        //}

        GameObject hitGO = GvrPointerInputModule.CurrentRaycastResult.gameObject; //新版本为GvrPointerInputModule.CurrentRaycastResult.gameObject

        if (GvrControllerInput.AppButtonDown)                                     //新版本为GvrControllerInput
        {
            IsTouchDown = false;
            if (AppButtonPressCallback != null)
            {
                AppButtonPressCallback(true);
            }
        }
        else if (GvrControllerInput.AppButtonUp)
        {
            if (AppButtonPressCallback != null)
            {
                AppButtonPressCallback(false);
            }
        }

        if (GvrControllerInput.TriggerButtonDown)
        {
            IsTouchDown = false;
        }

        if (GvrControllerInput.HomeButtonDown)
        {
            //LogTool.Log("GVR HomeBtn Down");
            IsTouchDown     = false;
            HomeBtnDownTime = Time.time;
        }

        if (HomeBtnDownTime != -1)
        {
            if (GvrControllerInput.HomeButtonState)//长按
            {
                if (Time.time - HomeBtnDownTime >= SpaceTime)
                {
                    LogTool.Log("GVR HomeBtn LongPress");
                    HomeBtnDownTime = -1;

                    if (HoumeButtonLongPressCallback != null)
                    {
                        HoumeButtonLongPressCallback(Camera.main.transform.forward);
                    }
                }
            }
            //else//这里松开
            //{
            //    LogTool.Log("GVR HomeBtn Up");
            //    if (HomeButtonUpCallback != null)
            //        HomeButtonUpCallback();

            //    HomeBtnDownTime = -1;
            //}
        }

        NoloRecenter();
        if (GvrControllerInput.Recentered)
        {
            if (RecenteredCallback != null)
            {
                RecenteredCallback(Camera.main.transform.forward);
            }
        }

        if (GvrControllerInput.IsTouching)
        {
            if (TouchPadPosCenteredCallback != null)
            {
                Vector2 touchPosVec = new Vector2(GvrControllerInput.TouchPos.x, -GvrControllerInput.TouchPos.y);
                Vector2 offset      = new Vector2(-0.5f, 0.5f);
                touchPosVec = touchPosVec + offset;
                TouchPadPosCenteredCallback(touchPosVec * 2);//GvrControllerInput.TouchPosCentered
            }
        }

        if (GvrControllerInput.TouchDown)
        {
            IsTouchDown     = true;
            StartTouchPoint = GvrControllerInput.TouchPos;
            FirstTouchPoint = GvrControllerInput.TouchPos;

            if (TouchPadTouchCallback != null)
            {
                TouchPadTouchCallback(true);
            }
        }
        else if (GvrControllerInput.TouchUp)
        {
            IsTouchDown     = false;
            StartTouchPoint = Vector2.zero;
            FirstTouchPoint = Vector2.zero;

            if (TouchPadTouchCallback != null)
            {
                TouchPadTouchCallback(false);
            }

            if (IsGesture)
            {
                IsGesture = false;
                if (TouchPadSlipUnifiedDirEndCallback != null)
                {
                    TouchPadSlipUnifiedDirEndCallback(CurGestureDir);
                }
            }
        }

        if (IsTouchDown)
        {
            Vector3 oneFrameVector2 = GvrControllerInput.TouchPos - StartTouchPoint;
            StartTouchPoint = GvrControllerInput.TouchPos;
            oneFrameVector2 = new Vector2(oneFrameVector2.x, -oneFrameVector2.y);//y轴反向处理
            if (TouchPadVector2Callback != null)
            {
                TouchPadVector2Callback(oneFrameVector2);
            }

            Vector3 stretchVector2 = GvrControllerInput.TouchPos - FirstTouchPoint;
            stretchVector2 = new Vector2(stretchVector2.x, -stretchVector2.y);//y轴反向处理
            if (TouchPadStretchVector2Callback != null)
            {
                TouchPadStretchVector2Callback(stretchVector2);
            }

            //手势判断
            if (!IsGesture && stretchVector2.sqrMagnitude > Mathf.Pow(GestureThreshold, 2))
            {
                IsGesture     = true;
                CurGestureDir = PreDefScrp.ComputeGestureDirection(stretchVector2);
            }

            if (IsGesture)
            {
                // firstPoint-by-point gesture
                float f = PreDefScrp.ComputeGestureDirectionLen(CurGestureDir, stretchVector2);
                if (TouchPadSlipUnifiedDirCallback != null)
                {
                    TouchPadSlipUnifiedDirCallback(CurGestureDir, f);
                }

                // everyPoint-by-point gesture
                CurGestureDirSlip = PreDefScrp.ComputeGestureDirection(oneFrameVector2);
                float t = PreDefScrp.ComputeGestureDirectionLen(CurGestureDirSlip, oneFrameVector2);
                if (TouchPadEveryoneSlipUnifiedDirCallback != null)
                {
                    TouchPadEveryoneSlipUnifiedDirCallback(CurGestureDirSlip, t);
                }
            }
        }

        if (CurGvrConnectionState == SvrControllerState.None)
        {
            // gaze版Recenter方法 Controller未连接的状态
            if (GvrPointerInputModule.Pointer.TriggerDown)
            {
                if (TouchPadPressCallback != null)
                {
                    TouchPadPressCallback(hitGO, true);
                }

                if (TouchPadPressDirCallback != null)
                {
                    TouchPadPressDirCallback(Camera.main.transform.forward, true);
                }

                TriggerDownTime = Time.time;
            }

            if (TriggerDownTime != -1)
            {
                if (Time.time - TriggerDownTime >= SpaceTime)//长按
                {
                    TriggerDownTime = -1;
                    //if (RecenteredCallback != null)
                    //    RecenteredCallback(Camera.main.transform.forward);
                }
                else
                {
                    if (GvrPointerInputModule.Pointer.TriggerUp)
                    {
                        TriggerDownTime = -1;
                        if (TouchPadPressCallback != null)
                        {
                            TouchPadPressCallback(hitGO, false);
                        }

                        if (TouchPadPressDirCallback != null)
                        {
                            TouchPadPressDirCallback(Camera.main.transform.forward, false);
                        }
                    }
                }
            }
        }
        else
        {
            if (GvrControllerInput.ClickButtonDown)
            {
                IsTouchDown = false;

                if (TouchPadPressCallback != null)
                {
                    TouchPadPressCallback(hitGO, true);
                }

                if (TouchPadPressDirCallback != null && hitGO == null)
                {
                    TouchPadPressDirCallback(Camera.main.transform.forward, true);
                }
            }
            else if (GvrControllerInput.ClickButtonUp)
            {
                if (TouchPadPressCallback != null)
                {
                    TouchPadPressCallback(hitGO, false);
                }

                if (TouchPadPressDirCallback != null && hitGO == null)
                {
                    TouchPadPressDirCallback(Camera.main.transform.forward, false);
                }
            }
        }

        if (CurGO != hitGO)
        {
            if (PointerExitCallback != null)
            {
                PointerExitCallback(CurGO);
            }

            if (PointerEnterCallback != null)
            {
                PointerEnterCallback(hitGO);
            }

            CurGO = hitGO;
            if (hitGO != null)
            {
                Cinema.IsPointerEnterVideoPlayerUI = true;
            }
            else
            {
                Cinema.IsPointerEnterVideoPlayerUI = false;
            }
        }
    }