Petition-to-the-Gods-V3/Assets/Scripts/The2ndScreen/The2ndScreenClientSceneController.cs

258 lines
6.4 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class The2ndScreenClientSceneController : MonoBehaviour
{
public static The2ndScreenClientSceneController Instance;
public GameObject Panel_01;
public GameObject Panel_02;
public VideoPlayer Panel_02_vplayer;
public RawImage Panel_02_vplayer_rawImage;
public GameObject Panel_03;
public VideoPlayer Panel_03_vplayer;
public RawImage Panel_03_vplayer_rawImage;
public GameObject Panel_04;
public VideoPlayer Panel_04_vplayer;
public RawImage Panel_04_vplayer_rawImage;
public GameObject Panel_05;
public VideoPlayer Panel_05_vplayer;
public RawImage Panel_05_vplayer_rawImage;
public GameObject Panel_06;
public VideoPlayer Panel_06_vplayer;
public RawImage Panel_06_vplayer_rawImage;
private int currentStep = 0;
private List<int> StepQ = new List<int>();
private bool isPlaying = false;
private void Awake()
{
Instance = this;
}
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
if (Panel_02_vplayer)
{
SetupVideoPlayer(Panel_02_vplayer, Panel_02_vplayer_rawImage, false, VideoPlayer_02_OnLoopPointReached);
//Panel_02_vplayer.Play();
}
if (Panel_03_vplayer)
{
SetupVideoPlayer(Panel_03_vplayer, Panel_03_vplayer_rawImage, false, VideoPlayer_03_OnLoopPointReached);
//Panel_03_vplayer.Play();
}
if (Panel_04_vplayer)
{
SetupVideoPlayer(Panel_04_vplayer, Panel_04_vplayer_rawImage, false, VideoPlayer_04_OnLoopPointReached);
//Panel_04_vplayer.Play();
}
if (Panel_05_vplayer)
{
SetupVideoPlayer(Panel_05_vplayer, Panel_05_vplayer_rawImage, false, VideoPlayer_05_OnLoopPointReached);
//Panel_05_vplayer.Play();
}
if (Panel_06_vplayer)
{
SetupVideoPlayer(Panel_06_vplayer, Panel_06_vplayer_rawImage, false, VideoPlayer_06_OnLoopPointReached);
//Panel_06_vplayer.Play();
}
}
void SetupVideoPlayer(VideoPlayer videoPlayer, RawImage rawImage, bool isLooping, VideoPlayer.EventHandler OnLoopPointReached)
{
if (videoPlayer != null)
{
if (OnLoopPointReached != null)
{
videoPlayer.loopPointReached += OnLoopPointReached;
}
videoPlayer.isLooping = isLooping;
if (rawImage != null)
{
videoPlayer.targetTexture = null;
videoPlayer.renderMode = VideoRenderMode.RenderTexture;
RenderTexture rt = new RenderTexture(1920, 1080, 24);
videoPlayer.targetTexture = rt;
rawImage.texture = rt;
}
}
}
private void VideoPlayer_02_OnLoopPointReached(VideoPlayer source)
{
isPlaying = false;
if (StepQ.Count > 0)
{
processStep(StepQ[0]);
StepQ.RemoveAt(0);
}
}
private void VideoPlayer_03_OnLoopPointReached(VideoPlayer source)
{
isPlaying = false;
if (StepQ.Count > 0)
{
processStep(StepQ[0]);
StepQ.RemoveAt(0);
}
}
private void VideoPlayer_04_OnLoopPointReached(VideoPlayer source)
{
isPlaying = false;
if (StepQ.Count > 0)
{
processStep(StepQ[0]);
StepQ.RemoveAt(0);
}
}
private void VideoPlayer_05_OnLoopPointReached(VideoPlayer source)
{
isPlaying = false;
if (StepQ.Count > 0)
{
processStep(StepQ[0]);
StepQ.RemoveAt(0);
}
}
private void VideoPlayer_06_OnLoopPointReached(VideoPlayer source)
{
isPlaying = false;
if (StepQ.Count > 0)
{
processStep(StepQ[0]);
StepQ.RemoveAt(0);
}
}
public void processQueueStep(int step)
{
if (step == 0)
{
StepQ.Clear();
processStep(0);
}
else
{
if (isPlaying)
{
if (StepQ.Count > 0)
{
if (StepQ[StepQ.Count - 1] != step)
{
StepQ.Add(step);
}
}
else
{
StepQ.Add(step);
}
}
else
{
processStep(step);
}
}
}
public void processStep(int step)
{
isPlaying = false;
if (Panel_01)
{
Panel_01.SetActive(step == 1);
if (step == 1)
{
}
else
{
}
}
if (Panel_02)
{
Panel_02.SetActive(step == 2);
if (step == 2)
{
Panel_02_vplayer.Play();
isPlaying = true;
}
else
{
Panel_02_vplayer.Stop();
}
}
if (Panel_03)
{
Panel_03.SetActive(step == 3);
if (step == 3)
{
Panel_03_vplayer.Play();
isPlaying = true;
}
else
{
Panel_03_vplayer.Stop();
}
}
if (Panel_04)
{
Panel_04.SetActive(step == 4);
if (step == 4)
{
Panel_04_vplayer.Play();
isPlaying = true;
}
else
{
Panel_04_vplayer.Stop();
}
}
if (Panel_05)
{
Panel_05.SetActive(step == 5);
if (step == 5)
{
Panel_05_vplayer.Play();
isPlaying = true;
}
else
{
Panel_05_vplayer.Stop();
}
}
if (Panel_06)
{
Panel_06.SetActive(step == 6);
if (step == 6)
{
Panel_06_vplayer.Play();
isPlaying = true;
}
else
{
Panel_06_vplayer.Stop();
}
}
currentStep = step;
}
// Update is called once per frame
void Update()
{
}
}