예제 #1
0
    public void FixedUpdate()
    {
        elapsedTime += Time.deltaTime;;

        if (elapsedTime <= 5)
        {
            return;
        }

        elapsedTime = 0;

        if (videoPlayer.GetVideoPlayer() == null)
        {
            return;
        }

        if (master == null)
        {
            GetMaster();
        }

        masterTextComponent.text = $"{master.displayName}";
        ownerTextComponent.text  = $"{Networking.GetOwner(videoPlayer.gameObject).displayName}";
        var url = videoPlayer.GetUrl();

        inputField.textComponent.text = url.Get();
        inputField.SetUrl(url);
    }
예제 #2
0
 public void OnPowerOff()
 {
     DebugLog($"Received a power-off event.");
     enabled = false;
     _status = _status_off | _status_stop;
     _player1.Stop();
     _player2.Stop();
     _addressInput.SetUrl(VRCUrl.Empty);
     _player       = null;
     _progressDrag = false;
     ValidateView();
 }
예제 #3
0
        public void _HandleUrlInputDelay()
        {
            VRCUrl url = urlInput.GetUrl();

            urlInput.SetUrl(VRCUrl.Empty);

            // Hack to get around Unity always firing OnEndEdit event for submit and lost focus
            // If loading override was on, but it's off immediately after submit, assume user closed override
            // instead of submitting.  Half second delay is a crude defense against a UI race.
            if (pendingFromLoadOverride && !loadActive)
            {
                return;
            }

            videoPlayer._ChangeUrl(url);
            loadActive = false;
        }
예제 #4
0
        void PlayVideo(VRCUrl url, bool disablePlaylist)
        {
            bool isOwner = Networking.IsOwner(gameObject);

            if (!isOwner && !Networking.IsMaster && _masterOnly)
            {
                return;
            }

            if (_syncedURL != null && url.Get() == "")
            {
                return;
            }

            if (!isOwner)
            {
                Networking.SetOwner(Networking.LocalPlayer, gameObject);
            }

            if (disablePlaylist)
            {
                // -1 means we have stopped using the playlist since we had manual input
                _nextPlaylistIndex = -1;
            }

            StopVideo();

            _syncedURL = url;
            inputField.SetUrl(VRCUrl.Empty);

            if (isOwner)
            {
                _videoNumber++;
            }
            else // Add two to avoid having conflicts where the old owner increases the count
            {
                _videoNumber += 2;
            }

            _loadedVideoNumber = _videoNumber;
            StartVideoLoad(_syncedURL);
            _currentPlayer.Stop();
            _ownerPlaying  = false;
            _locallyPaused = _ownerPaused = false;

            _videoStartNetworkTime = float.MaxValue;

            if (Networking.IsOwner(gameObject))
            {
                // Attempt to parse out a start time from YouTube links with t= or start=
                string urlStr = url.Get();

                if (currentPlayerMode != PLAYER_MODE_STREAM &&
                    (urlStr.Contains("youtube.com/watch") ||
                     urlStr.Contains("youtu.be/")))
                {
                    int tIndex = -1;

                    tIndex = urlStr.IndexOf("?t=");

                    if (tIndex == -1)
                    {
                        tIndex = urlStr.IndexOf("&t=");
                    }
                    if (tIndex == -1)
                    {
                        tIndex = urlStr.IndexOf("?start=");
                    }
                    if (tIndex == -1)
                    {
                        tIndex = urlStr.IndexOf("&start=");
                    }

                    if (tIndex != -1)
                    {
                        char[] urlArr = urlStr.ToCharArray();
                        int    numIdx = urlStr.IndexOf('=', tIndex) + 1;

                        string intStr = "";

                        while (numIdx < urlArr.Length)
                        {
                            char currentChar = urlArr[numIdx];
                            if (!char.IsNumber(currentChar))
                            {
                                break;
                            }

                            intStr += currentChar;

                            ++numIdx;
                        }

                        if (intStr.Length > 0)
                        {
                            int secondsCount = 0;
                            if (int.TryParse(intStr, out secondsCount))
                            {
                                _videoTargetStartTime = secondsCount;
                            }
                            else
                            {
                                _videoTargetStartTime = 0f;
                            }
                        }
                        else
                        {
                            _videoTargetStartTime = 0f;
                        }
                    }
                    else
                    {
                        _videoTargetStartTime = 0f;
                    }
                }
                else
                {
                    _videoTargetStartTime = 0f;
                }
            }
            else
            {
                _videoTargetStartTime = 0f;
            }

            Debug.Log("[USharpVideo] Video URL Changed to " + _syncedURL);
        }