// 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& 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& SelectedItems); // FGCObject virtual void AddReferencedObjects(FReferenceCollector& Collector) override {} virtual FString GetReferencerName() const override { return TEXT("FunnyGirlVendoredSAnimEditorBase"); } virtual TSharedRef CreateDocumentAnchor(); protected: virtual TSharedRef CreateAnimTimelineWidget() = 0; virtual TSharedRef ConstructAnimScrubPanel(bool bDisplayAnimScrubBarEditing); virtual UAnimationAsset* GetEditorObject() const = 0; float GetSequenceLength() const; TSharedRef GetPreviewScene() const { return PreviewScenePtr.Pin().ToSharedRef(); } protected: TWeakPtr PreviewScenePtr; TSharedPtr EditorPanels; TSharedPtr NonScrollEditorPanels; FOnObjectsSelected OnObjectsSelectedDelegate; float ViewMinInput = 0.0f; float ViewMaxInput = 0.0f; };