63 lines
2.1 KiB
C++
63 lines
2.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
// Vendored for FunnyGirlEditor (adapted from UE Persona private SAnimEditorBase).
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "UObject/GCObject.h"
|
|
#include "IPersonaPreviewScene.h"
|
|
#include "Widgets/SCompoundWidget.h"
|
|
#include "PersonaDelegates.h"
|
|
|
|
class UAnimationAsset;
|
|
class UAnimPreviewInstance;
|
|
|
|
class FUNNYGIRLEDITOR_API SAnimEditorBase : public SCompoundWidget, public FGCObject
|
|
{
|
|
public:
|
|
SLATE_BEGIN_ARGS(SAnimEditorBase)
|
|
: _DisplayAnimTimeline(true)
|
|
, _DisplayAnimScrubBar(false)
|
|
, _DisplayAnimScrubBarEditing(false)
|
|
{}
|
|
|
|
SLATE_EVENT(FOnObjectsSelected, OnObjectsSelected)
|
|
SLATE_ARGUMENT(bool, DisplayAnimTimeline)
|
|
SLATE_ARGUMENT(bool, DisplayAnimScrubBar)
|
|
SLATE_ARGUMENT(bool, DisplayAnimScrubBarEditing)
|
|
SLATE_END_ARGS()
|
|
|
|
void Construct(const FArguments& InArgs, const TSharedPtr<IPersonaPreviewScene>& InPreviewScene);
|
|
|
|
float GetViewMinInput() const { return ViewMinInput; }
|
|
float GetViewMaxInput() const { return ViewMaxInput; }
|
|
float GetMinInput() const { return 0.0f; }
|
|
float GetMaxInput() const { return GetSequenceLength(); }
|
|
|
|
void SetInputViewRange(float InViewMinInput, float InViewMaxInput);
|
|
float GetScrubValue() const;
|
|
void OnSelectionChanged(const TArray<UObject*>& SelectedItems);
|
|
|
|
// FGCObject
|
|
virtual void AddReferencedObjects(FReferenceCollector& Collector) override {}
|
|
virtual FString GetReferencerName() const override { return TEXT("FunnyGirlVendoredSAnimEditorBase"); }
|
|
|
|
virtual TSharedRef<SWidget> CreateDocumentAnchor();
|
|
|
|
protected:
|
|
virtual TSharedRef<SWidget> CreateAnimTimelineWidget() = 0;
|
|
virtual TSharedRef<SWidget> ConstructAnimScrubPanel(bool bDisplayAnimScrubBarEditing);
|
|
virtual UAnimationAsset* GetEditorObject() const = 0;
|
|
float GetSequenceLength() const;
|
|
|
|
TSharedRef<IPersonaPreviewScene> GetPreviewScene() const { return PreviewScenePtr.Pin().ToSharedRef(); }
|
|
|
|
protected:
|
|
TWeakPtr<IPersonaPreviewScene> PreviewScenePtr;
|
|
TSharedPtr<SVerticalBox> EditorPanels;
|
|
TSharedPtr<SVerticalBox> NonScrollEditorPanels;
|
|
FOnObjectsSelected OnObjectsSelectedDelegate;
|
|
float ViewMinInput = 0.0f;
|
|
float ViewMaxInput = 0.0f;
|
|
};
|