CarmenSandiego/Assets/UdonSharp/BasicSyncPlayer.cs

62 lines
1.2 KiB
C#

using UdonSharp;
using UnityEngine;
using VRC.SDK3.Video.Components.Base;
using VRC.SDKBase;
using VRC.Udon;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class BasicSyncPlayer : UdonSharpBehaviour
{
[SerializeField] private GameManagerRound3 _GameManager;
[SerializeField] private BaseVRCVideoPlayer _VideoPlayer;
[UdonSynced, FieldChangeCallback(nameof(VideoIndex))] private int _VideoIndex = -1;
[UdonSynced, FieldChangeCallback(nameof(PlayVideo))] private bool _VideoIsPlaying;
private void _PlayVideo_Private()
{
Debug.LogWarning("[BasicSyncPlayer] Playing video " + VideoIndex + ".");
_VideoPlayer.Play();
}
private void _StopVideo_Private()
{
Debug.LogWarning("[BasicSyncPlayer] Stopping video " + VideoIndex + ".");
_VideoPlayer.Stop();
VideoIndex = -1;
}
public int VideoIndex
{
set
{
_VideoIndex = value;
if (VideoIndex >= 0)
{
_VideoPlayer.LoadURL(_GameManager.Endings[_VideoIndex]);
}
RequestSerialization();
}
get => _VideoIndex;
}
public bool PlayVideo
{
set
{
_VideoIsPlaying = value;
if (_VideoIsPlaying) _PlayVideo_Private();
else _StopVideo_Private();
RequestSerialization();
}
get => _VideoIsPlaying;
}
}