You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.6 KiB
35 lines
1.6 KiB
using System; |
|
using UnityEngine; |
|
using UnityEngine.Playables; |
|
|
|
namespace Timeline.Samples |
|
{ |
|
// The runtime instance of the VideoTrack. It is responsible for letting the VideoPlayableBehaviours |
|
// they need to start loading the video |
|
public sealed class VideoSchedulerPlayableBehaviour : PlayableBehaviour |
|
{ |
|
// Called every frame that the timeline is evaluated. This is called prior to |
|
// PrepareFrame on any of its input playables. |
|
public override void PrepareFrame(Playable playable, FrameData info) |
|
{ |
|
// Searches for clips that are in the 'preload' area and prepares them for playback |
|
var timelineTime = playable.GetGraph().GetRootPlayable(0).GetTime(); |
|
for (int i = 0; i < playable.GetInputCount(); i++) |
|
{ |
|
if (playable.GetInput(i).GetPlayableType() != typeof(VideoPlayableBehaviour)) |
|
continue; |
|
|
|
if (playable.GetInputWeight(i) <= 0.0f) |
|
{ |
|
ScriptPlayable<VideoPlayableBehaviour> scriptPlayable = (ScriptPlayable<VideoPlayableBehaviour>)playable.GetInput(i); |
|
VideoPlayableBehaviour videoPlayableBehaviour = scriptPlayable.GetBehaviour(); |
|
double preloadTime = Math.Max(0.0, videoPlayableBehaviour.preloadTime); |
|
double clipStart = videoPlayableBehaviour.startTime; |
|
|
|
if (timelineTime > clipStart - preloadTime && timelineTime <= clipStart) |
|
videoPlayableBehaviour.PrepareVideo(); |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|