You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Merge from Release-Engine-Staging @ 17915896 to Release-Engine-Test
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035 [CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "SAnimationModifiersTab.h"
|
||||
#include "AnimationModifierDetailCustomization.h"
|
||||
#include "AnimationModifierHelpers.h"
|
||||
#include "AnimationModifiersTabSummoner.h"
|
||||
|
||||
#include "Modules/ModuleManager.h"
|
||||
@@ -17,6 +18,8 @@
|
||||
#include "Framework/Application/SlateApplication.h"
|
||||
#include "Interfaces/IMainFrameModule.h"
|
||||
|
||||
#include "AnimationModifierSettings.h"
|
||||
|
||||
#include "AnimationModifiersAssetUserData.h"
|
||||
|
||||
#define LOCTEXT_NAMESPACE "AnimationModifiersModule"
|
||||
@@ -32,6 +35,16 @@ void FAnimationModifiersModule::StartupModule()
|
||||
// Add application mode extender
|
||||
Extender = FWorkflowApplicationModeExtender::CreateRaw(this, &FAnimationModifiersModule::ExtendApplicationMode);
|
||||
FWorkflowCentricApplication::GetModeExtenderList().Add(Extender);
|
||||
|
||||
// Register delegates during PostEngineInit as this module is part of preload phase and GEditor is not valid yet
|
||||
FCoreDelegates::OnPostEngineInit.AddLambda([this]()
|
||||
{
|
||||
if (GEditor)
|
||||
{
|
||||
GEditor->GetEditorSubsystem<UImportSubsystem>()->OnAssetPostImport.AddRaw(this, &FAnimationModifiersModule::OnAssetPostImport);
|
||||
GEditor->GetEditorSubsystem<UImportSubsystem>()->OnAssetReimport.AddRaw(this, &FAnimationModifiersModule::OnAssetPostReimport);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
TSharedRef<FApplicationMode> FAnimationModifiersModule::ExtendApplicationMode(const FName ModeName, TSharedRef<FApplicationMode> InMode)
|
||||
@@ -46,6 +59,48 @@ TSharedRef<FApplicationMode> FAnimationModifiersModule::ExtendApplicationMode(co
|
||||
return InMode;
|
||||
}
|
||||
|
||||
void FAnimationModifiersModule::OnAssetPostImport(UFactory* ImportFactory, UObject* ImportedObject)
|
||||
{
|
||||
// Check whether or not the imported asset is a AnimSequence
|
||||
if (UAnimSequence* AnimationSequence = Cast<UAnimSequence>(ImportedObject))
|
||||
{
|
||||
// Check whether or not there are any default modifiers which should be added to the new sequence
|
||||
const TArray<TSubclassOf<UAnimationModifier>>& DefaultModifiers = GetDefault<UAnimationModifierSettings>()->DefaultAnimationModifiers;
|
||||
if (DefaultModifiers.Num())
|
||||
{
|
||||
UAnimationModifiersAssetUserData* AssetUserData = FAnimationModifierHelpers::RetrieveOrCreateModifierUserData(AnimationSequence);
|
||||
for (TSubclassOf<UAnimationModifier> ModifierClass : DefaultModifiers)
|
||||
{
|
||||
if (ModifierClass.Get())
|
||||
{
|
||||
UObject* Outer = AssetUserData;
|
||||
UAnimationModifier* Processor = FAnimationModifierHelpers::CreateModifierInstance(Outer, *ModifierClass);
|
||||
AssetUserData->Modify();
|
||||
AssetUserData->AddAnimationModifier(Processor);
|
||||
}
|
||||
}
|
||||
|
||||
if (GetDefault<UAnimationModifierSettings>()->bApplyAnimationModifiersOnImport)
|
||||
{
|
||||
ApplyAnimationModifiers({AnimationSequence});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FAnimationModifiersModule::OnAssetPostReimport(UObject* ReimportedObject)
|
||||
{
|
||||
// Check whether or not the reimported asset is a AnimSequence
|
||||
if (UAnimSequence* AnimationSequence = Cast<UAnimSequence>(ReimportedObject))
|
||||
{
|
||||
// Check whether or not any contained modifiers should be applied
|
||||
if (GetDefault<UAnimationModifierSettings>()->bApplyAnimationModifiersOnImport)
|
||||
{
|
||||
ApplyAnimationModifiers({AnimationSequence});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FAnimationModifiersModule::ShutdownModule()
|
||||
{
|
||||
// Make sure we unregister the class layout
|
||||
@@ -69,6 +124,11 @@ void FAnimationModifiersModule::ShutdownModule()
|
||||
}
|
||||
|
||||
RegisteredApplicationModes.Empty();
|
||||
|
||||
if (GEditor)
|
||||
{
|
||||
GEditor->GetEditorSubsystem<UImportSubsystem>()->OnAssetPostImport.RemoveAll(this);
|
||||
}
|
||||
}
|
||||
|
||||
void FAnimationModifiersModule::ShowAddAnimationModifierWindow(const TArray<UAnimSequence*>& InSequences)
|
||||
|
||||
Reference in New Issue
Block a user