#pragma once #include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #define UE_VERSION_VAL(Major, Minor) ((Major) * 10000 + (Minor)) #define UE_CURRENT_VERSION UE_VERSION_VAL(ENGINE_MAJOR_VERSION, ENGINE_MINOR_VERSION) #define UE_VERSION_BEFORE(Major, Minor) (UE_CURRENT_VERSION < UE_VERSION_VAL(Major, Minor)) #define UE_VERSION_SINCE(Major, Minor) (UE_CURRENT_VERSION >= UE_VERSION_VAL(Major, Minor)) #define UE_VERSION_EQUAL(Major, Minor) (UE_CURRENT_VERSION == UE_VERSION_VAL(Major, Minor)) namespace FCSUnrealSharpUtils { UNREALSHARPUTILITIES_API FName GetNamespace(const UObject* Object); UNREALSHARPUTILITIES_API FName GetNamespace(FName PackageName); UNREALSHARPUTILITIES_API FName GetNativeFullName(const UField* Object); UNREALSHARPUTILITIES_API void PurgeMetaData(const UObject* Object); UNREALSHARPUTILITIES_API FName GetModuleName(const UObject* Object); UNREALSHARPUTILITIES_API bool IsStandalonePIE(); UNREALSHARPUTILITIES_API void PurgeStruct(UStruct* Struct); UNREALSHARPUTILITIES_API FGuid ConstructGUIDFromString(const FString& Name); UNREALSHARPUTILITIES_API FGuid ConstructGUIDFromName(const FName& Name); UNREALSHARPUTILITIES_API FString MakeQuotedPath(const FString& Path); template static void GetAllCDOsOfClass(TArray& OutObjects) { for (TObjectIterator It; It; ++It) { UClass* ClassObject = *It; if (!ClassObject->IsChildOf(T::StaticClass()) || ClassObject->HasAnyClassFlags(CLASS_Abstract)) { continue; } T* CDO = ClassObject->GetDefaultObject(); OutObjects.Add(CDO); } } };