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