using System; using System.Collections; using System.Collections.Generic; using System.Reflection; using UnityEngine; public abstract class ModuleVideo : MonoBehaviour { protected virtual ModuleCore Core => ModuleCore.I; protected virtual void Awake() => Core.FunctionRegister(this); /// 视频播放状态 public virtual bool isPlaying => IsPlaying(); /// 从0开始的视频计数,x = 当前索引,y = 最大索引 public virtual Vector2Int videoCount => VideoCount(); /// 视频渲染纹理 public virtual RenderTexture renderTexture => RenderTexture(); /// 当前视频播放时间 public virtual double time => Time(); /// 最大视频播放时间 public virtual double maxTime => MaxTime(); /// 当前播放帧 public virtual long frame { get => GetFrame(); set => SetFrame(value); } /// 最大播放帧 public virtual ulong frameCount => FrameCount(); /// 视频播放状态 protected abstract bool IsPlaying(); /// 从0开始的视频计数,x = 当前索引,y = 最大索引 protected abstract Vector2Int VideoCount(); /// 视频渲染纹理 protected abstract RenderTexture RenderTexture(); /// 当前视频播放时间 protected abstract double Time(); /// 最大视频播放时间 protected abstract double MaxTime(); /// get当前播放帧 protected abstract long GetFrame(); /// set当前播放帧 protected abstract void SetFrame(long value); /// 最大播放帧 protected abstract ulong FrameCount(); /// 播放视频 public abstract void Play(); /// 暂停视频 public abstract void Pause(); /// 停止视频 public abstract void Stop(); /// 根据索引播放视频 public abstract void SetIndex(int value); /// 根据累加的索引播放视频 public abstract void AddIndex(int value); /// 设置视频数据 public abstract void SetValue(DataVideo value); /// 设置视频数据列表 public abstract void SetValue(List list); /// 设置视频数据,并且播放 public virtual void Play(DataVideo value) { SetValue(value); Play(); } /// 设置视频数据列表,并且第一个播放index位置的视频数据 public virtual void Play(List list, int index = 0) { SetValue(list); SetIndex(index); } }