You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
85 lines
3.8 KiB
C++
85 lines
3.8 KiB
C++
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
#include "PersonaPrivatePCH.h"
|
|
#include "PersonaModule.h"
|
|
#include "Persona.h"
|
|
#include "BlueprintUtilities.h"
|
|
#include "AnimGraphDefinitions.h"
|
|
#include "Toolkits/ToolkitManager.h"
|
|
#include "Runtime/AssetRegistry/Public/AssetRegistryModule.h"
|
|
#include "PropertyEditorModule.h"
|
|
#include "SkeletalMeshSocketDetails.h"
|
|
#include "AnimNotifyDetails.h"
|
|
#include "AnimGraphNodeDetails.h"
|
|
#include "AnimInstanceDetails.h"
|
|
|
|
IMPLEMENT_MODULE( FPersonaModule, Persona );
|
|
|
|
const FName PersonaAppName = FName(TEXT("PersonaApp"));
|
|
|
|
|
|
void FPersonaModule::StartupModule()
|
|
{
|
|
MenuExtensibilityManager = MakeShareable(new FExtensibilityManager);
|
|
ToolBarExtensibilityManager = MakeShareable(new FExtensibilityManager);
|
|
|
|
// Load all blueprint animnotifies from asset registry so they are available from drop downs in anim segment detail views
|
|
{
|
|
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry"));
|
|
|
|
// Collect a full list of assets with the specified class
|
|
TArray<FAssetData> AssetData;
|
|
AssetRegistryModule.Get().GetAssetsByClass(UBlueprint::StaticClass()->GetFName(), AssetData);
|
|
|
|
const FName BPParentClassName( TEXT( "ParentClass" ) );
|
|
const FString BPAnimNotify( TEXT("Class'/Script/Engine.AnimNotify'" ));
|
|
|
|
for (int32 AssetIndex = 0; AssetIndex < AssetData.Num(); ++AssetIndex)
|
|
{
|
|
FString TagValue = AssetData[ AssetIndex ].TagsAndValues.FindRef(BPParentClassName);
|
|
if (TagValue == BPAnimNotify)
|
|
{
|
|
FString BlueprintPath = AssetData[AssetIndex].ObjectPath.ToString();
|
|
LoadObject<UBlueprint>(NULL, *BlueprintPath, NULL, 0, NULL);
|
|
}
|
|
}
|
|
}
|
|
{
|
|
FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
|
|
PropertyModule.RegisterCustomClassLayout( "SkeletalMeshSocket", FOnGetDetailCustomizationInstance::CreateStatic( &FSkeletalMeshSocketDetails::MakeInstance ) );
|
|
PropertyModule.RegisterCustomClassLayout( "EditorNotifyObject", FOnGetDetailCustomizationInstance::CreateStatic(&FAnimNotifyDetails::MakeInstance));
|
|
PropertyModule.RegisterCustomClassLayout( "AnimGraphNode_Base", FOnGetDetailCustomizationInstance::CreateStatic( &FAnimGraphNodeDetails::MakeInstance ) );
|
|
PropertyModule.RegisterCustomClassLayout( "AnimInstance", FOnGetDetailCustomizationInstance::CreateStatic(&FAnimInstanceDetails::MakeInstance));
|
|
|
|
PropertyModule.RegisterCustomPropertyTypeLayout( "InputScaleBias", FOnGetPropertyTypeCustomizationInstance::CreateStatic( &FInputScaleBiasCustomization::MakeInstance ) );
|
|
PropertyModule.RegisterCustomPropertyTypeLayout( "BoneReference", FOnGetPropertyTypeCustomizationInstance::CreateStatic( &FBoneReferenceCustomization::MakeInstance ) );
|
|
}
|
|
}
|
|
|
|
void FPersonaModule::ShutdownModule()
|
|
{
|
|
MenuExtensibilityManager.Reset();
|
|
ToolBarExtensibilityManager.Reset();
|
|
|
|
// unregsiter when shut down
|
|
if(FModuleManager::Get().IsModuleLoaded("PropertyEditor"))
|
|
{
|
|
FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
|
|
PropertyModule.UnregisterCustomClassLayout("SkeletalMeshSocket");
|
|
PropertyModule.UnregisterCustomClassLayout("EditorNotifyObject");
|
|
PropertyModule.UnregisterCustomClassLayout("AnimGraphNode_Base");
|
|
|
|
PropertyModule.UnregisterCustomPropertyTypeLayout("InputScaleBias");
|
|
PropertyModule.UnregisterCustomPropertyTypeLayout("BoneReference");
|
|
}
|
|
}
|
|
|
|
|
|
TSharedRef<IBlueprintEditor> FPersonaModule::CreatePersona( const EToolkitMode::Type Mode, const TSharedPtr< IToolkitHost >& InitToolkitHost, class USkeleton* Skeleton, class UAnimBlueprint* Blueprint, class UAnimationAsset* AnimationAsset, class USkeletalMesh * Mesh )
|
|
{
|
|
TSharedRef< FPersona > NewPersona( new FPersona() );
|
|
NewPersona->InitPersona( Mode, InitToolkitHost, Skeleton, Blueprint, AnimationAsset, Mesh );
|
|
return NewPersona;
|
|
}
|