private long setCurFrameMarkerPositionToNextOrPrevClip(Keys keyData)
{
long frameOffset = 0;
var curClipIndex = Proj.GetVideoClipIndexAtFrame_forceOnLastClip(UiObjects.CurrentMarkerFrame, out frameOffset);
if (curClipIndex == -1)
return SetFrameMarker_ShowFrameInPlayer(0);
var clip = Proj.ClipsVideo[curClipIndex];
var framesToStartOfClip = frameOffset - clip.FrameStartNoEase;
if (keyData == Keys.Left)
{
frameOffset = 0;
if (framesToStartOfClip > 0) // special case: go to beginning of this clip
clip = Proj.ClipsVideo[curClipIndex];
else if (curClipIndex > 0)
clip = Proj.ClipsVideo[curClipIndex-1];
}
else if (keyData == Keys.Right)
{
frameOffset = 0;
if (curClipIndex < Proj.ClipsVideo.Count - 1)
clip = Proj.ClipsVideo[curClipIndex + 1];
else
frameOffset = clip.LengthFrameCalc;
}
var frameAbs = Proj.GetVideoClipAbsFramePositionLeft(clip);
UiObjects.SetActiveVideo(clip, Proj);
UiObjects.SetHoverVideo(null);
SetFrameMarker_ShowFrameInPlayer(frameAbs + frameOffset);
return 0;
}