ServerCanvasManager.cs
2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
using UnityEngine;
using System.Collections;
public class ServerCanvasManager : Singleton<ServerCanvasManager>
{
public AVProWindowsMediaMovie movieScript;
public CanvasGroup inUseCanvas;
public CanvasGroup timeoutCanvas;
public CanvasGroup videoCanvas;
public float tweenTime;
public float appTimeout;
void Start()
{
inUseCanvas.alpha = 1;
timeoutCanvas.alpha = 0;
videoCanvas.alpha = 0;
StartCoroutine(AppTimeout());
}
private bool _videoPlaying = false;
private float _timeout = 0;
private bool _didTimeout = false;
private IEnumerator AppTimeout()
{
while(true)
{
_timeout = 0;
_didTimeout = false;
while (!_videoPlaying)
{
if (!_didTimeout)
_timeout += Time.deltaTime;
if (_timeout >= appTimeout && !_didTimeout)
{
_didTimeout = true;
AppManager.Instance.TweenCanvasGroup(inUseCanvas, 0, tweenTime);
AppManager.Instance.TweenCanvasGroup(timeoutCanvas, 1, tweenTime);
}
yield return null;
}
yield return null;
}
}
public void ResetTimer()
{
if (_videoPlaying) return;
AppManager.Instance.TweenCanvasGroup(inUseCanvas, 1, tweenTime);
AppManager.Instance.TweenCanvasGroup(timeoutCanvas, 0, tweenTime);
_timeout = 0;
_didTimeout = false;
}
private Coroutine movieCoroutine;
public void LoadMovie(string filename)
{
movieScript.UnloadMovie();
movieScript._filename = filename;
movieScript.LoadMovie(true);
if (movieCoroutine != null)
StopCoroutine(movieCoroutine);
movieCoroutine = StartCoroutine(MoviePlaying());
}
private IEnumerator MoviePlaying()
{
StopCoroutine("AppTimeout");
_videoPlaying = true;
AppManager.Instance.TweenCanvasGroup(videoCanvas, 1, tweenTime);
//TweenCanvasGroup(inUseCanvas, 0, tweenTime);
//TweenCanvasGroup(timeoutCanvas, 0, tweenTime);
float holdTime = movieScript.MovieInstance.DurationSeconds - tweenTime;
yield return new WaitForSeconds(holdTime);
AppManager.Instance.TweenCanvasGroup(videoCanvas, 0, tweenTime);
AppManager.Instance.TweenCanvasGroup(inUseCanvas, 1, tweenTime);
yield return new WaitForSeconds(tweenTime);
_videoPlaying = false;
movieScript.UnloadMovie();
StartCoroutine("AppTimeout");
}
}