72 lines
1.5 KiB
C#
72 lines
1.5 KiB
C#
using UnityEngine;
|
|
using RenderHeads.Media.AVProVideo;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
namespace RenderHeads.Media.AVProVideo.Demos
|
|
{
|
|
/// <summary>
|
|
/// Causes a video to play when the trigger collider is entered and rewind+pause when it is exited
|
|
/// Audio is faded up and down too
|
|
/// </summary>
|
|
public class VideoTrigger : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private MediaPlayer _mediaPlayer = null;
|
|
|
|
[SerializeField]
|
|
private float _fadeTimeMs = 500f;
|
|
|
|
private float _fade;
|
|
private float _fadeDirection;
|
|
|
|
private void OnTriggerEnter(Collider other)
|
|
{
|
|
if (_mediaPlayer != null)
|
|
{
|
|
_mediaPlayer.Play();
|
|
_fadeDirection = 1f;
|
|
}
|
|
}
|
|
|
|
private void OnTriggerExit(Collider other)
|
|
{
|
|
if (_mediaPlayer != null)
|
|
{
|
|
_fadeDirection = -1f;
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (_fadeDirection != 0f)
|
|
{
|
|
// Fade the value
|
|
float speed = 1000 / _fadeTimeMs;
|
|
_fade += Time.deltaTime * _fadeDirection * speed;
|
|
|
|
if (_fade <= 0f)
|
|
{
|
|
// Complete the fade down
|
|
_mediaPlayer.Rewind(true);
|
|
_fadeDirection = 0f;
|
|
}
|
|
else if (_fade >= 1f)
|
|
{
|
|
// Complete the fade up
|
|
_fadeDirection = 0f;
|
|
}
|
|
|
|
_fade = Mathf.Clamp01(_fade);
|
|
|
|
// Set the volume
|
|
if (_mediaPlayer != null && _mediaPlayer.Control != null)
|
|
{
|
|
_mediaPlayer.Control.SetVolume(_fade);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |