Browse Source

提交自动播放逻辑

胡佳骏 1 year ago
parent
commit
be2d849461

+ 2 - 0
Assets/Scripts/LayoutGroup/DRFanLayout.cs

@@ -37,6 +37,7 @@ public class DRFanLayout : MonoBehaviour
                     var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                     go = Instantiate(pVideo, par.transform);
                     var videoitem = go.AddComponent<TemplateVideo>();
+                    videoitem.autoplay = materialObls.autoplay;
                     go.SetActive(true);
                     videoitem.SetData(mat, materialObls.updateTime);
                     noText.Add(videoitem);
@@ -147,6 +148,7 @@ public class DRFanLayout : MonoBehaviour
                     var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                     go = Instantiate(pVideo, par.transform);
                     var videoitem = go.AddComponent<TemplateVideo>();
+                    videoitem.autoplay = materialObls.autoplay;
                     go.SetActive(true);
                     //   videoitem.SetData(mat, materialObls.updateTime);
                     noText.Add(videoitem);

+ 3 - 1
Assets/Scripts/LayoutGroup/DRTitleLayout.cs

@@ -46,7 +46,8 @@ public class DRTitleLayout : MonoBehaviour
                     var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                     go = Instantiate(pVideo, par.transform);
                     var videoitem = go.AddComponent<TemplateVideo>();
-                    go.SetActive(true);
+                        videoitem.autoplay = materialObls.autoplay;
+                        go.SetActive(true);
                     videoitem.SetData(mat, materialObls.updateTime);
                     noText.Add(videoitem);
                     break;
@@ -178,6 +179,7 @@ public class DRTitleLayout : MonoBehaviour
                         var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                         go = Instantiate(pVideo, par.transform);
                         var videoitem = go.AddComponent<TemplateVideo>();
+                        videoitem.autoplay = materialObls.autoplay;
                         go.SetActive(true);
                       //  videoitem.SetData(mat, materialObls.updateTime);
                         noText.Add(videoitem);

+ 2 - 0
Assets/Scripts/LayoutGroup/SRSectorLayout.cs

@@ -43,6 +43,7 @@ public class SRSectorLayout : MonoBehaviour
                     var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                     go = Instantiate(pVideo, par.transform);
                     var videoitem = go.AddComponent<TemplateVideo>();
+                    videoitem.autoplay = materialObls.autoplay;
                     go.SetActive(true);
                     videoitem.SetData(mat, materialObls.updateTime);
                     noText.Add(videoitem);
@@ -174,6 +175,7 @@ public class SRSectorLayout : MonoBehaviour
                     var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                     go = Instantiate(pVideo, par.transform);
                     var videoitem = go.AddComponent<TemplateVideo>();
+                    videoitem.autoplay = materialObls.autoplay;
                     go.SetActive(true);
                     //videoitem.SetData(mat, materialObls.updateTime);
                     noText.Add(videoitem);

+ 2 - 0
Assets/Scripts/LayoutGroup/SRTitleLayout.cs

@@ -43,6 +43,7 @@ public class SRTitleLayout : MonoBehaviour
                     var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                     go = Instantiate(pVideo, par.transform);
                     var videoitem = go.AddComponent<TemplateVideo>();
+                    videoitem.autoplay = materialObls.autoplay;
                     go.SetActive(true);
                     videoitem.SetData(mat, materialObls.updateTime);
                     noText.Add(videoitem);
@@ -166,6 +167,7 @@ public class SRTitleLayout : MonoBehaviour
                     var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                     go = Instantiate(pVideo, par.transform);
                     var videoitem = go.AddComponent<TemplateVideo>();
+                    videoitem.autoplay = materialObls.autoplay;
                     go.SetActive(true);
                    // videoitem.SetData(mat, materialObls.updateTime);
                     noText.Add(videoitem);

+ 19 - 7
Assets/Scripts/LayoutTemplate/TemplateVideo.cs

@@ -6,9 +6,11 @@ using UnityEngine;
 
 public class TemplateVideo : BaseTemPlate
 {
+    public static bool isPlayLock;
+    public static bool isPlaying;
     public static Queue<TemplateVideo> temQueue = new Queue<TemplateVideo>();
     private Navigator.VideoControl m_VideoCtr;
-    private AVProVideoPlayer m_Video;
+    public AVProVideoPlayer m_Video;
 
     public string localSavePath;
 
@@ -17,6 +19,14 @@ public class TemplateVideo : BaseTemPlate
 
     public bool autoplay;
 
+    private void OnDisable()
+    {
+        if(temQueue.Count>0)
+        temQueue = new Queue<TemplateVideo>();
+    }
+
+    
+
     protected override void OnEnable()
     {
         //localSavePath = Application.persistentDataPath + "/Material/" + Path.GetFileName(Data.downloadPath);
@@ -31,18 +41,20 @@ public class TemplateVideo : BaseTemPlate
 
                 m_Video.SetUrl(localSavePath);
 
+                if (autoplay)
+                {
+                    temQueue.Enqueue(this);
+                 //   m_Video.transform.GetComponent<VideoPlayBtn>().m_IsPlaying = false;
+                 //   m_Video.transform.GetComponent<VideoPlayBtn>().PlayVideo();
+
+                }
+
             }
             else
             {
                 m_Video.SetUrl(null);
             }
         }
-        if(autoplay)
-        {
-            m_Video.transform.GetComponent<VideoPlayBtn>().m_IsPlaying = false;
-            m_Video.transform.GetComponent<VideoPlayBtn>().PlayVideo();
-
-        }
 
 
         setScale = true;

+ 27 - 0
Assets/Scripts/LayoutTemplate/VideoPlayBtn.cs

@@ -17,6 +17,9 @@ public class VideoPlayBtn : MonoBehaviour
     }
     public void PlayVideo()
     {
+        TemplateVideo.temQueue = new Queue<TemplateVideo>();
+        TemplateVideo.isPlaying = false;
+        GameManager.Instance.avplayer = null;
         Debug.Log("m_IsPlaying: " + m_IsPlaying);
         if (m_Video == null)
             return;
@@ -39,4 +42,28 @@ public class VideoPlayBtn : MonoBehaviour
             MQTTClient.Instance.sendActiveVideo(spid, videoid, m_IsPlaying, -1);
     }
 
+    public void PlayVideoAuto()
+    {
+        TemplateVideo.isPlayLock = true;
+        Debug.Log("m_IsPlaying: " + m_IsPlaying);
+        if (m_Video == null)
+            return;
+
+        Debug.Log(m_Video.GetUrl());
+        if (!m_IsPlaying)
+        {
+            // FengMian.gameObject.SetActive(false);
+            m_Video.Play();
+            Icon.SetActive(false);
+        }
+        else
+        {
+            m_Video.Pause();
+            Icon.SetActive(true);
+        }
+        m_IsPlaying = !m_IsPlaying;
+
+        if (spid != null && m_Video != null && !UserInfo.Instance.is20)
+            MQTTClient.Instance.sendActiveVideo(spid, videoid, m_IsPlaying, -1);
+    }
 }

+ 28 - 1
Assets/Scripts/UI/GameManager.cs

@@ -304,8 +304,31 @@ public class GameManager : MonoSingleton<GameManager>
             //m_SetBtn.transform.localPosition = API_GSXR_Slam.GSXR_Get_Head().localPosition + Player.transform.forward * 1.3f + new Vector3(0, 1f, 0);
             m_SetBtn.transform.position = OpenXRCamera.Instance.head.position + Player.transform.forward * 1.3f + new Vector3(-0.2f, 1f, 0);
         //  }
-
+        if (avplayer && !avplayer.IsPlaying()&& !TemplateVideo.isPlayLock)
+        {
+            TemplateVideo.isPlaying = false;
+            avplayer = null;
+        }
+        if(TemplateVideo.isPlayLock)
+        {
+            lockTime += Time.time;
+            if(lockTime>1)
+            {
+                TemplateVideo.isPlayLock = false;
+                lockTime = 0;
+            }
+        }
+        if (TemplateVideo.temQueue.Count>0&&!TemplateVideo.isPlaying)
+        {
+            TemplateVideo.isPlaying = true;
+            TemplateVideo video = TemplateVideo.temQueue.Dequeue();
+            video.m_Video.transform.GetComponent<VideoPlayBtn>().m_IsPlaying = false;
+            video.m_Video.transform.GetComponent<VideoPlayBtn>().PlayVideoAuto();
+            avplayer = video.m_Video;
+        }
     }
+    float lockTime = 0;
+   public  AVProVideoPlayer avplayer;
 
     public void Init()
     {
@@ -1153,6 +1176,9 @@ public class GameManager : MonoSingleton<GameManager>
         //更新编辑面板Ui
         UpdateEditorUI();
     }
+
+   
+
     /// <summary>
     /// 创建  1图片 2视频 3模型 4文字
     /// </summary>
@@ -1190,6 +1216,7 @@ public class GameManager : MonoSingleton<GameManager>
                     var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
                     go = Instantiate(pVideo, spoit.transform);
                     var videoitem = go.AddComponent<TemplateVideo>();
+                    videoitem.autoplay = material.autoplay;
                     go.SetActive(true);
                     videoitem.SetData(mat, material.updateTime);