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; } }