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