Add Games File
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#include "Morph/AnimTimeline/SAnimEditorBase.h"
|
||||
|
||||
#include "AnimPreviewInstance.h"
|
||||
#include "Animation/AnimSequenceBase.h"
|
||||
#include "Animation/BlendSpace.h"
|
||||
#include "Animation/DebugSkelMeshComponent.h"
|
||||
#include "Widgets/SBoxPanel.h"
|
||||
#include "Widgets/SOverlay.h"
|
||||
|
||||
void SAnimEditorBase::Construct(const FArguments& InArgs, const TSharedPtr<IPersonaPreviewScene>& InPreviewScene)
|
||||
{
|
||||
PreviewScenePtr = InPreviewScene;
|
||||
OnObjectsSelectedDelegate = InArgs._OnObjectsSelected;
|
||||
SetInputViewRange(0.0f, GetSequenceLength());
|
||||
|
||||
const TSharedRef<SWidget> TimelineWidget = InArgs._DisplayAnimTimeline
|
||||
? CreateAnimTimelineWidget()
|
||||
: SNullWidget::NullWidget;
|
||||
|
||||
TSharedPtr<SVerticalBox> RootBox;
|
||||
ChildSlot
|
||||
[
|
||||
SAssignNew(RootBox, SVerticalBox)
|
||||
+ SVerticalBox::Slot()
|
||||
.FillHeight(1.0f)
|
||||
[
|
||||
SNew(SOverlay)
|
||||
+ SOverlay::Slot()
|
||||
[
|
||||
SAssignNew(NonScrollEditorPanels, SVerticalBox)
|
||||
]
|
||||
+ SOverlay::Slot()
|
||||
[
|
||||
TimelineWidget
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
if (InArgs._DisplayAnimScrubBar)
|
||||
{
|
||||
RootBox->AddSlot()
|
||||
.AutoHeight()
|
||||
[
|
||||
ConstructAnimScrubPanel(InArgs._DisplayAnimScrubBarEditing)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
void SAnimEditorBase::SetInputViewRange(float InViewMinInput, float InViewMaxInput)
|
||||
{
|
||||
ViewMaxInput = FMath::Min(InViewMaxInput, GetSequenceLength());
|
||||
ViewMinInput = FMath::Max(InViewMinInput, 0.0f);
|
||||
}
|
||||
|
||||
float SAnimEditorBase::GetScrubValue() const
|
||||
{
|
||||
if (PreviewScenePtr.IsValid())
|
||||
{
|
||||
if (UDebugSkelMeshComponent* PreviewMesh = PreviewScenePtr.Pin()->GetPreviewMeshComponent())
|
||||
{
|
||||
if (PreviewMesh->PreviewInstance)
|
||||
{
|
||||
return PreviewMesh->PreviewInstance->GetCurrentTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
void SAnimEditorBase::OnSelectionChanged(const TArray<UObject*>& SelectedItems)
|
||||
{
|
||||
OnObjectsSelectedDelegate.ExecuteIfBound(SelectedItems);
|
||||
}
|
||||
|
||||
TSharedRef<SWidget> SAnimEditorBase::CreateDocumentAnchor()
|
||||
{
|
||||
return SNullWidget::NullWidget;
|
||||
}
|
||||
|
||||
TSharedRef<SWidget> SAnimEditorBase::ConstructAnimScrubPanel(bool bDisplayAnimScrubBarEditing)
|
||||
{
|
||||
return SNullWidget::NullWidget;
|
||||
}
|
||||
|
||||
float SAnimEditorBase::GetSequenceLength() const
|
||||
{
|
||||
if (const UAnimSequenceBase* AnimSequence = Cast<UAnimSequenceBase>(GetEditorObject()))
|
||||
{
|
||||
return AnimSequence->GetPlayLength();
|
||||
}
|
||||
|
||||
if (const UBlendSpace* BlendSpace = Cast<UBlendSpace>(GetEditorObject()))
|
||||
{
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
return 0.0f;
|
||||
}
|
||||
Reference in New Issue
Block a user