12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using UnityEngine;
- namespace RenderHeads.Media.AVProVideo.Demos
- {
- public class StartEndPoint : MonoBehaviour
- {
- private void OnEnable()
- {
- this._isStartQueued = true;
- }
- private void Update()
- {
- if (StartEndPoint.IsVideoLoaded(this._mediaPlayer))
- {
- if (this._isStartQueued)
- {
- StartEndPoint.DoStart(this._mediaPlayer, this._startPointSeconds);
- this._isStartQueued = false;
- }
- else if (!this._loop)
- {
- StartEndPoint.DoCheckEnd(this._mediaPlayer, this._endPointSeconds);
- }
- else
- {
- StartEndPoint.DoCheckLoop(this._mediaPlayer, this._endPointSeconds, this._startLoopSeconds);
- }
- }
- }
- private static bool IsVideoLoaded(MediaPlayer mp)
- {
- return mp != null && mp.Control != null && mp.Control.HasMetaData();
- }
- private static void DoStart(MediaPlayer mp, float positionSeconds)
- {
- mp.Control.Seek(positionSeconds * 1000f);
- mp.Play();
- }
- private static void DoCheckEnd(MediaPlayer mp, float positionSeconds)
- {
- if (mp.Control.IsPlaying() && mp.Control.GetCurrentTimeMs() >= positionSeconds * 1000f)
- {
- mp.Pause();
- }
- }
- private static void DoCheckLoop(MediaPlayer mp, float positionSeconds, float positionLoop)
- {
- if (mp.Control.IsPlaying() && mp.Control.GetCurrentTimeMs() >= positionSeconds * 1000f)
- {
- mp.Control.Seek(positionLoop * 1000f);
- }
- }
- public MediaPlayer _mediaPlayer;
- public float _startPointSeconds;
- public float _endPointSeconds;
- public bool _loop;
- [Tooltip("If looping is enabled, this is the time the video rewinds to when it reaches the end point")]
- public float _startLoopSeconds;
- private bool _isStartQueued;
- }
- }
|