public override void MouseDragEnd(int x, int y, int deltaX, int deltaY, int w, int h) { var vclip = uiObjects.CurrentVideoClip; var aclip = uiObjects.CurrentAudioClipHover; var absPosVid = proj.GetVideoClipAbsFramePositionLeft(vclip) - vclip.FrameStart - vclip.EasingLeft; var absPosAud = aclip.FrameOffset - aclip.FrameStart; var synchFrames = absPosAud - absPosVid; var newLink = new VidkaAudioClipLink { AudioClip = uiObjects.CurrentAudioClipHover, SynchFrames = synchFrames, }; var oldLinkToSameAudio = vclip.AudioClipLinks.FirstOrDefault(lll => lll.AudioClip == aclip); if (oldLinkToSameAudio != null) { // .... swap VidkaAudioClipLink for the updated one iEditor.AddUndableAction_andFireRedo(new UndoableAction() { Redo = () => { cxzxc("update video-audio link: " + synchFrames); vclip.AudioClipLinks.Remove(oldLinkToSameAudio); vclip.AudioClipLinks.Add(newLink); }, Undo = () => { cxzxc("restore prev link " + oldLinkToSameAudio.SynchFrames); vclip.AudioClipLinks.Remove(newLink); vclip.AudioClipLinks.Add(oldLinkToSameAudio); }, PostAction = () => { } }); closeThisOp(); return; } if (vclip == null || aclip == null) { closeThisOp(); return; } iEditor.AddUndableAction_andFireRedo(new UndoableAction() { Redo = () => { cxzxc("Linking video-audio: " + synchFrames); vclip.AudioClipLinks.Add(newLink); }, Undo = () => { cxzxc("UNDO linking"); vclip.AudioClipLinks.Remove(newLink); }, PostAction = () => {} }); closeThisOp(); }
public override void MouseDragEnd(int x, int y, int deltaX, int deltaY, int w, int h) { var vclip = uiObjects.CurrentVideoClip; var aclip = uiObjects.CurrentAudioClipHover; if (vclip.AudioClipLinks.Any(lll => lll.AudioClip == aclip)) { closeThisOp(); return; } if (vclip == null || aclip == null) { closeThisOp(); return; } var absPosVid = proj.GetVideoClipAbsFramePositionLeft(vclip) - vclip.FrameStart; var absPosAud = aclip.FrameOffset - aclip.FrameStart; var synchFrames = absPosAud - absPosVid; var newLink = new VidkaAudioClipLink { AudioClip = uiObjects.CurrentAudioClipHover, SynchFrames = synchFrames, }; iEditor.AddUndableAction_andFireRedo(new UndoableAction() { Redo = () => { cxzxc("Linking video-audio: " + synchFrames); vclip.AudioClipLinks.Add(newLink); }, Undo = () => { cxzxc("UNDO linking"); vclip.AudioClipLinks.Remove(newLink); }, PostAction = () => {} }); closeThisOp(); }