From ecb901ea9acf33ce2ad0ea3619365c3e11007da4 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Sun, 2 Oct 2022 10:48:24 -0700 Subject: [PATCH] multicamwidget: look for multicams in clip links --- app/widget/multicam/multicamwidget.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/widget/multicam/multicamwidget.cpp b/app/widget/multicam/multicamwidget.cpp index 2cc388107..16fa7e5c8 100644 --- a/app/widget/multicam/multicamwidget.cpp +++ b/app/widget/multicam/multicamwidget.cpp @@ -115,13 +115,15 @@ void MulticamWidget::Switch(int source, bool split_clip) MultiCamNode *cam = node_; ClipBlock *clip = clip_; + BlockSplitPreservingLinksCommand *split = nullptr; + if (clip_ && split_clip && clip_->in() < GetTime() && clip_->out() > GetTime()) { QVector blocks; blocks.append(clip_); blocks.append(clip_->block_links()); - auto split = new BlockSplitPreservingLinksCommand(blocks, {GetTime()}); + split = new BlockSplitPreservingLinksCommand(blocks, {GetTime()}); split->redo_now(); command->add_child(split); @@ -131,6 +133,15 @@ void MulticamWidget::Switch(int source, bool split_clip) } command->add_child(new NodeParamSetStandardValueCommand(NodeKeyframeTrackReference(NodeInput(cam, cam->kCurrentInput)), source)); + + for (Block *link : clip->block_links()) { + if (ClipBlock *clink = dynamic_cast(link)) { + if (MultiCamNode *mlink = clink->FindMulticam()) { + command->add_child(new NodeParamSetStandardValueCommand(NodeKeyframeTrackReference(NodeInput(mlink, mlink->kCurrentInput)), source)); + } + } + } + Core::instance()->undo_stack()->push(command); display_->update();