void SFlipbookTimeline::CheckForRebuild(bool bRebuildAll) { UPaperFlipbook* Flipbook = FlipbookBeingEdited.Get(); const int32 NewNumKeyframes = (Flipbook != nullptr) ? Flipbook->GetNumKeyFrames() : 0; if ((NewNumKeyframes != NumKeyFramesFromLastRebuild) || bRebuildAll) { NumKeyFramesFromLastRebuild = NewNumKeyframes; TimelineTrack->Rebuild(); } const int32 NewNumFrames = (Flipbook != nullptr) ? Flipbook->GetNumFrames() : 0; if ((NewNumFrames != NumFramesFromLastRebuild) || bRebuildAll) { NumFramesFromLastRebuild = NewNumFrames; TimelineHeader->Rebuild(); RebuildPerFrameBG(); } }
void SFlipbookTimeline::Construct(const FArguments& InArgs, TSharedPtr<FUICommandList> InCommandList) { FlipbookBeingEdited = InArgs._FlipbookBeingEdited; PlayTime = InArgs._PlayTime; OnSelectionChanged = InArgs._OnSelectionChanged; CommandList = InCommandList; SlateUnitsPerFrame = 120.0f; BackgroundPerFrameSlices = SNew(SHorizontalBox); TimelineHeader = SNew(STimelineHeader) .SlateUnitsPerFrame(this, &SFlipbookTimeline::GetSlateUnitsPerFrame) .FlipbookBeingEdited(FlipbookBeingEdited) .PlayTime(PlayTime); TimelineTrack = SNew(SFlipbookTimelineTrack, CommandList) .SlateUnitsPerFrame(this, &SFlipbookTimeline::GetSlateUnitsPerFrame) .FlipbookBeingEdited(FlipbookBeingEdited) .OnSelectionChanged(OnSelectionChanged); ChildSlot [ SNew(SBorder) .BorderImage( FEditorStyle::GetBrush("ToolPanel.GroupBorder") ) [ SNew(SScrollBox) .Orientation(Orient_Horizontal) .ScrollBarAlwaysVisible(true) +SScrollBox::Slot() [ SNew(SOverlay) // Per-frame background +SOverlay::Slot() .VAlign(VAlign_Fill) [ BackgroundPerFrameSlices.ToSharedRef() ] // Flipbook header and track +SOverlay::Slot() [ SNew(SVerticalBox) +SVerticalBox::Slot() .AutoHeight() .Padding(0,0,0,2) [ TimelineHeader.ToSharedRef() ] +SVerticalBox::Slot() .AutoHeight() [ SNew(SBox) .HeightOverride(FFlipbookUIConstants::FrameHeight) [ TimelineTrack.ToSharedRef() ] ] ] // Empty flipbook instructions + SOverlay::Slot() .VAlign(VAlign_Center) .HAlign(HAlign_Center) [ SNew(STextBlock) .Visibility(this, &SFlipbookTimeline::NoFramesWarningVisibility) .Text(LOCTEXT("EmptyTimelineInstruction", "Right-click here or drop in sprites to add key frames")) ] ] ] ]; UPaperFlipbook* Flipbook = FlipbookBeingEdited.Get(); NumKeyFramesFromLastRebuild = (Flipbook != nullptr) ? Flipbook->GetNumKeyFrames() : 0; NumFramesFromLastRebuild = (Flipbook != nullptr) ? Flipbook->GetNumFrames() : 0; RebuildPerFrameBG(); }