Refactoring
This commit is contained in:
@@ -8,7 +8,12 @@ class FUICommandList;
|
||||
class AActor;
|
||||
class IPersonaPreviewScene;
|
||||
class IPersonaToolkit;
|
||||
class UAnimationAsset;
|
||||
class UAnimMontage;
|
||||
class UAnimSequence;
|
||||
class UDebugSkelMeshComponent;
|
||||
class UMorphPresetRetargetPreviewAnimInstance;
|
||||
class UIKRetargeter;
|
||||
class ULipSyncComponent;
|
||||
class ULipSyncMappingDataAsset;
|
||||
class UMorphControllerComponent;
|
||||
@@ -27,6 +32,11 @@ public:
|
||||
UMorphPresetDataAsset* GetPreset() const;
|
||||
USkeletalMesh* GetPreviewMesh() const;
|
||||
bool SetPreviewMesh(USkeletalMesh* InPreviewMesh);
|
||||
USkeletalMesh* GetAnimationPreviewMesh() const;
|
||||
UAnimMontage* GetPreviewMontage() const;
|
||||
bool SetPreviewMontage(UAnimMontage* InMontage);
|
||||
UIKRetargeter* GetPreviewIKRetargeter() const;
|
||||
bool SetPreviewIKRetargeter(UIKRetargeter* InRetargeter);
|
||||
|
||||
TSharedPtr<IPersonaToolkit> GetPersonaToolkit() const { return PersonaToolkit; }
|
||||
TSharedPtr<IPersonaPreviewScene> GetPreviewScene() const;
|
||||
@@ -65,8 +75,15 @@ public:
|
||||
private:
|
||||
void RebuildPreviewScene();
|
||||
void RebuildPreviewAnimation();
|
||||
void RebuildAnimationPreviewMesh();
|
||||
void DestroyAnimationPreviewMesh();
|
||||
void ApplyPresetToPreview();
|
||||
void RefreshPreviewAnimationPose();
|
||||
void RefreshAnimationPreviewPose();
|
||||
void ConfigureRetargetPreview();
|
||||
void ClearRetargetPreview(bool bRestorePreviewAnimation);
|
||||
UAnimationAsset* ResolveMontagePreviewAnimation(float& OutAssetTime, float& OutAssetLength) const;
|
||||
bool HasRetargetPreview() const;
|
||||
void RebuildLipSyncPreviewComponents();
|
||||
void DestroyLipSyncPreviewComponents();
|
||||
void TickLipSyncPreviewComponents(float DeltaTime);
|
||||
@@ -79,6 +96,10 @@ private:
|
||||
TStrongObjectPtr<UAnimSequence> PreviewAnimation;
|
||||
TStrongObjectPtr<ULipSyncMappingDataAsset> DefaultLipSyncPreviewMapping;
|
||||
TWeakObjectPtr<USkeletalMesh> ActivePreviewMesh;
|
||||
TWeakObjectPtr<USkeletalMesh> ActiveAnimationPreviewMesh;
|
||||
TWeakObjectPtr<USkeletalMeshComponent> AnimationPreviewMeshComponent;
|
||||
TWeakObjectPtr<UMorphPresetRetargetPreviewAnimInstance> RetargetPreviewInstance;
|
||||
TWeakObjectPtr<UIKRetargeter> ActivePreviewIKRetargeter;
|
||||
TWeakObjectPtr<ULipSyncMappingDataAsset> LipSyncPreviewMapping;
|
||||
TWeakObjectPtr<USoundBase> LipSyncPreviewSound;
|
||||
TWeakObjectPtr<AActor> LipSyncPreviewActor;
|
||||
@@ -87,6 +108,7 @@ private:
|
||||
bool bIsPlaying = false;
|
||||
bool bLipSyncPreviewAudioActive = false;
|
||||
float CurrentTime = 0.0f;
|
||||
uint64 LastTickFrameNumber = MAX_uint64;
|
||||
float LipSyncPreviewSmoothness = 0.55f;
|
||||
FText LipSyncPreviewTranscript;
|
||||
FText PreviewStatusText;
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Animation/AnimInstanceProxy.h"
|
||||
#include "Animation/AnimInstance.h"
|
||||
#include "AnimNodes/AnimNode_RetargetPoseFromMesh.h"
|
||||
#include "MorphPresetRetargetPreviewAnimInstance.generated.h"
|
||||
|
||||
class UIKRetargeter;
|
||||
class USkeletalMeshComponent;
|
||||
|
||||
USTRUCT()
|
||||
struct FMorphPresetRetargetPreviewAnimInstanceProxy : public FAnimInstanceProxy
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
FMorphPresetRetargetPreviewAnimInstanceProxy() = default;
|
||||
FMorphPresetRetargetPreviewAnimInstanceProxy(UAnimInstance* InAnimInstance, FAnimNode_RetargetPoseFromMesh* InRetargetNode);
|
||||
|
||||
virtual void Initialize(UAnimInstance* InAnimInstance) override;
|
||||
virtual void PreUpdate(UAnimInstance* InAnimInstance, float DeltaSeconds) override;
|
||||
virtual void CacheBones() override;
|
||||
virtual bool Evaluate(FPoseContext& Output) override;
|
||||
virtual void UpdateAnimationNode(const FAnimationUpdateContext& InContext) override;
|
||||
|
||||
void Configure(UIKRetargeter* InRetargeter, TWeakObjectPtr<USkeletalMeshComponent> InSourceMeshComponent);
|
||||
|
||||
FAnimNode_RetargetPoseFromMesh* RetargetNode = nullptr;
|
||||
};
|
||||
|
||||
UCLASS(Transient, NotBlueprintable)
|
||||
class FUNNYGIRLEDITOR_API UMorphPresetRetargetPreviewAnimInstance : public UAnimInstance
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UMorphPresetRetargetPreviewAnimInstance(const FObjectInitializer& ObjectInitializer);
|
||||
|
||||
void Configure(UIKRetargeter* InRetargeter, TWeakObjectPtr<USkeletalMeshComponent> InSourceMeshComponent);
|
||||
|
||||
protected:
|
||||
virtual void NativeInitializeAnimation() override;
|
||||
virtual FAnimInstanceProxy* CreateAnimInstanceProxy() override;
|
||||
|
||||
UPROPERTY(Transient)
|
||||
FAnimNode_RetargetPoseFromMesh RetargetNode;
|
||||
};
|
||||
@@ -6,6 +6,8 @@
|
||||
#include "Widgets/SCompoundWidget.h"
|
||||
|
||||
class FMorphPresetEditorController;
|
||||
class UAnimMontage;
|
||||
class UIKRetargeter;
|
||||
class ULipSyncMappingDataAsset;
|
||||
class USoundBase;
|
||||
class USkeletalMesh;
|
||||
@@ -24,9 +26,13 @@ public:
|
||||
private:
|
||||
void RebuildContent();
|
||||
void OnPreviewMeshChanged(const struct FAssetData& AssetData);
|
||||
void OnPreviewMontageChanged(const struct FAssetData& AssetData);
|
||||
void OnPreviewIKRetargeterChanged(const struct FAssetData& AssetData);
|
||||
void OnLipSyncSoundChanged(const struct FAssetData& AssetData);
|
||||
void OnLipSyncMappingChanged(const struct FAssetData& AssetData);
|
||||
FString GetSelectedPreviewMeshPath() const;
|
||||
FString GetSelectedPreviewMontagePath() const;
|
||||
FString GetSelectedPreviewIKRetargeterPath() const;
|
||||
FString GetSelectedLipSyncSoundPath() const;
|
||||
FString GetSelectedLipSyncMappingPath() const;
|
||||
FReply OnPlayLipSyncClicked();
|
||||
|
||||
Reference in New Issue
Block a user