5#include "HAL/FileManager.h"
6#include "Engine/Blueprint.h"
9#include "Engine/BlueprintGeneratedClass.h"
10#include "Misc/Paths.h"
11#include "UObject/UObjectIterator.h"
12#include "Framework/Docking/TabManager.h"
16 IFileManager& FileManager = IFileManager::Get();
19 if (!FileManager.FileExists(*PathName))
29 if (!FileManager.Delete(*PathName))
47 IFileManager& FileManager = IFileManager::Get();
50 if (!FileManager.FileExists(*OldPathName))
54 FDlgLogger::Get().
Debugf(TEXT(
"File before rename at path = `%s` does not exist. Can't Rename."), *OldPathName);
60 if (!bOverWrite && FileManager.FileExists(*NewPathName))
65 TEXT(
"File at destination (after rename) at path = `%s` already exists. Current text file at path = `%s` won't be moved/renamed."),
66 *NewPathName, *OldPathName
73 if (!FileManager.Move( *NewPathName, *OldPathName, bOverWrite))
77 FDlgLogger::Get().
Errorf(TEXT(
"Failure to move/rename file from `%s` to `%s`"), *OldPathName, *NewPathName);
84 FDlgLogger::Get().
Infof(TEXT(
"Text file moved/renamed from `%s` to `%s`"), *OldPathName, *NewPathName);
92 if (!TabManager.IsValid())
97#if ENGINE_MINOR_VERSION >= 26
98 return TabManager->TryInvokeTab(TabID);
100 return TabManager->InvokeTab(TabID);
106 Name.RemoveFromEnd(TEXT(
"_C"));
109 static constexpr bool bRemovePath =
false;
110 Name = FPaths::GetBaseFilename(
Name, bRemovePath);
123 const FString
Name = Class->GetName();
124 return Name.StartsWith(TEXT(
"SKEL_")) ||
Name.StartsWith(TEXT(
"REINST_"));
129 return Cast<UBlueprintGeneratedClass>(Class) !=
nullptr;
134 return Cast<UBlueprint>(
Object) !=
nullptr;
139 if (!
Object || !ParentClass)
145 if (
const UBlueprint* Blueprint = Cast<UBlueprint>(
Object))
147 if (
const UClass* GeneratedClass = Cast<UClass>(Blueprint->GeneratedClass))
149 return GeneratedClass->IsChildOf(ParentClass);
154 if (
const UClass* ClassObject = Cast<UClass>(
Object))
156 return ClassObject->IsChildOf(ParentClass);
160 return Object->GetClass()->IsChildOf(ParentClass);
165 if (!
Object || !InterfaceClass)
171 if (
const UBlueprint* Blueprint = Cast<UBlueprint>(
Object))
173 if (
const UClass* GeneratedClass = Cast<UClass>(Blueprint->GeneratedClass))
175 return GeneratedClass->ImplementsInterface(InterfaceClass);
180 if (
const UClass* Class = Cast<UClass>(
Object))
182 return Class->ImplementsInterface(InterfaceClass);
186 return Object->GetClass()->ImplementsInterface(InterfaceClass);
192 for (TObjectIterator<UClass> It; It; ++It)
194 UClass* ChildClass = *It;
195 if (!ChildClass->IsChildOf(ParentClass))
202 if (ChildClass == ParentClass)
210 OutBlueprintClasses.Add(ChildClass);
215 OutNativeClasses.Add(ChildClass);
219 return OutNativeClasses.Num() > 0 || OutBlueprintClasses.Num() > 0;
225 for (TObjectIterator<UClass> It; It; ++It)
228 if (!Class->ImplementsInterface(InterfaceClass))
240 OutBlueprintClasses.Add(Class);
245 OutNativeClasses.Add(Class);
249 return OutNativeClasses.Num() > 0 || OutBlueprintClasses.Num() > 0;
254 TMap<FName, TArray<FDlgClassAndObject>> ObjectsMap;
256 for (UClass* Class : Classes)
259 if (!Class->ImplementsInterface(UDlgDialogueParticipant::StaticClass()))
274 Struct.
Class = Class;
277 const FName ParticipantName = IDlgDialogueParticipant::Execute_GetParticipantName(
Object);
278 if (ObjectsMap.Contains(ParticipantName))
281 ObjectsMap[ParticipantName].Add(Struct);
286 TArray<FDlgClassAndObject>
Array;
288 ObjectsMap.Add(ParticipantName,
Array);
static bool IsClassIgnored(const UClass *Class)
static bool DeleteFile(const FString &PathName, bool bVerbose=true)
static bool IsObjectAChildOf(const UObject *Object, const UClass *ParentClass)
static bool IsABlueprintObject(const UObject *Object)
static bool IsObjectImplementingInterface(const UObject *Object, const UClass *InterfaceClass)
static bool GetAllChildClassesOf(const UClass *ParentClass, TArray< UClass * > &OutNativeClasses, TArray< UClass * > &OutBlueprintClasses)
static FString CleanObjectName(FString Name)
static bool GetAllClassesImplementingInterface(const UClass *InterfaceClass, TArray< UClass * > &OutNativeClasses, TArray< UClass * > &OutBlueprintClasses)
static bool IsABlueprintClass(const UClass *Class)
static bool RenameFile(const FString &OldPathName, const FString &NewPathName, bool bOverWrite=false, bool bVerbose=true)
static TSharedPtr< SDockTab > InvokeTab(TSharedPtr< FTabManager > TabManager, const FTabId &TabID)
static TMap< FName, TArray< FDlgClassAndObject > > ConvertDialogueParticipantsClassesIntoMap(const TArray< UClass * > &Classes)
static FDlgLogger & Get()
void Infof(const FmtType &Fmt, Types... Args)
void Errorf(const FmtType &Fmt, Types... Args)
void Debugf(const FmtType &Fmt, Types... Args)
UObject * Object
UPROPERTY()
UClass * Class
UPROPERTY()