Ejemplo n.º 1
0
        private void Awake()
        {
            videoPlayer = GetComponent <UnityEngine.Video.VideoPlayer>();

            // TODO: Move to extension method.
            videoPlayer.targetTexture.Release();
            videoPlayer.targetTexture.width  = Screen.width;
            videoPlayer.targetTexture.height = Screen.height;

            timeline.PointerDown += () => videoPlayer.Pause();
            timeline.PointerUp   += () => videoPlayer.Play();
            timeline.Slider.onValueChanged
            .AddListener(value => videoPlayer.time = value * Duration);

            volumeSlider.ValueSlider.onValueChanged
            .AddListener(value => videoPlayer.SetDirectAudioVolume(0, value));

            playPauseToggle.onValueChanged.AddListener(isOn =>
            {
                if (isOn)
                {
                    videoPlayer.Play();
                }
                else
                {
                    videoPlayer.Pause();
                }
            });
        }
Ejemplo n.º 2
0
        void Update()
        {
            if (ArcadeManager.arcadeState == ArcadeStates.Game)
            {
                setupVideoAfterGameDisable = true;
                if (videoPlayer == null)
                {
                    return;
                }
                if (videoPlayer.enabled == true)
                {
                    videoPlayer.Pause();
                }
                return;
            }
            else if (ArcadeManager.arcadeState == ArcadeStates.Running)
            {
                if (setupVideoAfterGameDisable && dummyNode.GetComponent <ModelLibretroGameSetup>() == null)
                {
                    setupVideoAfterGameDisable = false;
                    if (videoPlayer == null)
                    {
                        return;
                    }
                    // videoPlayer.enabled = false; // TODO: Why did i have that here???
                    if (videoEnabled == ModelVideoEnabled.Never)
                    {
                        return;
                    }
                    videoPlayer.enabled = true;
                    videoPlayer.Play();
                    return;
                }
            }

            //
            if (videoPlayer != null && videoPlayer.isPlaying != videoIsActive)
            {
                videoIsActive = videoPlayer.isPlaying;
                if (videoIsActive.HasValue ? videoIsActive.Value : true)
                {
                    videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.MaterialOverride;
                }
                else
                {
                    videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.APIOnly;
                }
            }

            distance = Vector3.Distance(gameObject.transform.position, thisCamera.transform.position);
            //Debug.Log(modelProperties.descriptiveName + " distance " + distance);

            // if I am the savedArcadeModel when cylmenu or fpsmenu are active then dont put the video on me
            if (arcadeLayer && ArcadeManager.activeMenuType != ArcadeType.None && ArcadeStateManager.savedArcadeModel == gameObject.transform.parent.gameObject)
            {
                return;
            }

            if (visible == true && !setupVideoAfterGameDisable && (videoEnabled == ModelVideoEnabled.Always || (videoEnabled == ModelVideoEnabled.VisibleUnobstructed && prepareDone)))
            {
                if (IsInView(gameObject))
                {
                    if (!videoPlayer.isPlaying)
                    {
                        videoPlayer.enabled = true;
                        videoPlayer.Play();
                    }
                }
                else
                {
                    if (videoPlayer.isPlaying)
                    {
                        videoPlayer.Pause();
                    }
                }
                frames = 0;
            }

            if (!setupVideoAfterGameDisable && videoEnabled == ModelVideoEnabled.Selected)
            {
                if (ArcadeStateManager.selectedModel != null)
                {
                    if (ArcadeStateManager.selectedModel.transform == gameObject.transform.parent.transform)
                    {
                        if (!selectedDone)
                        {
                            selectedDone = true;
                            SetupVideoPlayer();
                            videoPlayer.enabled = true;
                            videoPlayer.Play();
                        }
                    }
                    else
                    {
                        selectedDone = false;
                        if (videoPlayer.isPlaying)
                        {
                            ReleasePlayer();
                        }
                    }
                }
                else
                {
                    if (videoPlayer.isPlaying)
                    {
                        ReleasePlayer();
                    }
                }
            }

            if (visible == true && !setupVideoAfterGameDisable && (videoEnabled == ModelVideoEnabled.Never || (videoEnabled == ModelVideoEnabled.Selected && selectedDone == false) || videoPlayer.isPaused) && imageList != null)
            {
                timer += Time.deltaTime;
                if (timer > waitTime)
                {
                    index += 1;
                    if (index > (imageList.Count - 1))
                    {
                        index = 0;
                    }
                    renderer.material.mainTexture = imageList[index];
                    if (renderer.material.globalIlluminationFlags == MaterialGlobalIlluminationFlags.RealtimeEmissive)
                    {
                        renderer.material.SetTexture("_EmissionMap", imageList[index]);
                    }
                    timer = 0f;
                }
            }

            if (videoPlayer == null)
            {
                return;
            }
            if (!videoPlayer.isPlaying)
            {
                return;
            }

            if (modelSharedProperties.spatialSound)
            {
                return;
            }
            // Fake sound by distance.
            float max = 10f;
            float min = 2f;
            float volumeByDistance = Mathf.Clamp(Mathf.Pow((distance - max) / (min - max), 2f), 0f, 1f);

            videoPlayer.SetDirectAudioVolume(0, volumeByDistance);
        }