258 lines
6.4 KiB
C#
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()
|
|
{
|
|
|
|
}
|
|
}
|