Exemple #1
0
    void ChangeStereoType(StereoType stereoType)
    {
        if (/*!GlobalVariable.IsIntent && */ !IsPlayLoop)
        {
            if (PlayerDataControl.GetInstance().CurPlayingMode == PlayingURLMode.Local)
            {
                VideoFormatDictionaryDetector.GetInstance().SetVideoFormatTypeByVideoId(CurJVideoInfo.id.ToString(), (int)stereoType);
            }
            else if (PlayerDataControl.GetInstance().CurPlayingMode == PlayingURLMode.KTTV)
            {
                VideoFormatDictionaryDetector.GetInstance().SetVideoFormatTypeByVideoId
                    (string.Format("{0}-{1}", CurJVideoInfo.vid, CurJVideoInfo.cid), (int)stereoType);
            }
            else if (PlayerDataControl.GetInstance().CurPlayingMode == PlayingURLMode.LiveUrl)
            {
                VideoFormatDictionaryDetector.GetInstance().SetVideoFormatTypeByVideoId(CurJVideoInfo.uri, (int)stereoType);
            }
        }
        else if (IsPlayLoop)
        {
            VideoPlayerPanel.SetVideoFormatTypeWhenPlayLoop((int)stereoType);
        }

        if (CurJVideoInfo != null)
        {
            CurJVideoInfo.stereoType = (int)stereoType;
        }
        Cinema.VideoPlayer.SetPlayMode(stereoType);
        ImaxPurpleControlByStereoType(stereoType);
        WindowStereoTypeUIReset();
    }
Exemple #2
0
    public void TensileBtnControl(StereoType stereoType)
    {
        //if (GlobalVariable.GetSceneModel() == SceneModel.Default || GlobalVariable.GetSceneModel() == SceneModel.StarringNight)
        {
            switch (stereoType)
            {
            //case StereoType.ST2D:
            case StereoType.ST3D_LR:
            case StereoType.ST3D_TB:
                IsAllowEvent = true;
                TensileBtnImage.raycastTarget = true;
                TensileBtnText.color          = new Color(130.0f / 255.0f, 136.0f / 255.0f, 142.0f / 255.0f, 1);
                TensileBtnImage.color         = Color.white;
                break;

            default:
                IsAllowEvent = false;
                TensileBtnImage.raycastTarget = false;
                TensileBtnText.color          = new Color(130.0f / 255.0f, 136.0f / 255.0f, 142.0f / 255.0f, 0.3f);
                TensileBtnImage.color         = new Color(1, 1, 1, 0.3f);
                break;
            }
        }
        //else if (GlobalVariable.GetSceneModel() == SceneModel.IMAXTheater)
        //{
        //    IsAllowEvent = false;
        //    TensileBtnImage.raycastTarget = false;
        //    TensileBtnText.color = new Color(130.0f / 255.0f, 136.0f / 255.0f, 142.0f / 255.0f, 0.3f);
        //    TensileBtnImage.color = new Color(1, 1, 1, 0.3f);
        //}
    }
Exemple #3
0
    void SelectPTB(MixedButton ptb, bool isSelect)
    {
        if (ptb != ProjectionTypeBtns[PTBIndex])
        {
            ProjectionTypeBtns[PTBIndex].SetSelected(false);
        }
        else
        {
            ptb.SetSelected(true);
            return;
        }

        for (int i = 0; i < ProjectionTypeBtns.Length; i++)
        {
            if (ProjectionTypeBtns[i] == ptb)
            {
                PTBIndex = i;
                break;
            }
        }

        StereoType st = GetStereoType(STBIndex, PTBIndex);

        if (ChangeStereoTypeCallback != null)
        {
            ChangeStereoTypeCallback(st);
        }
    }
Exemple #4
0
    void SelectSTB(MixedButton stb, bool isSelect)
    {
        if (stb != StereoTypeBtns[STBIndex])
        {
            StereoTypeBtns[STBIndex].SetSelected(false);
        }
        else
        {
            stb.SetSelected(true);
            return;
        }

        for (int i = 0; i < StereoTypeBtns.Length; i++)
        {
            if (StereoTypeBtns[i] == stb)
            {
                STBIndex = i;
                break;
            }
        }

        StereoType st = GetStereoType(STBIndex, PTBIndex);

        if (ChangeStereoTypeCallback != null)
        {
            ChangeStereoTypeCallback(st);
        }
    }
Exemple #5
0
    /// <summary>
    /// 根据播放视频的立体格式控制字幕Subtitle的跟随显示方式
    /// 平面视频/180°视频字幕不跟随摄像机;360°视频字幕跟随摄像机
    /// 需要打开回调关系,现已屏蔽此功能
    /// </summary>
    /// <param name="stereoType"></param>
    void SubtitleUIControl(StereoType stereoType)
    {
        switch (stereoType)
        {
        case StereoType.ST2D:
        case StereoType.ST3D_LR:
        case StereoType.ST3D_TB:
            GlobalRunningFunction.Instance.Subtitle.transform.parent        = VideoPlayerPanel.gameObject.transform;
            GlobalRunningFunction.Instance.Subtitle.transform.localPosition = new Vector3(0, 300, 0);
            break;

        case StereoType.ST180_2D:
        case StereoType.ST180_LR:
        case StereoType.ST180_TB:
            GlobalRunningFunction.Instance.Subtitle.transform.parent        = VideoPlayerPanel.gameObject.transform;
            GlobalRunningFunction.Instance.Subtitle.transform.localPosition = new Vector3(0, 100, 0);
            break;

        case StereoType.ST360_2D:
        case StereoType.ST360_LR:
        case StereoType.ST360_TB:
            GlobalRunningFunction.Instance.Subtitle.transform.parent        = GameObject.FindGameObjectWithTag("MainCamera").transform.parent;
            GlobalRunningFunction.Instance.Subtitle.transform.localPosition = new Vector3(0, 0.4f, 9f);
            break;
        }

        GlobalRunningFunction.Instance.Subtitle.transform.SetAsFirstSibling();
        GlobalRunningFunction.Instance.Subtitle.transform.forward       = GlobalRunningFunction.Instance.Subtitle.transform.parent.forward;
        GlobalRunningFunction.Instance.Subtitle.transform.localRotation = new Quaternion(0, 0, 0, 0);
        ChooseCinemaCnvasTrans();
    }
Exemple #6
0
    public void Show(StereoType stereoType)
    {
        StereoTypeBtns[STBIndex].SetSelected(false);
        ProjectionTypeBtns[PTBIndex].SetSelected(false);

        switch (stereoType)
        {
        case StereoType.ST2D:
            STBIndex = 0;
            PTBIndex = 0;
            break;

        case StereoType.ST180_2D:
            STBIndex = 0;
            PTBIndex = 1;
            break;

        case StereoType.ST360_2D:
            STBIndex = 0;
            PTBIndex = 2;
            break;

        case StereoType.ST3D_LR:
            STBIndex = 1;
            PTBIndex = 0;
            break;

        case StereoType.ST180_LR:
            STBIndex = 1;
            PTBIndex = 1;
            break;

        case StereoType.ST360_LR:
            STBIndex = 1;
            PTBIndex = 2;
            break;

        case StereoType.ST3D_TB:
            STBIndex = 2;
            PTBIndex = 0;
            break;

        case StereoType.ST180_TB:
            STBIndex = 2;
            PTBIndex = 1;
            break;

        case StereoType.ST360_TB:
            STBIndex = 2;
            PTBIndex = 2;
            break;
        }

        StereoTypeBtns[STBIndex].SetSelected(true);
        ProjectionTypeBtns[PTBIndex].SetSelected(true);

        TensileBtnControl(stereoType);
        Show();
    }
Exemple #7
0
    void TensileBtnStatusControl(StereoType stereoType)
    {
        if (!isInit)
        {
            Init();
        }

        VideoPlayerPanel.VideoCtrlPanel.SettingsPanel.StereoTypePanel.TensileBtnControl(stereoType);
    }
Exemple #8
0
    private void SetRectsByVideoType(OVROverlay overlay, StereoType stereoType, DisplayType displayType)
    {
        Rect srcRectLeft, srcRectRight, destRectLeft, destRectRight;

        switch (displayType)
        {
        case DisplayType.Full:
            destRectLeft = destRectRight = new Rect(0, 0, 1, 1);
            break;

        case DisplayType.Half:
            destRectLeft = destRectRight = new Rect(0.25f, 0, 0.5f, 1);
            break;

        default:
            destRectLeft  = overlay.destRectLeft;
            destRectRight = overlay.destRectRight;
            break;
        }

        switch (stereoType)
        {
        case StereoType.Mono:
        case StereoType.Stereo:
            srcRectLeft = srcRectRight = new Rect(0, 0, 1, 1);
            break;

        case StereoType.StereoTopBottom:
            if (overlay.invertTextureRects)
            {
                srcRectLeft  = new Rect(0, 0.0f, 1, 0.5f);
                srcRectRight = new Rect(0, 0.5f, 1, 0.5f);
            }
            else
            {
                srcRectLeft  = new Rect(0, 0.5f, 1, 0.5f);
                srcRectRight = new Rect(0, 0.0f, 1, 0.5f);
            }
            break;

        case StereoType.StereoLeftRight:
            srcRectLeft  = new Rect(0, 0, 0.5f, 1);
            srcRectRight = new Rect(0.5f, 0, 0.5f, 1);
            break;

        default:
            srcRectLeft  = overlay.srcRectLeft;
            srcRectRight = overlay.srcRectRight;
            break;
        }
        overlay.SetSrcDestRects(srcRectLeft, srcRectRight, destRectLeft, destRectRight);
    }
Exemple #9
0
    void ChangeStereoType(StereoType stereoType)
    {
        if (CurJVideoDscpInfo == null)
        {
            return;
        }

        CurJVideoDscpInfo.stereoType = (int)stereoType;

        if (ChangeStereoTypeCallback != null)
        {
            ChangeStereoTypeCallback(stereoType);
        }
    }
    public static string StereoTypeToShowStr(StereoType stereoType)
    {
        string showStr;

        switch (stereoType)
        {
        case StereoType.ST2D:
            showStr = "2D";
            break;

        case StereoType.ST3D_LR:
            showStr = "3DLR";
            break;

        case StereoType.ST3D_TB:
            showStr = "3DTB";
            break;

        case StereoType.ST180_2D:
            showStr = "180°2D";
            break;

        case StereoType.ST180_LR:
            showStr = "180°LR";
            break;

        case StereoType.ST180_TB:
            showStr = "180°TB";
            break;

        case StereoType.ST360_2D:
            showStr = "360°2D";
            break;

        case StereoType.ST360_LR:
            showStr = "360°LR";
            break;

        case StereoType.ST360_TB:
            showStr = "360°TB";
            break;

        default:
            showStr = "Unknow";
            break;
        }

        return(showStr);
    }
Exemple #11
0
 void ChangeVideoWH(float w, float h, StereoType m_VideoType, bool isOpen)
 {
     if (m_VideoType == StereoType.ST2D || m_VideoType == StereoType.ST3D_LR || m_VideoType == StereoType.ST3D_TB)
     {
         float video_wh = 1.0f;
         video_wh = getScale(w, h, m_VideoType, isOpen);
         LogTool.Log("video_width:" + w + ",video_height:" + h + ",getScale:" + video_wh);
         video_wh = (VideoScreen.transform.localScale.x / VideoScreen.transform.localScale.y) / video_wh;
         LogTool.Log("_Offset:" + video_wh);
         VideoScreen.sharedMaterial.SetFloat("_Offset", video_wh);
     }
     else
     {
         LogTool.Log("_Offset:1");
         VideoScreen.sharedMaterial.SetFloat("_Offset", 1);
     }
 }
Exemple #12
0
    string StereoTypeToWebStereoString(StereoType stereoType)
    {
        string webStereoString = string.Empty;

        switch (stereoType)
        {
        case StereoType.ST2D:
            webStereoString = "Window-2D";
            break;

        case StereoType.ST3D_LR:
            webStereoString = "Window-3D-SS";
            break;

        case StereoType.ST3D_TB:
            webStereoString = "Window-3D-UD";
            break;

        case StereoType.ST360_2D:
            webStereoString = "360-2D";
            break;

        case StereoType.ST360_LR:
            webStereoString = "360-3D-SS";
            break;

        case StereoType.ST360_TB:
            webStereoString = "360-3D-UD";
            break;

        case StereoType.ST180_2D:
            webStereoString = "180-2D";
            break;

        case StereoType.ST180_LR:
            webStereoString = "180-3D-SS";
            break;

        case StereoType.ST180_TB:
            webStereoString = "180-3D-UD";
            break;
        }

        return(webStereoString);
    }
Exemple #13
0
    float getScale(float w, float h, StereoType m_VideoType, bool isOpen)
    {
        if (w != 0 && h != 0)
        {
            if (m_StereoType != StereoType.ST2D && m_StereoType != StereoType.ST3D_LR && m_StereoType != StereoType.ST3D_TB)
            {
                isOpen = false;
            }

            switch (m_VideoType)
            {
            case StereoType.ST3D_LR:
                if (isOpen)
                {
                    return(w / h);
                }
                else
                {
                    return((w / 2.0f) / h);
                }

            case StereoType.ST3D_TB:
                if (isOpen)
                {
                    return(w / h);
                }
                else
                {
                    return((2 * w) / h);
                }

            case StereoType.ST2D:
                return(w / h);

            default:
                return(1);
            }
        }
        else
        {
            return(16.0f / 9.0f);
        }
    }
Exemple #14
0
 void ImaxPurpleControlByStereoType(StereoType stereoType)
 {
     //ChangeSkyboxStyle();
     //if (stereoType == StereoType.ST2D || stereoType == StereoType.ST3D_LR || stereoType == StereoType.ST3D_TB)
     //{
     //    VideoPlayerPanel.VideoCtrlPanel.SetLockBtnInteractable(true);
     //    if (GlobalVariable.GetSceneModel() == SceneModel.Default || GlobalVariable.GetSceneModel() == SceneModel.StarringNight)
     //    {
     //        if (CinemaMaterialSetting.GetInstance().ImaxPurple.activeInHierarchy)
     //            CinemaMaterialSetting.GetInstance().ImaxPurple.SetActive(false);
     //        if (CinemaMaterialSetting.GetInstance().DriveSceneBox.activeInHierarchy)
     //            CinemaMaterialSetting.GetInstance().DriveSceneBox.SetActive(false);
     //    }
     //    else if (GlobalVariable.GetSceneModel() == SceneModel.IMAXTheater)
     //    {
     //        if (!CinemaMaterialSetting.GetInstance().ImaxPurple.activeInHierarchy)
     //            CinemaMaterialSetting.GetInstance().ImaxPurple.SetActive(true);
     //        if (CinemaMaterialSetting.GetInstance().DriveSceneBox.activeInHierarchy)
     //            CinemaMaterialSetting.GetInstance().DriveSceneBox.SetActive(false);
     //        CinemaMaterialSetting.GetInstance().UnLoadRender();
     //    }
     //    else if (GlobalVariable.GetSceneModel() == SceneModel.Drive)
     //    {
     //        VideoPlayerPanel.VideoCtrlPanel.SetLockBtnInteractable(false);
     //        if (CinemaMaterialSetting.GetInstance().ImaxPurple.activeInHierarchy)
     //            CinemaMaterialSetting.GetInstance().ImaxPurple.SetActive(false);
     //        if (!CinemaMaterialSetting.GetInstance().DriveSceneBox.activeInHierarchy)
     //            CinemaMaterialSetting.GetInstance().DriveSceneBox.SetActive(true);
     //        CinemaMaterialSetting.GetInstance().UnLoadRender();
     //    }
     //}
     //else if (stereoType == StereoType.ST180_2D || stereoType == StereoType.ST180_LR || stereoType == StereoType.ST180_TB ||
     //    stereoType == StereoType.ST360_2D || stereoType == StereoType.ST360_LR || stereoType == StereoType.ST360_TB)
     //{
     //    VideoPlayerPanel.VideoCtrlPanel.SetLockBtnInteractable(false);
     //    if (CinemaMaterialSetting.GetInstance().ImaxPurple.activeInHierarchy)
     //        CinemaMaterialSetting.GetInstance().ImaxPurple.SetActive(false);
     //    if (CinemaMaterialSetting.GetInstance().DriveSceneBox.activeInHierarchy)
     //        CinemaMaterialSetting.GetInstance().DriveSceneBox.SetActive(false);
     //}
     VideoPlayerPanel.ChangePlayerUI();
 }
Exemple #15
0
    /// <summary>
    /// 判断立体格式时,同时判断Setting UI上"屏幕尺寸"&"场景选择"按钮的可选性
    /// </summary>
    /// <param name="stereoType"></param>
    void VideoSettingsUIControl(StereoType stereoType)
    {
        if (stereoType == StereoType.ST2D || stereoType == StereoType.ST3D_LR || stereoType == StereoType.ST3D_TB)
        {
            if (GlobalVariable.GetSceneModel() == SceneModel.Default || GlobalVariable.GetSceneModel() == SceneModel.StarringNight)
            {
                VideoPlayerPanel.VideoCtrlPanel.SettingsPanel.ScreenSizeBtnStatusControl(true);
            }
            else if (GlobalVariable.GetSceneModel() == SceneModel.IMAXTheater || GlobalVariable.GetSceneModel() == SceneModel.Drive)
            {
                VideoPlayerPanel.VideoCtrlPanel.SettingsPanel.ScreenSizeBtnStatusControl(false);
            }

            VideoPlayerPanel.VideoCtrlPanel.SettingsPanel.SceneChangeBtnStatusControl(true);
        }
        else if (stereoType == StereoType.ST180_2D || stereoType == StereoType.ST180_LR || stereoType == StereoType.ST180_TB ||
                 stereoType == StereoType.ST360_2D || stereoType == StereoType.ST360_LR || stereoType == StereoType.ST360_TB)
        {
            VideoPlayerPanel.VideoCtrlPanel.SettingsPanel.ScreenSizeBtnStatusControl(false);
            VideoPlayerPanel.VideoCtrlPanel.SettingsPanel.SceneChangeBtnStatusControl(false);
        }
    }
Exemple #16
0
 public PanoramaImage(List <string> url, StereoType stereoType)
 {
     this.url        = url;
     this.stereoType = stereoType;
 }
Exemple #17
0
        public static void SetStereoPair(GameObject left, GameObject right, Material material, StereoType stereoType, bool isLeftFirst)
        {
            if (left == null || right == null)
            {
                Debug.Log("Stereo targets are null.");
                return;
            }

            //  0.Get left frame and right frame UV
            MeshFilter leftMesh  = left.GetComponent <MeshFilter>();
            MeshFilter rightMesh = right.GetComponent <MeshFilter>();

            if (leftMesh != null && rightMesh != null)
            {
                Vector2[] leftUV  = leftMesh.mesh.uv;
                Vector2[] rightUV = rightMesh.mesh.uv;

                //  1.Modify UV
                for (int i = 0; i < leftUV.Length; i++)
                {
                    if (stereoType == StereoType.SIDE_BY_SIDE)
                    {
                        leftUV[i].x  = leftUV[i].x / 2;
                        rightUV[i].x = rightUV[i].x / 2;
                        if (isLeftFirst)
                        {
                            rightUV[i].x += 0.5f;
                        }
                        else
                        {
                            leftUV[i].x += 0.5f;
                        }
                    }
                    else if (stereoType == StereoType.TOP_DOWN)
                    {
                        leftUV[i].y  = leftUV[i].y / 2;
                        rightUV[i].y = rightUV[i].y / 2;
                        if (!isLeftFirst)                           //  For inverse uv, the order is inversed too.
                        {
                            rightUV[i].y += 0.5f;
                        }
                        else
                        {
                            leftUV[i].y += 0.5f;
                        }
                    }
                }

                leftMesh.mesh.uv  = leftUV;
                rightMesh.mesh.uv = rightUV;
            }

            //  2.Assign texture
            left.GetComponent <MeshRenderer>().material  = material;
            right.GetComponent <MeshRenderer>().material = material;
        }
Exemple #18
0
    /// <summary>
    /// Set-up shader value for stereo mode
    /// </summary>
    public void SetPlayMode(/*bool isChangePlayMode, */ StereoType stereoType)
    {
        m_StereoType = stereoType;
        if (stereoType == StereoType.ST180_2D || stereoType == StereoType.ST180_LR || stereoType == StereoType.ST180_TB)
        {
            //Cinema.GvrHead.trackPosition = true;
            QuadScreen.gameObject.SetActive(false);
            HemisphereScreen.gameObject.SetActive(true);
            SphereScreen.gameObject.SetActive(false);

            VideoScreen = HemisphereScreen;
            //RenderSettings.skybox = null;
            Camera.main.clearFlags = CameraClearFlags.Nothing;
        }
        else if (stereoType == StereoType.ST360_2D || stereoType == StereoType.ST360_LR || stereoType == StereoType.ST360_TB)
        {
            //Cinema.GvrHead.trackPosition = false;
            QuadScreen.gameObject.SetActive(false);
            HemisphereScreen.gameObject.SetActive(false);
            SphereScreen.gameObject.SetActive(true);

            VideoScreen = SphereScreen;
            //RenderSettings.skybox = null;
            Camera.main.clearFlags = CameraClearFlags.Nothing;
        }
        else/* (stereoType == StereoType.ST2D || stereoType == StereoType.ST3D_LR || stereoType == StereoType.ST3D_TB)*/
        {
            SceneModel sceneModel     = GlobalVariable.GetSceneModel();
            bool       isInteractable = false;
            switch (sceneModel)
            {
            case SceneModel.Default:
            case SceneModel.StarringNight:
                isInteractable = true;
                break;
            }
            Camera.main.clearFlags = CameraClearFlags.Skybox;
            if (ChangeSceneStyleCallback != null)
            {
                ChangeSceneStyleCallback(isInteractable, true);
            }

            //Cinema.GvrHead.trackPosition = true;
            QuadScreen.gameObject.SetActive(true);
            HemisphereScreen.gameObject.SetActive(false);
            SphereScreen.gameObject.SetActive(false);

            VideoScreen = QuadScreen;
        }

        if (Gvr.Internal.BaseVRDevice.IsSupported && VideoScreen.sharedMaterial != VideoUnlitForMultiViewMaterial)
        {
            VideoScreen.sharedMaterial = VideoUnlitForMultiViewMaterial;
        }
        else if (!Gvr.Internal.BaseVRDevice.IsSupported && VideoScreen.sharedMaterial != VideoMaterial)
        {
            VideoScreen.sharedMaterial = VideoMaterial;
        }

        if (VideoScreen != null && VideoScreen.sharedMaterial != null && VideoScreen.sharedMaterial.mainTexture == null && MainTexture != null)
        {
            VideoScreen.sharedMaterial.mainTexture = MainTexture;
        }

        //ChangeSceneType(false);

        VideoScreen.sharedMaterial.SetFloat("_StereoMode", 0);
        VideoScreen.sharedMaterial.DisableKeyword("_STEREOMODE_LEFTRIGHT");
        VideoScreen.sharedMaterial.DisableKeyword("_STEREOMODE_TOPBOTTOM");

        int i = (int)stereoType % 3;

        if (i == 1)
        {
            VideoScreen.sharedMaterial.EnableKeyword("_STEREOMODE_LEFTRIGHT");
            VideoScreen.sharedMaterial.SetFloat("_StereoMode", 2);
        }
        else if (i == 2)
        {
            VideoScreen.sharedMaterial.EnableKeyword("_STEREOMODE_TOPBOTTOM");
            VideoScreen.sharedMaterial.SetFloat("_StereoMode", 1);
        }

        if (ScreenSizeBtnStatusControlCallback != null)
        {
            ScreenSizeBtnStatusControlCallback(m_StereoType);
        }
        TensileSetStretchingPicture(true);
    }
 public PanoramaImage(List<string> url, StereoType stereoType)
 {
     this.url = url;
     this.stereoType = stereoType;
 }