PlayVideo.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using GameWorld;
  3. using UnityEngine;
  4. public class PlayVideo
  5. {
  6. private PlayVideo()
  7. {
  8. EventManager.RegisterEvent<PauseGameArgs>("PauseGame", new EventManager.FBEventHandler<PauseGameArgs>(this.OnPauseGame), EventManager.ListenerQueue.Game);
  9. }
  10. public static PlayVideo CreateVideo(Renderer videoRenderer)
  11. {
  12. return new PlayVideo
  13. {
  14. _playVideo = AVPlayVideo.CreateVideo(videoRenderer)
  15. };
  16. }
  17. public Coroutine Play(string moviePath, string moiveName, bool isLooping = false)
  18. {
  19. return this._playVideo.Play(moviePath, moiveName, isLooping);
  20. }
  21. public void Pause()
  22. {
  23. this._playVideo.Pause();
  24. }
  25. public void Resume()
  26. {
  27. this._playVideo.Resume();
  28. }
  29. public void Stop()
  30. {
  31. this._playVideo.Stop();
  32. }
  33. public void Dispose()
  34. {
  35. EventManager.UnregisterEvent<PauseGameArgs>("PauseGame", new EventManager.FBEventHandler<PauseGameArgs>(this.OnPauseGame), EventManager.ListenerQueue.Game);
  36. this._playVideo.Destroy();
  37. }
  38. public Renderer VideoRenderer
  39. {
  40. get
  41. {
  42. return this._playVideo.VideoRenderer;
  43. }
  44. }
  45. private bool OnPauseGame(string eventdefine, object sender, PauseGameArgs msg)
  46. {
  47. PauseGameArgs.State status = msg.Status;
  48. if (status != PauseGameArgs.State.Pause)
  49. {
  50. if (status != PauseGameArgs.State.Resume)
  51. {
  52. throw new ArgumentOutOfRangeException();
  53. }
  54. this.Resume();
  55. }
  56. else
  57. {
  58. this.Pause();
  59. }
  60. return true;
  61. }
  62. private IPlayVideo _playVideo;
  63. }