FReply SAnimationSegmentScrubPanel::OnClick_Forward() { UAnimSingleNodeInstance* PreviewInst = GetPreviewInstance(); if (PreviewInst) { bool bIsReverse = PreviewInst->IsReverse(); bool bIsPlaying = PreviewInst->IsPlaying(); // if current bIsReverse and bIsPlaying, we'd like to just turn off reverse if (bIsReverse && bIsPlaying) { PreviewInst->SetReverse(false); } // already playing, simply pause else if (bIsPlaying) { PreviewInst->SetPlaying(false); } // if not playing, play forward else { PreviewInst->SetReverse(false); PreviewInst->SetPlaying(true); } } return FReply::Handled(); }
EPlaybackMode::Type SAnimationSegmentScrubPanel::GetPlaybackMode() const { UAnimSingleNodeInstance* PreviewInst = GetPreviewInstance(); if (PreviewInst && PreviewInst->IsPlaying()) { return PreviewInst->IsReverse() ? EPlaybackMode::PlayingReverse : EPlaybackMode::PlayingForward; } return EPlaybackMode::Stopped; }